Linux系统中5种重复执行历史命令的方法

Linux 下,若是要执行一条或多条以前输过的指令,要怎么处理?不少人会想到使用上下箭头去翻查历史输入的命令。这固然是能够了,除了这种方法,本文再介绍另外 5 种方法来实现这样的效果。centos

在正式开始以前,咱们先随便执行几条命令,便于后面演示。为了节约篇幅,执行结果暂时不列出来。安全

$ ls -l
$ pwd
$ date
$ uname -a

方法1:!!

没错,两个叹号也是一条命令,它会重复执行最后执行的那条命令。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 !!

方法2:!un

假如咱们在操做的过程当中输入了很是多的命令,如今要重复执行其中的一条,该怎么处理?有一种简单的方法,就是利用上下箭头去翻查,但若是以前输入了太多命令,翻查起来能够要找半天。搜索

这时候,!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

方法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 ,就能够高效的重复执行你要执行的命令了

相关文章
相关标签/搜索