微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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

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

原文地址:https://www.jb51.cc/bash/384961.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐