$ 1既不發生被替換。它們被單引號包圍。行尾的; echo
只是一條評論。所以它沒有做任何事情。如果你想把它作爲別名的一部分,你需要用雙引號將整個東西包圍起來。
的<stashname>
被添加到該行的末尾(我假設是什麼echo
是?)你提出的命令似乎想呼應類似給出藏匿的名稱[email protected]{n}
。下面的別名將這樣做。 (雖然它不是很有用)
[alias]
load = "!git stash list | grep \" $1$\" | awk '{ print $1 }' | sed '$ s/:$//' #"
$ 1的第一次出現被參數替換,因爲它只被雙引號包圍;我們需要逃避。 awk的$ 1不會被替換爲<stashname>
。除了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
[email protected]{0}
也許更容易看到它這樣
[alias]
test = "! echo $1 '$2' \"$3\" end; # "
結果
$ git test first second third
first $2 third end
不知道關於「$」的混帳配置文件中逃脫,但爲什麼不乾脆用了一個等效那個awk行,例如'sed's /。* //''(在第一個空格後剪切所有內容)。或者把它寫成一個單獨的shell腳本而不是git別名? –
@AndyRoss如果你張貼作爲答案我會很樂意接受它。 –
你究竟想在你的線索上做什麼?只是好奇。 –