我经常克隆 github 存储库并在我的计算机上尝试它们。不幸的是,github repos 可以与另一个用户的 repo 名称相同。
例如:
https://github.com/user1/app_name.git
https://github.com/user2/app_name.git
当我在终端中克隆一个仓库时
git clone https://github.com/user1/app_name.git
它在斜杠之后以 name 保存 repo
app_name
如果我克隆第二个 repo,我会收到the repo exists
消息并克隆 repo 中止。
我刚刚注意到这一点,我想知道哪个回购以这种方式中止。
为了找到他们,我做了类似的事情
history | grep github.com
但这列出了数百行,很难找到相同app_name
和不同的回购user_name
。
对于正则表达式查询来说,这一定是一项非常容易的任务,但是如何呢?
解释
grep -o 'github\.com.*'
获取包含github.com
并修剪行首的行(例如历史记录中的项目编号等),以便更轻松地处理字段tr '/' ' '
更改/
为空格,因为uniq
没有设置非空白分隔符的选项...sort -k3
使用第三个(最后一个)字段对行进行排序,将相同的行app_name.git
放在一起uniq
删除重复行uniq -D -f2
忽略前两个字段,只打印重复的行,(因此,如果app_name
在删除完全相同的行后有多个实例,则只打印该行,表明有多个用户相同app_name
)如果您想避免命令本身出现在输出中,您可以使用管道 from
grep -o 'github\.com.*' ~/.bash_history
而不是history | grep -o 'github\.com.*'
(尽管这不包括来自当前会话的命令)