Bash别名使用!$
今天我发现我可以写!$
从上一个执行的命令获取最后一个参数。
现在我试图创建一个使用该快捷方式的别名,它根本不工作。
这些是我正在尝试创建的。
alias gal='git add !$'
alias gcl='git checkout !$'
alias sl='sublime !$'
这是结果输出调用gal
或gcl
fatal: pathspec '!$' did not match any files
时,所以它看起来像!$
只是没有被从最后的命令在这种情况下的最后一个参数所取代。
可能吗?
而是使用bash的历史摆弄的,你还不如想使用Bash's $_
internal variable:手动状态的相关部分:
$_
:[...]展开后展开为上一个命令的最后一个参数。 [...]
例如:
$ 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 "$_"'
你可以使用bash的内置history命令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',否则你以前会输出两个命令? – 123
我也这么认为,但后来我对它进行了测试,结果发现,使用“-1”时,使用了* current *命令的最后一个字。我想知道在执行fc的时候别名是否已经在历史堆栈上?不知道。 –
由于猛砸扩展'$',有没有办法可以是“存储”在稍后使用的地方。我认为说'alias gal =“git add”'会更有意义,然后用'!$'调用它 - >'gal!$'。 – fedorqui
@fedorqui这绝对是最好的选择。 – 123
为什么你不使用变量['$ _'](http://www.gnu.org/software/bash/manual/bashref.html#index-_0024_005f)? –