fc(FixCommands 的縮寫(xiě))是個(gè) shell 內(nèi)置命令,用于在交互式 shell 里列出、編輯和執(zhí)行最近輸入的命令。你可以用你喜歡的編輯器編輯最近的命令并再次執(zhí)行,而不用把它們整個(gè)重新輸入一遍。除了可以避免重復(fù)輸入又長(zhǎng)又復(fù)雜的命令,它對(duì)修正拼寫(xiě)錯(cuò)誤來(lái)說(shuō)也很有用。因?yàn)槭?shell 內(nèi)置命令,大多 shell 都包含它,比如 Bash 、 Zsh 、 Ksh 等。在這篇短文中,我們來(lái)學(xué)一學(xué)在 Linux 中使用fc命令。
fc 命令教程及示例
列出最近執(zhí)行的命令
執(zhí)行不帶其它參數(shù)的fc -l命令,它會(huì)列出最近 16 個(gè)命令。
$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)用于隱藏行號(hào)。
$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
這樣行號(hào)就不再顯示了。
如果想以某個(gè)命令開(kāi)始,只需在 -l 選項(xiàng)后面加上行號(hào)即可。比如,要顯示行號(hào) 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)的命令,將始、末行號(hào)作為 fc -l 的參數(shù)即可,比如 520 至 525:
$fc-l520525
520ls-l
521pwd
522uname-r
523uname-a
524echo"Welcome to OSTechNix"
525sudoapcman-Syu
除了使用行號(hào),我們還可以使用字符。比如,要列出最近一個(gè) pwd 至最近一個(gè)命令之間的所有命令,只需要像下面這樣使用起始字母即可:
$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
或者,使用開(kāi)始命令的首字母以及結(jié)束命令的行號(hào):
$fc -lp528
或者都使用行號(hào):
$fc -l521528
這三個(gè)命令都顯示一樣的結(jié)果。
編輯并執(zhí)行上一個(gè)命令
我們經(jīng)常敲錯(cuò)命令,這時(shí)你可以用默認(rèn)編輯器修正拼寫(xiě)錯(cuò)誤并執(zhí)行而不用將命令重新再敲一遍。
編輯并執(zhí)行上一個(gè)命令:
$fc
這會(huì)在默認(rèn)編輯器里載入上一個(gè)命令。
你可以看到,我上一個(gè)命令是fc -l。你可以隨意修改,它會(huì)在你保存退出編輯器時(shí)自動(dòng)執(zhí)行。這在命令或參數(shù)又長(zhǎng)又復(fù)雜時(shí)很有用。需要注意的是,它同時(shí)也可能是毀滅性的。比如,如果你的上一個(gè)命令是危險(xiǎn)的rm -fr
更改默認(rèn)編輯器
另一個(gè)有用的選項(xiàng)是-e,它可以用來(lái)為fc命令選擇不同的編輯器。比如,如果我們想用nano來(lái)編輯上一個(gè)命令:
$fc -enano
這個(gè)命令會(huì)打開(kāi)nano編輯器(而不是默認(rèn)編輯器)編輯上一個(gè)命令。
如果你覺(jué)得用-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 中會(huì)用到 fc ,最好在這里 export FCEDIT
你也可以使用編輯器的完整路徑:
FCEDIT=/usr/local/bin/emacs
輸入 :wq 保存退出。要使改動(dòng)立即生效,運(yùn)行以下命令:
$source ~/.profile
現(xiàn)在再輸入 fc 就可以使用 nano 編輯器來(lái)編輯上一個(gè)命令了。
不編輯而直接執(zhí)行上一個(gè)命令
我們現(xiàn)在知道 fc 命令不帶任何參數(shù)的話會(huì)將上一個(gè)命令載入編輯器。但有時(shí)你可能不想編輯,僅僅是想再次執(zhí)行上一個(gè)命令。這很簡(jiǎn)單,在末尾加上連字符(-)就可以了:
$echo"Welcome to OSTechNix"
Welcome toOSTechNix
$fc -e -
echo"Welcome to OSTechNix"
Welcome toOSTechNix
如你所見(jiàn),fc 帶了 -e 選項(xiàng),但并沒(méi)有編輯上一個(gè)命令(例中的 echo " Welcome to OSTechNix")。
需要注意的是,有些選項(xiàng)僅對(duì)指定 shell 有效。比如下面這些選項(xiàng)可以用在 zsh 中,但在 Bash 或 Ksh 中則不能用。
顯示命令的執(zhí)行時(shí)間
想要知道命令是在什么時(shí)候執(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í)行時(shí)間了。
使用選項(xiàng) -f ,可以為每個(gè)命令顯示完整的時(shí)間戳。
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)來(lái)顯示歐洲時(shí)間格式。
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ù)時(shí),fc將上一個(gè)命令載入默認(rèn)編輯器。
當(dāng)帶一個(gè)數(shù)字作為參數(shù)時(shí),fc將數(shù)字指定的命令載入默認(rèn)編輯器。
當(dāng)帶一個(gè)字符作為參數(shù)時(shí),fc將最近一個(gè)以指定字符開(kāi)頭的命令載入默認(rèn)編輯器。
當(dāng)有兩個(gè)參數(shù)時(shí),它們分別指定需要列出的命令范圍的開(kāi)始和結(jié)束。
更多細(xì)節(jié),請(qǐng)參考 man 手冊(cè)。
$man fc
好了,今天就這些。希望這篇文章能幫助到你。
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210412 -
編輯器
+關(guān)注
關(guān)注
1文章
806瀏覽量
31293
原文標(biāo)題:給初學(xué)者的 fc 示例教程
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
IC打工人最常用的20個(gè)Linux命令
對(duì)照DOS學(xué)Linux的基本命令
如何評(píng)價(jià)《Linux就該這么學(xué)》這本書(shū)?
嵌入式Linux學(xué)哪些東西
手把手教你學(xué)Linux常用shell命令
學(xué)STM32還是學(xué)嵌入式linux?哪個(gè)好?
學(xué)做嵌入式 Linux系統(tǒng)
概述學(xué)習(xí)Linux系統(tǒng)中命令的簡(jiǎn)單方法
![概述學(xué)習(xí)<b class='flag-5'>Linux</b>系統(tǒng)中<b class='flag-5'>命令</b>的簡(jiǎn)單方法](https://file.elecfans.com/web1/M00/8E/3E/pIYBAFyukP6ACcF7AADatTtqj90220.png)
數(shù)據(jù)驅(qū)動(dòng)的建模:在水資源和環(huán)境工程學(xué)中使用MATLAB
嵌入式Linux怎么學(xué)?
![嵌入式<b class='flag-5'>Linux</b>怎么<b class='flag-5'>學(xué)</b>?](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
linux嵌入式主要學(xué)什么,學(xué)嵌入式linux,用什么開(kāi)發(fā)板,請(qǐng)大家推薦一下
![<b class='flag-5'>linux</b>嵌入式主要<b class='flag-5'>學(xué)</b>什么,<b class='flag-5'>學(xué)</b>嵌入式<b class='flag-5'>linux</b>,用什么開(kāi)發(fā)板,請(qǐng)大家推薦<b class='flag-5'>一</b>下](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論