dep*_*pfx 4 bash command-history
我一直在尝试安装 Nagios 软件包,但在此处的指南中偶然发现了这些奇怪的 bash 扩展。有人可以帮助我理解扩展的含义吗?维基链接也有助于将来参考。
root@z:~> wget http://mathias-kettner.de/download/check_mk-1.1.7i5.tar.gz
root@z:~> tar zxvf !#:t
root@z:~> chown -R root:root !$:r:r && chmod -R o-w !$:r:r && cd !$:r:r
root@z:~/check_mk-1.1.7i5> ./setup.sh
Run Code Online (Sandbox Code Playgroud)
这些是bash历史扩展关键字。他们从 shell 历史记录中选择一行并重新插入(部分)它,修改后可能。您链接到的站点做了合理的解释工作,但它并没有描述所有这些。
tar zxvf !#:t
Run Code Online (Sandbox Code Playgroud)
实际上没有意义:!#选择到目前为止输入的行,但tar zxvf我们不想重复使用其中的任何一个。它应该是
tar zxvf !$:t
Run Code Online (Sandbox Code Playgroud)
它选择上一行 ( !$)的最后一部分,即提供给 的 URL wget,并获取文件名部分 ( :t, 表示尾部 — 严格来说,它是最后一个目录分隔符之后剩下的部分,/,恰好与 URL 配合得很好)。
然后
chown -R root:root !$:r:r
Run Code Online (Sandbox Code Playgroud)
选择前一行的最后一部分,删除文件扩展名(:r——严格来说,它删除了最后一个 之后的任何内容.,包括.),这给出了目录名称(假设 tarball 包含一个与 tarball 基本名称同名的目录)。在chmod与cd以同样的方式进行的命令。