Macos 使用shell命令进行Git配置
我有一个别名,它执行简短的状态,用sed解析它,然后将文件添加到git的“假定未更改”索引中 然而,就我对OSXbash中转义单引号的理解而言,问题似乎很简单Macos 使用shell命令进行Git配置,macos,git,bash,Macos,Git,Bash,我有一个别名,它执行简短的状态,用sed解析它,然后将文件添加到git的“假定未更改”索引中 然而,就我对OSXbash中转义单引号的理解而言,问题似乎很简单 irm = !sh -c 'git ignore $(git st --short -u | sed '\''/^ D/s/^ D//g'\'')' 这是gitconfig中的完整行。我可以在shell中发出命令(使用sh和引号),但是当我试图通过git-irm运行它时,我得到了错误的git-config 根据下面的建议,我对其进行
irm = !sh -c 'git ignore $(git st --short -u | sed '\''/^ D/s/^ D//g'\'')'
这是gitconfig中的完整行。我可以在shell中发出命令(使用sh和引号),但是当我试图通过git-irm运行它时,我得到了错误的git-config
根据下面的建议,我对其进行了稍微不同的配置。但是,它在gitconfig中仍然不起作用。所以我把它添加到我的~/.profile
alias irm="git ignore $(git st --short | grep '^ D' | sed 's/^ D //')"
您应该能够使用双引号,但必须对其进行转义:
irm = !sh -c 'git ignore $(git st --short -u | sed \"s/^ D//\")'
您不需要选择行,因为操作与选择相同。如果您只想输出匹配和排除任何其他行的行,您可能需要将-n
和p
与sed
一起使用,正如Chris在评论中所建议的那样
此外,由于模式被锚定,您不需要全局选项。您应该能够使用双引号,但您必须转义它们:
irm = !sh -c 'git ignore $(git st --short -u | sed \"s/^ D//\")'
您不需要选择行,因为操作与选择相同。如果您只想输出匹配和排除任何其他行的行,您可能需要将-n
和p
与sed
一起使用,正如Chris在评论中所建议的那样
另外,由于模式被锚定,您不需要全局选项。sed行给我带来了一些麻烦。我想你是在找这个:sed-n-e“s/^D//gp”我想确保它只命中已删除的文件。M A应该被排除在外。那条sed线路给我带来了一点麻烦。我想你是在找这个:sed-n-e“s/^D//gp”我想确保它只命中已删除的文件。M A应该被排除在外。你在gnu上吗?我在os x bash:sh-c'git st--short-u|sed“s/^D/\”sed:1:“s/^”:无效的命令代码“@Drew:是的,我在GNU上。请不要转义双引号。另一种尝试是将整个别名用双引号括起来:irm=“!sh-c'git ignore$(git st--short-u | sed\'s/^D/\”””
。您还可以尝试省略sh-c
:git ignore$(git st--short-u | sed\'s/^D/\')
。这些都对我有用。你在gnu上吗?我在os x bash:sh-c'git st--short-u|sed“s/^D/\”sed:1:“s/^”:无效的命令代码“@Drew:是的,我在GNU上。请不要转义双引号。另一种尝试是将整个别名用双引号括起来:irm=“!sh-c'git ignore$(git st--short-u | sed\'s/^D/\”””
。您还可以尝试省略sh-c
:git ignore$(git st--short-u | sed\'s/^D/\')
。每一个都适合我。