以下bash命令中的!#(感叹号哈希),!$:r:r(感叹号美元冒号r),!#:t(感叹号冒号冒号t)是什么意思?

deppfx

我一直在尝试安装Nagios软件包,并在此处的指南中偶然发现了这些怪异的bash扩展有人可以帮助我了解扩展的含义吗?Wiki链接也将为将来的参考提供帮助。

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
斯蒂芬·基特

这些是bash历史扩展关键字他们从外壳历史记录中选择一行,然后在修改后重新插入(部分)。您链接到的站点在解释它们方面做得很合理,但是并没有描述所有的内容。

tar zxvf !#:t

实际上没有任何意义:!#选择到目前为止已键入的行,但是那是tar zxvf我们不想重复使用的任何行。它应该是

tar zxvf !$:t

会选择上一行(!$的最后部分,这是给的URL wget,并接受文件名部分(:t,用于尾部-严格来说,这是最后一个目录分隔符之后的内容/,它恰好与URL配合使用)。

然后

chown -R root:root !$:r:r

选择上一行的最后一部分,删除文件扩展名(:r—严格来说,它将删除last之后的所有内容.,包括.)两次,从而得到目录名称(假设tarball包含与tarball的基本名称同名的目录)。chmodcd以同样的方式进行的命令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章