gpt4 book ai didi

bash - Bash 中的 bang dollar (!$) 是什么?

转载 作者:行者123 更新时间:2023-11-29 08:43:33 24 4
gpt4 key购买 nike

bang dollar 好像是指最后一行命令行的最后一部分。

例如

$ ls -l
.... something
$ !$
-l
bash: -l command not found

我可以找到很多关于美元变量的信息(例如 $!),但不是关于这个的。有什么解释吗?

最佳答案

这是上一个命令的最后一个参数。来自documentation :

!!:$

designates the last argument of the preceding command. This may be shortened to !$.

备注。如果您想了解 Bash 的历史记录,我建议您打开 shell 选项 histverify,如下所示:

shopt -s histverify

(您也可以将其放入您的 .bashrc 以永久启用)。使用历史替换时,替换不会立即执行;相反,它被放在 readline 的缓冲区中,等待你按下回车……或者不按下!


为了准确起见,输入 !$ 不等同于输入 "$_":!$ 实际上是 历史替换, 指的是 输入的前一个命令的最后一个词,“$_” 是之前执行的的最后一个参数 命令。您可以比较两者(我有 shopt -s histverify):

$ { echo zee; }
zee
$ echo "$_"
zee
$ { echo zee; }
zee
$ echo !$
$ echo }

还有:

$ if true; then echo one; else echo two; fi
one
$ echo "$_"
one
$ if true; then echo one; else echo two; fi
$ echo !$
$ echo fi

还有:

$ echo zee; echo "$_"
zee
zee
$ echo zee2; echo !$
$ echo zee2; echo "$_"

还有

$ echo {1..3}
1 2 3
$ echo "$_"
3
$ echo {1..3}
1 2 3
$ echo !$
$ echo {1..3}

还有

$ echo one ;
$ echo "$_"
one
$ echo one ;
one
$ echo !$
$ echo ;

还有很多其他示例,例如,带有别名。

关于bash - Bash 中的 bang dollar (!$) 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com