有些易懂易用的东西,我们反正了解得不多,比如history的用法,请不要小看这个命令,如果你 能够灵活运用,不仅能提高效率还能让菜鸟仰望一把。
首先大家都应该知道history命令的作用吧,就是记录用户在终端输入的命令,Ubuntu下记 录文件为~/.bash_history
,用户可以使用Ctrl + P
和Ctrl + N
进行上下翻找之前使 用过的历史命令,或者按方向键的上下来查找, 如此,以避免重复劳动。网上都说history默认记录1000条命令,感觉应该可以配置,但没有 查到具体在什么地方设置。
history常用使用有:
history #查看历史命令
history -c #清除本终端的历史记录
history 999 #执行记录中的第999号命令,999只是随便说的一个数
大家有时候并不希望把当前的输入让history记录下来,因为可能不想按太多的方向键, 或者 不希望自己的行为被人发现,这里 有个小技巧,以空格开头的命令不会被记录,即先敲一个空格然后输入命令,这样history就 不会记录本次输入了。
history更有用的一个特性就是命令指示符。
我们先来看一个常常会遇到的场景,就是输入一长串命令后,猛然发现自己忘记了敲sudo了, 然后就郁闷啊,聪明一点的补救就是,先按Ctrl + P
,再按Ctrl + A
,输入sudo,再回车。 更好的办法是直接输入sudo !!
,回车。这里的!!就是使用了history的命令指示符。
比如上面我提到的history 999
,可以直接写成!999
,给人的感觉是!是history的简写。!-1
表 示倒数第一条,!-2
表示倒数第二条,!-3
依此类推。回到上面的sudo !!
,后一个!等同于-1,所 以也可以写成sudo !-1
。
我们再来看另一个常常遇到的场景,使用cc test.c -o run
来编译代码,做了些修改后,你要 么选择重新输入cc test.c -o run
,要么不停地按Ctrl + P
来打到刚才输入的命令,一个更好的 办法就是使用!cc
,然后回车。这个命令的意思是寻找最近一个以cc开头的命令,当然如果你 不记得是以什么开头了,只记得有run这个单词,你可以输入!?run?
,这个也很好理解,就是 执行最近一个包含run的命令。
有时候你还会遇到这个场景,就是一长串命令通过Ctrl + P
找到了,不过要对中间的某个单词作 修改,好吧,这个没什么聪明的做法了,傻傻地一个劲的按方向键吧。那这 时!!:s/test.c/main.c/
可能会显得相当有用了,这个命令的作用是执行上一条命令,不过把 其中的test.c替换成main.c,这里的s替换命令,想必大家不陌生,这与vim中是一致的,既 然一致,什么正则表达式啊,就都可以用上了。
事实上,当你看到history这个命令的man里,你会惊讶地发现,这个简单得不足以引起注意 的命令,里面居然别人有洞天。