我不是在谈论UNIX shebang意图给出解释器的路径.事实上,shebang已经很难成功地谷歌这个问题了...
我在谈论bash扩张:
!! 检索前一个命令(类似于向上箭头,但更有用)!$ 检索最后一个命令的最后一个单词!# 似乎检索当前行但实际上有用的是!#什么?
echo !# 扩展到 echo echoecho echo !# 扩展到 echo echo echo echols !#扩展到ls ls.所有这些看起来都是毫无意义的.我所知道的关于!#命令的是我从使用它中学到的东西 - 我不确定我是否知道它的真正功能.
正如对问题和其他答案的评论所述,您可以轻松找到以下部分man bash:
!# The entire command line typed so far.
Run Code Online (Sandbox Code Playgroud)
手册页或其他文档没有明确说明并且可能会让您!#感到困惑的有用用途是 bash 事件指示符旨在与单词指示符和修饰符结合使用(在事件指示符下方找到手册页)。将命令与管道链接在一起时,用例也更有意义,;或者&/&&
例如:
我可以使用替换修饰符foo.sh针对两个输入运行脚本,bar并且baz:
$ ./foo.sh bar; !#:s/bar/baz/
Run Code Online (Sandbox Code Playgroud)
扩展为:
./foo.sh bar; ./foo.sh baz;
Run Code Online (Sandbox Code Playgroud)
或者下面复制的 Docs (RIP Docs) 中的一个例子显示了如何使用单词选择器:N来选择到目前为止输入的命令的第一个参数,并整齐地 cd 到刚刚创建的目录中:
$ mkdir backup_download_directory && cd !#:1
mkdir backup_download_directory && cd backup_download_directory
Run Code Online (Sandbox Code Playgroud)
这些例子非常琐碎,但我希望它们展示如何!#在制作强大的单行代码的同时真正为某人节省一些严重的冗余输入。
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |