fc(FixCommands 的縮寫)是個 shell 內(nèi)置命令,用于在交互式 shell 里列出、編輯和執(zhí)行最近輸入的命令。你可以用你喜歡的編輯器編輯最近的命令并再次執(zhí)行,而不用把它們整個重新輸入一遍。除了可以避免重復(fù)輸入又長又復(fù)雜的命令,它對修正拼寫錯誤來說也很有用。因?yàn)槭?shell 內(nèi)置命令,大多 shell 都包含它,比如 Bash 、 Zsh 、 Ksh 等。在這篇短文中,我們來學(xué)一學(xué)在 Linux 中使用fc命令。
fc 命令教程及示例
列出最近執(zhí)行的命令
執(zhí)行不帶其它參數(shù)的fc -l命令,它會列出最近 16 個命令。
$fc-l
507fish
508fc-l
509sudonetctlrestartwlp9s0sktab
510ls-l
511pwd
512uname-r
513uname-a
514touchostechnix.txt
515viostechnix.txt
516echo"Welcome to OSTechNix"
517sudoapcman-Syu
518sudopacman-Syu
519moreostechnix.txt
520wc-lostechnix.txt
521catostechnix.txt
522clear
-r 選項(xiàng)用于將輸出反向排序。
$fc-lr
-n 選項(xiàng)用于隱藏行號。
$fc-ln
nano~/.profile
source~/.profile
source~/.profile
fc-ln
fc-l
sudonetctlrestartwlp9s0sktab
ls-l
pwd
uname-r
uname-a
echo"Welcome to OSTechNix"
sudoapcman-Syu
catostechnix.txt
wc-lostechnix.txt
moreostechnix.txt
clear
這樣行號就不再顯示了。
如果想以某個命令開始,只需在 -l 選項(xiàng)后面加上行號即可。比如,要顯示行號 520 至最近的命令,可以這樣:
$fc-l520
520ls-l
521pwd
522uname-r
523uname-a
524echo"Welcome to OSTechNix"
525sudoapcman-Syu
526catostechnix.txt
527wc-lostechnix.txt
528moreostechnix.txt
529clear
530fc-ln
531fc-l
要列出一段范圍內(nèi)的命令,將始、末行號作為 fc -l 的參數(shù)即可,比如 520 至 525:
$fc-l520525
520ls-l
521pwd
522uname-r
523uname-a
524echo"Welcome to OSTechNix"
525sudoapcman-Syu
除了使用行號,我們還可以使用字符。比如,要列出最近一個 pwd 至最近一個命令之間的所有命令,只需要像下面這樣使用起始字母即可:
$fc -lp
521pwd
522uname -r
523uname -a
524echo"Welcome to OSTechNix"
525sudo apcman -Syu
526cat ostechnix.txt
527wc -lostechnix.txt
528more ostechnix.txt
529clear
530fc -ln
531fc -l
532fc -l520
533fc -l520525
534fc -l520
535fc -l522
536fc -ll
要列出所有 pwd 和 more 之間的命令,你可以都使用起始字母,像這樣:
$fc -lpm
或者,使用開始命令的首字母以及結(jié)束命令的行號:
$fc -lp528
或者都使用行號:
$fc -l521528
這三個命令都顯示一樣的結(jié)果。
編輯并執(zhí)行上一個命令
我們經(jīng)常敲錯命令,這時你可以用默認(rèn)編輯器修正拼寫錯誤并執(zhí)行而不用將命令重新再敲一遍。
編輯并執(zhí)行上一個命令:
$fc
這會在默認(rèn)編輯器里載入上一個命令。
你可以看到,我上一個命令是fc -l。你可以隨意修改,它會在你保存退出編輯器時自動執(zhí)行。這在命令或參數(shù)又長又復(fù)雜時很有用。需要注意的是,它同時也可能是毀滅性的。比如,如果你的上一個命令是危險的rm -fr
更改默認(rèn)編輯器
另一個有用的選項(xiàng)是-e,它可以用來為fc命令選擇不同的編輯器。比如,如果我們想用nano來編輯上一個命令:
$fc -enano
這個命令會打開nano編輯器(而不是默認(rèn)編輯器)編輯上一個命令。
如果你覺得用-e選項(xiàng)太麻煩,你可以修改你的默認(rèn)編輯器,只需要將環(huán)境變量FCEDIT設(shè)為你想要讓fc使用的編輯器名稱即可。
比如,要把nano設(shè)為默認(rèn)編輯器,編輯你的~/.profile或其他初始化文件: (LCTT 譯注:如果~/.profile不存在可自己創(chuàng)建;如果使用的是 bash ,可以編輯~/.bash_profile)
$vi ~/.profile
添加下面一行:
FCEDIT=nano
# LCTT譯注:如果在子 shell 中會用到 fc ,最好在這里 export FCEDIT
你也可以使用編輯器的完整路徑:
FCEDIT=/usr/local/bin/emacs
輸入 :wq 保存退出。要使改動立即生效,運(yùn)行以下命令:
$source ~/.profile
現(xiàn)在再輸入 fc 就可以使用 nano 編輯器來編輯上一個命令了。
不編輯而直接執(zhí)行上一個命令
我們現(xiàn)在知道 fc 命令不帶任何參數(shù)的話會將上一個命令載入編輯器。但有時你可能不想編輯,僅僅是想再次執(zhí)行上一個命令。這很簡單,在末尾加上連字符(-)就可以了:
$echo"Welcome to OSTechNix"
Welcome toOSTechNix
$fc -e -
echo"Welcome to OSTechNix"
Welcome toOSTechNix
如你所見,fc 帶了 -e 選項(xiàng),但并沒有編輯上一個命令(例中的 echo " Welcome to OSTechNix")。
需要注意的是,有些選項(xiàng)僅對指定 shell 有效。比如下面這些選項(xiàng)可以用在 zsh 中,但在 Bash 或 Ksh 中則不能用。
顯示命令的執(zhí)行時間
想要知道命令是在什么時候執(zhí)行的,可以用 -d 選項(xiàng):
fc -ld
118:41exit
218:41clear
318:42fc -l
418:42sudo netctl restart wlp9s0sktab
518:42ls -l
618:42pwd
718:42uname -r
818:43uname -a
918:43cat ostechnix.txt
1018:43echo"Welcome to OSTechNix"
1118:43more ostechnix.txt
1218:43wc -lostechnix.txt
1318:43cat ostechnix.txt
1418:43clear
1518:43fc -l
這樣你就可以查看最近命令的具體執(zhí)行時間了。
使用選項(xiàng) -f ,可以為每個命令顯示完整的時間戳。
fc -lf
14/5/201818:41exit
24/5/201818:41clear
34/5/201818:42fc -l
44/5/201818:42sudo netctl restart wlp9s0sktab
54/5/201818:42ls -l
64/5/201818:42pwd
74/5/201818:42uname -r
84/5/201818:43uname -a
94/5/201818:43cat ostechnix.txt
104/5/201818:43echo"Welcome to OSTechNix"
114/5/201818:43more ostechnix.txt
124/5/201818:43wc -lostechnix.txt
134/5/201818:43cat ostechnix.txt
144/5/201818:43clear
154/5/201818:43fc -l
164/5/201818:43fc -ld
當(dāng)然,歐洲的老鄉(xiāng)們還可以使用 -E 選項(xiàng)來顯示歐洲時間格式。
fc -lE
25.4.201818:41clear
35.4.201818:42fc -l
45.4.201818:42sudo netctl restart wlp9s0sktab
55.4.201818:42ls -l
65.4.201818:42pwd
75.4.201818:42uname -r
85.4.201818:43uname -a
95.4.201818:43cat ostechnix.txt
105.4.201818:43echo"Welcome to OSTechNix"
115.4.201818:43more ostechnix.txt
125.4.201818:43wc -lostechnix.txt
135.4.201818:43cat ostechnix.txt
145.4.201818:43clear
155.4.201818:43fc -l
165.4.201818:43fc -ld
175.4.201818:49fc -lf
fc 用法總結(jié)
當(dāng)不帶任何參數(shù)時,fc將上一個命令載入默認(rèn)編輯器。
當(dāng)帶一個數(shù)字作為參數(shù)時,fc將數(shù)字指定的命令載入默認(rèn)編輯器。
當(dāng)帶一個字符作為參數(shù)時,fc將最近一個以指定字符開頭的命令載入默認(rèn)編輯器。
當(dāng)有兩個參數(shù)時,它們分別指定需要列出的命令范圍的開始和結(jié)束。
更多細(xì)節(jié),請參考 man 手冊。
$man fc
好了,今天就這些。希望這篇文章能幫助到你。
-
Linux
+關(guān)注
關(guān)注
87文章
11212瀏覽量
208721 -
編輯器
+關(guān)注
關(guān)注
1文章
800瀏覽量
31056
原文標(biāo)題:給初學(xué)者的 fc 示例教程
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論