Linux 下,若是要执行一条或多条以前输过的指令,要怎么处理?不少人会想到使用上下箭头去翻查历史输入的命令。这固然是能够了,除了这种方法,本文再介绍另外 5 种方法来实现这样的效果。centos
在正式开始以前,咱们先随便执行几条命令,便于后面演示。为了节约篇幅,执行结果暂时不列出来。安全
$ ls -l $ pwd $ date $ uname -a
没错,两个叹号也是一条命令,它会重复执行最后执行的那条命令。spa
$ !!
这条命令等同于以下效果:code
$ !! 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 便可。date
$ sudo !!
假如咱们在操做的过程当中输入了很是多的命令,如今要重复执行其中的一条,该怎么处理?有一种简单的方法,就是利用上下箭头去翻查,但若是以前输入了太多命令,翻查起来能够要找半天。搜索
这时候,!un
这种命令就显现出它的做用来了。记住,这个 un 不是固定的,它是表明你想要重复输入的命令的前几个字符。权限
好比在这个例程中,咱们想重复执行 uname -a
这条命令,只需这样执行:方法
$ !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
这个方法就比较灵活了,!-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
ctrl+r
这个快捷键可让你搜索你以前输入过的全部的命令。其实良许更喜欢这个快捷键,由于它会让你看到你将要执行的命令。而若是是 !! 命令的话,它是直接执行最后一条命令。若是这条命令是安全的还好,要是像 rm -rf /* 这样的命令,那就悲剧了。
假如我如今要重复执行 uname -a ,咱们能够先按一下 ctrl+r 这个组合键,而后再依次敲入 ‘u’ ‘n’ ‘a’ ,若是以前输入的命令比较少的话,基本只需敲一个 u 或 n 就能够找到你要输入的命令了。
(reverse-i-search)`u': uname -a
找到以后,再敲一下回车,便可重复执行你要输入的命令了。
假如说你要对找到的那条命令进行一些小修改,那么只需敲一下左或右的箭头便可。
若是你是懒癌晚期,不想再敲任何字母,只想翻查找到想要的命令并执行,要怎么操做?
前面提到,翻查历史输入的命令,可使用上下箭头。但这不是最高效的,咱们可使用 ctrl+p 和 ctrl+n 来达到一样的效果。这样更高效,由于你的手不用抬起来并移动到箭头区。
经过 ctrl+p/n 的组合键找到想要的命令以后,咱们能够按 ctrl+o
来执行这条命令。这个组合键与回车不太相同,由于它除了回车以外,还另外跳转到最后一条命令。经过不断地 ctrl+p/n ,而后 ctrl+o ,就能够高效的重复执行你要执行的命令了