我不是在谈论UNIX
shebang意图给出解释器的路径.事实上,shebang已经很难成功地谷歌这个问题了…
我在谈论bash扩展:
> !!检索前一个命令(类似于向上箭头,但更有用)
>!$检索最后一个命令的最后一个单词
>!#似乎检索当前行
但实际上有用的是什么!#?
> echo!#extens to echo echo
> echo echo!#extens to echo echo echo echo
> ls!#扩展到ls ls.
所有这些看起来都是毫无意义的.我所知道的!#命令是我从使用它学到的东西 – 我不确定我是否知道它的真正功能.
正如所提到的关于问题和其他答案的评论,你可以很容易地找到man bash的部分:
原文链接:https://www.f2er.com/bash/384961.html!# The entire command line typed so far.
人工页面或其他文档没有明确说明的内容,也许会引导您将其迷惑为有用的用途!#bash是指bash事件指示符与单词指示符和修饰符结合使用(在事件指示符下面找到)在手册页上).将命令与管道链接在一起时,用例也更有意义;或& /&&
例如:
我可以使用替换修饰符对两个输入bar和baz运行脚本foo.sh:
$./foo.sh bar; !#:s/bar/baz/
扩展形成:
./foo.sh bar; ./foo.sh baz;
或者下面转载的文档(R.I.P.文档)中的示例显示了如何使用单词selector:N来选择命令的第一个参数到目前为止输入并整齐地cd到刚刚创建的目录中:
$mkdir backup_download_directory && cd !#:1 mkdir backup_download_directory && cd backup_download_directory
这些例子非常简单,但我希望它们能够显示出来!#在制作强大的单行程序时,可以真正为某些人节省一些严重的冗余打字.