我今天发现我可以写!$
来获取最后一个执行命令的最后一个参数。
现在我尝试使用该快捷方式创建别名,但它根本不起作用。
这些是我试图创作的。
alias gal='git add !$'
alias gcl='git checkout !$'
alias sl='sublime !$'
这是调用gal
或gcl
fatal: pathspec '!$' did not match any files
所以似乎!$
不会被这个上下文中最后一个命令的最后一个参数所取代。
有可能吗?
答案 0 :(得分:2)
您可以使用bash内置历史记录命令fc
:示例
$ alias re_echo='echo $(fc -ln -2 | awk '\''NR==1 {print $NF}'\'')'
$ echo foo
foo
$ re_echo bar
foo bar
$ re_echo baz
bar baz
$ re_echo qux
baz qux
答案 1 :(得分:2)
您可能还想使用Bash's $_
internal variable而不是摆弄Bash的历史:手册的相关部分说明:
$_
:[...]扩展后扩展到上一个命令的最后一个参数。 [...]
例如:
$ touch one two three
$ echo "$_"
three
$ ls
$ echo "$_"
ls
$ a='hello world'
$ echo $a
hello world
$ echo "$_"
world
$ echo "$a"
hello world
$ echo "$_"
hello world
$
在您的情况下,您的别名将如下所示:
alias gal='git add "$_"'
alias gcl='git checkout "$_"'
alias sl='sublime "$_"'