在bash中使用`!#`有什么用?

我不是在谈论UNIX shebang意图给出解释器的路径.事实上,shebang已经很难成功地谷歌这个问题了…

我在谈论bash扩展:

> !!检索前一个命令(类似于向上箭头,但更有用)
>!$检索最后一个命令的最后一个单词
>!#似乎检索当前行

但实际上有用的是什么!#?

> echo!#extens to echo echo
> echo echo!#extens to echo echo echo echo
> ls!#扩展到ls ls.

所有这些看起来都是毫无意义的.我所知道的!#命令是我从使用它学到的东西 – 我不确定我是否知道它的真正功能.

正如所提到的关于问题和其他答案的评论,你可以很容易地找到man bash的部分:
!#     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

这些例子非常简单,但我希望它们能够显示出来!#在制作强大的单行程序时,可以真正为某些人节省一些严重的冗余打字.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...