Я часто клонирую GitHub repos и пробую их в моем компьютере. К сожалению, GitHub repos может иметь то же имя как имя repo другого пользователя.
Например:
https://github.com/user1/app_name.git
https://github.com/user2/app_name.git
Когда я клонирую repo в терминале как
git clone https://github.com/user1/app_name.git
это сохраняет repo под именем после наклонной черты как
app_name
Если я клонирую второй repo, я добираюсь the repo exists
обменивайтесь сообщениями и клонирующийся repo аварийные прекращения работы.
Я просто заметил, что, и хочу знать который repos, прерванный таким образом.
Для нахождения их, я сделал что-то как
history | grep github.com
но это перечисляет сотни строк, и трудно взять repos с тем же app_name
и отличающийся user_name
.
Это должна быть очень легкая задача для запроса regex, но как?
history | grep -o 'github\.com.*' | tr '/' ' ' | sort -k3 | uniq | uniq -D -f2
grep -o 'github\.com.*'
получите строки, которые включают github.com
и урежьте запуск строки (как количество объекта в истории и т.д.), чтобы помочь иметь дело с полямиtr '/' ' '
изменение /
в пробелы, потому что uniq
не имеет опции установить непробельный разделитель...sort -k3
отсортируйте строки с помощью третьего (последнего) поля, поместив строки с тем же app_name.git
вместеuniq
удалите дублирующиеся строкиuniq -D -f2
при игнорировании первых двух полей распечатайте только дублирующиеся строки, (поэтому только печатают строку, если существует больше чем один экземпляр app_name
после удаления абсолютно идентичных строк, указывая, что существуют многочисленные пользователи для того же app_name
)Если Вы хотите избежать самой команды, появляющейся в выводе, можно передать по каналу от grep -o 'github\.com.*' ~/.bash_history
вместо history | grep -o 'github\.com.*'
(хотя это не будет включать команды от текущей сессии),