Linux系統中5種重復執行歷史命令的方法

传奇霸业腾讯版微端 www.jogex.icu 關注公眾號【運維派】,及時獲取最新運維動態 | 運維派[2019]贊助商計劃已啟動,歡迎洽談!

Linux 下,如果要執行一條或多條之前輸過的指令,要怎么處理?很多人會想到使用上下箭頭去翻查歷史輸入的命令。這當然是可以了,除了這種方法,本文再介紹另外 5 種方法來實現這樣的效果。

在正式開始之前,我們先隨便執行幾條命令,便于后面演示。為了節約篇幅,執行結果暫時不列出來。

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

方法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

如果需要 root 權限,同樣只需在前面加 sudo 即可。

$?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 ,就可以高效的重復執行你要執行的命令了。

小結

重復執行之前執行過的命令在我們的工作中非常經常用到。如果命令比較短還好,再輸一遍也花不了多少時間。而如果命令很長,那再重復輸入就比較耗時間了,效率也比較低。除了使用上下箭頭之外,我們還有很多方法去實現同樣的效果。將這些技巧掌握了,肯定會大大提升你的工作效率!

網友評論comments

發表評論

電子郵件地址不會被公開。 必填項已用*標注

暫無評論

Copyright ? 2012-2019 www.jogex.icu - 運維派 - 粵ICP備14090526號-3
掃二維碼
掃二維碼
返回頂部