【发布时间】:2016-06-29 20:26:58
【问题描述】:
在 linux 上,有一些 git repo,其.git/config 包含以下 3 行:
(提示:最后 2 行以制表符开头。)
问题是:
- 我想通过 bash 将
#从第 3 行移到第 2 行,也许可以通过 sed,也可以将其移回。我的意思是触发 2 行,如何在 bash 中调用 sed?
@更新:
通过脚本参数选择协议:
实际上,我会为脚本提供一个参数,它应该是ssh 或https,参数将决定取消注释哪一行,以及注释哪一行,如果两个协议之一的行不'不存在,然后忽略它。
顺便说一句,我只需要sed部分修改2行,我可以编写bash的其他部分,以节省您的时间。
我想这样做的原因:
我想这样做,因为有时ssh由于网络或github错误而无法工作,我不知道,那时我需要将所有git repo从ssh切换到https,但是当ssh运行良好时,我会使用它,因为我不需要每次都输入密码。
我也问过这个question为什么时不时ssh不工作,但没有解决,所以我只好写一个脚本来帮助用一个命令触发它。
总结:
感谢您的回答和cmets,我将解决方案总结如下。
解决方案:
- 使用
bash和sed,查看Eric Wang的答案(我)。我猜它适用于linux,mac可能需要对tab匹配进行一些修改,windows可能无法使用它。 - 使用
bash&awk,查看anubhava的回答。 - 定义多个远程,1 代表 ssh,1 代表 https,然后通过选择远程选择协议,请参阅
William Pursell问题下的 cmets。我猜这适用于所有系统。 - 使用
[include]到另一个指定协议行的文件,并在需要时更改软链接,可以编写一个shell脚本来帮助切换软链接而不是更改文件内容,请参阅gniourf_gniourf提出的cmets问题。我猜这至少适用于类 unix 系统。
【问题讨论】:
-
什么是输入文件只有一行,即
\turl = git@github-eo:ericoudesu/linux_workspace.git?还应该评论吗? -
@anubhava 我更新了问题,请看。
-
也许,您只是想介绍另一个遥控器?我的意思是一个遥控器专用于只读
https://,另一个-用于读/写ssh://? -
@user3159253 我更新了问题以解释为什么我需要脚本,请参考。
-
您是否尝试过编写
sed命令来执行您想要的操作?