这个复杂的shell命令(包含|,&&和sed)如何工作?

时间:2010-02-11 22:34:40

标签: linux git scripting

我正在试图弄清楚如何使用git filter-branch,我需要一些基本的Linux脚本命令的帮助。

'git ls-files -s | sed "s-\t-&newsubdir/-" |
                GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
                        git update-index --index-info &&
         mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD

有人可以为我解读这个并解释每个部分吗?

我最感兴趣的是'|'符号,&&符号和sed命令。

2 个答案:

答案 0 :(得分:1)

“|”是unix管道命令,它将左侧输出的命令连接到右侧输入的命令。

“&安培;&安培;”是unix“和”命令,当且仅当左侧的命令成功完成时,它将在其右侧执行命令

“sed”是unix“流编辑器”一个强大的编辑工具,可以解析和编辑它的输入

答案 1 :(得分:1)

|将前面命令的stdout连接到以下命令的stdin。

如果上述命令的返回码为0(即命令成功),则

&&执行以下命令。

sed中的s命令是替换。它为第一个参数搜索正则表达式匹配,并将其替换为第二个参数。参数分隔符传统上是/,但在这种情况下它将使用后面的第一个字符-。替换中的&将替换为整个匹配。