Linux 下,若是要执行一条或多条以前输过的指令,要怎么处理?不少人会想到使用上下箭头去翻查历史输入的命令。这固然是能够了,除了这种方法,本文再介绍另外 5 种方法来实现这样的效果。python
在正式开始以前,咱们先随便执行几条命令,便于后面演示。为了节约篇幅,执行结果暂时不列出来。linux
$ ls -l $ pwd $ date $ uname -a
方法1:!!centos
没错,两个叹号也是一条命令,它会重复执行最后执行的那条命令。安全
$ !!
这条命令等同于以下效果:学习
$ !! uname -a Linux VM_0_16_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
若是须要 root 权限,一样只需在前面加 sudo 便可。code
$ sudo !!
方法2:!unblog
假如咱们在操做的过程当中输入了很是多的命令,如今要重复执行其中的一条,该怎么处理?有一种简单的方法,就是利用上下箭头去翻查,但若是以前输入了太多命令,翻查起来能够要找半天。学习资料
这时候,!un 这种命令就显现出它的做用来了。记住,这个 un 不是固定的,它是表明你想要重复输入的命令的前几个字符。效率
好比在这个例程中,咱们想重复执行 uname -a 这条命令,只需这样执行:date
$ !un uname -a Linux VM_0_16_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
若是你以前输入的命令有多个是以 un 开头的,那么你可能须要多输入几个字符。
$ !uname
方法3:!-1
这个方法就比较灵活了,!-1 表明重复执行最后一条命令,!-2 表示重复执行倒数第二条命令,!-n 表示重复执行倒数第 n 条指令。
$ !-1 uname -a Linux VM_0_16_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ !-3 # 注意,前面的 !-1 也算一条指令,因此倒数第 3 条指令是 date ,而不是 pwd date Sun May 19 18:30:26 CST 2019
方法4:ctrl+r
ctrl+r 这个快捷键可让你搜索你以前输入过的全部的命令。其实良许更喜欢这个快捷键,由于它会让你看到你将要执行的命令。而若是是 !! 命令的话,它是直接执行最后一条命令。若是这条命令是安全的还好,要是像 rm -rf /* 这样的命令,那就悲剧了。
假如我如今要重复执行 uname -a ,咱们能够先按一下 ctrl+r 这个组合键,而后再依次敲入 ‘u' 'n' 'a' ,若是以前输入的命令比较少的话,基本只需敲一个 u 或 n 就能够找到你要输入的命令了。
(reverse-i-search)`u': uname -a
找到以后,再敲一下回车,便可重复执行你要输入的命令了。
假如说你要对找到的那条命令进行一些小修改,那么只需敲一下左或右的箭头便可。
方法5:ctrl+p 或 ctrl+n 配合 ctrl+o
若是你是懒癌晚期,不想再敲任何字母,只想翻查找到想要的命令并执行,要怎么操做?
前面提到,翻查历史输入的命令,可使用上下箭头。但这不是最高效的,咱们可使用 ctrl+p 和 ctrl+n 来达到一样的效果。这样更高效,由于你的手不用抬起来并移动到箭头区。
经过 ctrl+p/n 的组合键找到想要的命令以后,咱们能够按 ctrl+o 来执行这条命令。这个组合键与回车不太相同,由于它除了回车以外,还另外跳转到最后一条命令。经过不断地 ctrl+p/n ,而后 ctrl+o ,就能够高效的重复执行你要执行的命令了。
小结
重复执行以前执行过的命令在咱们的工做中很是常常用到。若是命令比较短还好,再输一遍也花不了多少时间。而若是命令很长,那再重复输入就比较耗时间了,效率也比较低。除了使用上下箭头以外,咱们还有不少方法去实现一样的效果。将这些技巧掌握了,确定会大大提高你的工做效率!
福利:豆花同窗为你们精心整理了一份关于linux和python的学习资料大合集!有须要的小伙伴们,关注豆花我的公众号:python头条!回复关键词“资料合集”便可免费领取!