`!#` 在 csh、bash、zsh 和可能的其他 shell 中有何用途?

`!#` 在 csh、bash、zsh 和可能的其他 shell 中有何用途?

man bash

!# 到目前为止输入的整个命令行。

man zshall

!# 请参阅目前输入的当前命令行。该行被视为完整的,直到并包括带有引用的行之前的单词!#

我唯一能想到的是:

cd ..;!#!#!#

向上8级台阶:))

答案1

我不经常使用它,但它有时与: 提取命令的第 n 个单词结合使用很有用。例如:

$ touch FILE.a
$ echo file created
$ mv FILE.a !#:1.bak
mv FILE.a FILE.a.bak

另一个例子,虽然在实践中毫无意义,但可以将它与 一起使用cut来获取简单命令中同一行中定义的变量的内容,例如:

$ LETTER=a echo letter: $(cut -d '=' -f2 <<< "!#:0")
letter: a

请注意,这不会像$LETTER运行命令之前展开的那样工作:

$ LETTER=a echo letter: $LETTER
letter:

相关内容