Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Git别名中的转义$num_Linux_Git_Git Config_Git Alias - Fatal编程技术网

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