Linux Git别名中的转义$num
我正在尝试别名一个更简单的隐藏,这样我就可以执行Linux Git别名中的转义$num,linux,git,git-config,git-alias,Linux,Git,Git Config,Git Alias,我正在尝试别名一个更简单的隐藏,这样我就可以执行git加载,大致如下: load = !git stash list | grep ' $1$' | awk '{ print $1 }' | sed '$ s/:$//'; echo 不幸的是,awk的$1也被藏品名称所取代。我怎么才能逃过那块$sign?尝试了\$,但git说: fatal: bad config file line 33 in /home/alvaro/.gitconfig 两次出现的$1都没有被替换。它们被单引号包围。;
git加载
,大致如下:
load = !git stash list | grep ' $1$' | awk '{ print $1 }' | sed '$ s/:$//'; echo
不幸的是,awk的$1
也被藏品名称所取代。我怎么才能逃过那块$sign?尝试了\$
,但git说:
fatal: bad config file line 33 in /home/alvaro/.gitconfig
两次出现的$1都没有被替换。它们被单引号包围。
;行尾的echo
只是一条注释。所以它实际上什么也没做。如果你想让它成为别名的一部分,你需要用双引号将整个别名括起来
被添加到行的末尾(我假设这就是echo
的作用?)您建议的命令似乎希望在给定隐藏名称的情况下,对类似stash@{n}
的内容进行回显。下面的别名将执行此操作。(虽然不是很有用)
第一次出现的$1被参数替换,因为它只被双引号包围;我们需要逃离。awk的$1将不会被替换为
。除此之外,git已经允许您申请,pop按名称隐藏
$ git stash list # produces no output
$ echo "something" > else.txt
$ git stash something
Saved working directory and index state On master: something
HEAD is now at 6d3fcf0 merged
$ git load something
stash@{0}
也许这样看比较容易
[alias]
test = "! echo $1 '$2' \"$3\" end; # "
导致
$ git test first second third
first $2 third end
不知道如何在git config文件中转义“$”,但为什么不简单地为该awk行使用一个等价的代码,例如
sed的/*/'
(在第一个空格后剪掉所有内容)。或者将其作为单独的shell脚本而不是git别名编写?@AndyRoss如果您将其作为答案发布,我将非常乐意接受。您在oneliner中到底想做什么?只是好奇。
$ git test first second third
first $2 third end