Bash Git alias配置需要多少轮转义?
我的.gitconfig中有这一行,其中有很多Bash Git alias配置需要多少轮转义?,bash,git,sed,Bash,Git,Sed,我的.gitconfig中有这一行,其中有很多 [alias] alias = "!git config -l | egrep ^alias | sed -e s/alias.\\\\\\([^=\\ ]\\\\+\\\\\\)=/\\\\1\\ =\\ /" 对于RexTemple,()只是rexep中组的开始,如果无法匹配字符(,则需要另一层转义) 别名后的点应该有一些斜线,但是有多少 如果有人能列出一个清单,说明在这个过程中,每一层转义字符在哪里被删除,我可能会对发生的事情有一点
[alias]
alias = "!git config -l | egrep ^alias | sed -e s/alias.\\\\\\([^=\\ ]\\\\+\\\\\\)=/\\\\1\\ =\\ /"
对于RexTemple,(
)只是rexep中组的开始,如果无法匹配字符(,则需要另一层转义)
别名后的点应该有一些斜线,但是有多少
如果有人能列出一个清单,说明在这个过程中,每一层转义字符在哪里被删除,我可能会对发生的事情有一点了解
grep alias~/.gitconfig-A 6
[alias]
alias = "!git config -l | egrep ^alias | sed -e s/alias.\\\\\\([^=\\ ]\\\\+\\\\\\)=/\\\\1\\ =\\ /"
blog = log --graph --oneline --decorate --all --simplify-by-decoration
flog = log --graph --oneline --decorate --all
test = !composer test
require = !composer require
update = !composer update
install = !composer install
示例输出git别名
alias = !git config -l | egrep ^alias | sed -e s/alias.\\\([^=\ ]\\+\\\)=/\\1\ =\ /
blog = log --graph --oneline --decorate --all --simplify-by-decoration
flog = log --graph --oneline --decorate --all
test = !composer test
require = !composer require
update = !composer update
install = !composer install
示例输出git配置-l
(仅限intresting行)
\\
而不是\
-E
减少对反斜杠转义捕获组的需要,可以缓解此问题:
alias = "!git config -l | sed -nE 's/^alias\\.([^= ]+)=/\\1 = /p'"
注意,我还使用了带有p
标志的sed-n
,以避免使用grep
\\
而不是\
-E
减少对反斜杠转义捕获组的需要,可以缓解此问题:
alias = "!git config -l | sed -nE 's/^alias\\.([^= ]+)=/\\1 = /p'"
请注意,我还使用了带有
p
标志的sed-n
,以避免使用grep。一个以“alias”开头的文本。在“=”之前,它会删除前缀并在“=”周围加空格,现在起作用,但它可能会遇到一些误报,因为点与调用脚本文件时发现的任何字符相匹配(在你的路径中有一个~/bin)这样的地方比试图通过引用和逃离地狱来压缩直接命令要容易理解得多。没有人能解析超过一两层引用,错误是很微妙的。一个以“别名”开头的文本。直到“=”为止,它会删除前缀并在“=”周围放置空格,现在可以工作,但它可能会遇到一些误报,因为点与调用脚本文件(路径中有一个~/bin)发现的任何字符都匹配像这样的地方比试图通过引用和逃离地狱来压缩直接命令要容易理解得多。没有人能解析超过一两层引用,错误也很微妙。因此,您将转义的需要减少到seds\.和\1,因为我使用了“在配置文件中,\需要是\\。添加^inony的别名并使用该别名,可以通过使用单引号而不是双引号进一步减少转义,例如alias='!git config-l | sed-nE'\''s/^alias\([^=]+)=/\1=/p'\''
?@Ed我尝试过在引号中乱搞,但无法使用单引号-似乎单引号字符串被解释为一个单词,而不是一个标记列表。因此,您减少了对seds\.和\1转义的需要,因为我使用了“在配置文件中,\需要是\\。添加^inony的别名并使用该别名,可以通过使用单引号而不是双引号进一步减少转义,例如alias='!git config-l | sed-nE'\''s/^alias\([^=]+)=/\1=/p'\'''
?@Ed我尝试过使用引号,但无法使用单引号-似乎单引号字符串被解释为一个单词,而不是标记列表。