在shell中,!$是一个特殊的环境变量,它代表了上一个命令的最后一个参数。看下面的例子

$ echo hello world
hello world
$ echo !$
echo world
world
$ echo "hello world"
hello world
$ echo !$
echo "hello world"
hello world

这里为什么要用echo呢,请看下面,如果不用echo,!$输出的内容(world)会被shell当做一个命令来执行,所以就会报错

$ echo hello world
hello world
$ !$
world
No command 'world' found, did you mean:
 Command 'tworld' from package 'tworld' (universe)
world: command not found

应用场景示例

1、建立多层目录并进入建立好的多层目录

$ mkdir -p a/b/c/d/e
$ cd a/b/c/d/e
改成
$ mkdir -p a/b/c/d/e
$ cd !$

上面mkdir -p命令用来一次性建立多层目录

2、编写文件后检测文件格式或者编译文件

$ vi a.php
$ php -l !$
或者
$ vi main.c
$ gcc !$

更多应用场景就需要各位自己去慢慢琢磨了,有好的应用示例可以反馈给我哦~

转载请注明:知识蚂蚁 » 你可能不知道的超实用shell技巧 —— !$

1访客评论

  1. 昨天碰到的一个相关技巧:!$命令返回某个命令使用的上一个文件名参数。但如果某个命令使用多个文件名,而你只希望重用其中一个文件名,该如何做?!:1操作符返回某个命令使用的第一个文件名,!:2操作符返回某个命令使用的第二个文件名。
    http://crazyof.me/blog/archives/171.html 可以看看~~

    _zer007-26 08:36 回复

我来说说

(便于我们更好的交流)

有不明白的地方欢迎留言哦~
取消