!$是什么意思?

安德鲁

我正在看一个教程,其中提到要运行此命令:

sudo chmod 700 !$

我不熟悉!$这是什么意思?

wchargin

基本上,它是上一个命令的最后一个参数。

!$是上一个命令的“结尾”。请考虑以下示例:我们首先在文件中查找单词:

grep -i joe /some/long/directory/structure/user-lists/list-15

如果joe在该用户列表中,我们希望将其从其中删除。我们可以使用该长目录树作为参数来启动vi,也可以简单地将vi !$哪一个bash扩展为:

vi /some/long/directory/structure/user-lists/list-15

顺便说一句,来源;方便的指南)


这个!$标记和特殊的shell变量之间的区别是毫无价值的$_实际上,两者都扩展到上一个命令的最后一个参数。但是,!$历史记录扩展期间将进行扩展,而$_参数扩展期间将进行扩展一个重要的后果是,当您使用时!$扩展的命令将保存在您的历史记录中。

例如,考虑击键

  • echo Foo Enter echo !$ Jar Enter Up Enter;

  • echo Foo Enter echo $_ Jar Enter Up Enter

(唯一更改的字符是$!$_,位于中间。)

在前者中,当您按时Up,命令行将读取echo Foo Jar,因此写入stdout的最后一行是Foo Jar

在后者中,当您按时Up,命令行将读取echo $_ bar,但现在$_的值与以前不同-实际上,$_现在是Jar,因此写入stdout的最后一行是Jar Jar

另一个结果是_可以在其他参数扩展中使用,例如,命令序列

printf '%s '    isomorphism
printf '%s\n'   ${_%morphism}sceles

印刷品isomorphism isosceles但是没有类似的${!$%morphism}扩展。

有关Bash扩展阶段的更多信息,请参阅参考资料EXPANSION部分man 1 bash在线版本中称为Shell扩展)。HISTORY EXPANSION节是单独的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章