您曾經在Bash中運行命令時因拼錯單詞而出錯嗎?或者您忘記了您最後運行的三個命令?與其重新編寫或記住以前的命令,Bash fc
命令可以幫助您快速編輯和重新執行以前的命令。
在本文中,您將學習如何利用fc
從您的命令歷史中編輯和重新執行命令。閱讀完本指南後,您將像您想成為的命令行戰士一樣熟練地使用fc
!
先決條件
本文將是一個教程。如果您計劃一步一步地跟隨進行,您需要一台運行Linux的計算機或啟用了Windows子系統Linux(WSL)的Windows 10計算機。本教程將使用Ubuntu 20.04 LTS。
關於Bash fc
命令
fc
不是一個Linux應用程序,而是Bash中的內置shell工具。Bash在大多數主要的Linux發行版中都可用。通過幾個按鍵,Bash fc
命令允許您列出、編輯或執行以前的命令。
在 Z Shell (ZSH) 中也可以使用
fc
命令。但本文示例將使用 Bash 中的fc
。
你運行了一個錯誤的長命令嗎?fc
將幫助你避免重新輸入整個命令。相反,fc
允許你使用你選擇的文本編輯器編輯該命令。保存編輯後,修改後的命令將自動執行!
準備好試試 fc
了嗎?讓我們開始吧!
列出之前的命令
你有沒有離開電腦一會兒回來,卻忘記了上次運行的命令?或者你記不清是否按正確順序執行了多個命令。你該怎麼辦?放輕鬆,fc
將幫助你記住。以下是方法。
1. 在你的電腦上打開一個 Bash 終端。
2. 要讓 fc
發揮作用,它必須有一些命令歷史記錄可供使用。由於你剛剛打開了一個新的終端窗口,可能還沒有命令歷史記錄。為了建立一個用於測試的命令歷史,請複製下面的每個命令並在終端中運行它們。這些命令不具侵入性,不會危及你的計算機。
3. 接下來,運行以下命令以列出所有歷史命令。使用-l
選項指示fc
只列出所有以前的命令而不執行它們。
如下所示,fc
命令顯示了您之前發出的所有四個命令。左側的數字表示您執行每個命令的順序。

編輯並重新執行上一個命令
想像一個情況,您正在安裝一個應用程序,並且拼寫錯誤。結果,命令失敗了。與其重新輸入整個命令,為什麼不編輯命令並自動重新執行呢?請按照以下步驟進行操作。
1. 在終端中運行以下命令模擬安裝一個不存在的應用程序。注意,您將故意拼寫應用程序名稱caffiene
錯誤。
結果,嘗試安裝失敗。您將收到類似以下的消息。

2. 要更正您執行的最後一個命令,請在終端中運行以下命令。這樣做將在默認文本編輯器中打開命令歷史緩衝區。在此示例中,默認文本編輯器為nano。
下面的截圖顯示了在nano編輯器中的最後一個命令。

如果nano不是您首選的文字編輯器,您可以指示
fc
使用其他編輯器,如vi。為此,請包含-e
選項,後跟文字編輯器名稱。例如,fc -e vi
將在vi文字編輯器中打開命令歷史。
3. 一旦進入nano文字編輯器,請將應用程式名稱的拼寫從caffiene
更正為caffeine
。
4. 更正應用程式名稱後,按下CTRL+X
退出nano。
5. 在下一個提示要求您保存修改的緩衝區?時,按下Y
—> Enter
以保存更改。

在退出文字編輯器後,fc
將自動執行您編輯過的命令。

編輯和重新執行上一個命令
使用fc
,您不僅可以編輯最後一次運行的命令,還可以編輯以前執行的任何命令。例如,要編輯命令echo 'working on the command line with fc'
,請按照以下步驟操作。
1. 在終端中運行以下命令以列出先前的命令。
2. 從命令歷史列表中找到要編輯的命令,並注意其左邊的號碼。在此示例中,命令號碼為2。

3. 要編輯具有條目號碼2的命令,請在終端中運行以下命令。命令將在文本編輯器中打開以進行編輯。
4. 一旦進入文本編輯器,現在根據需要編輯命令。
5. 編輯命令後,按 CTRL+X
退出 nano。
6. 在下一個提示中,問您是否要保存修改的緩衝區?,按 Y
—> Enter
保存更改。

保存命令並退出文本編輯器後,您編輯的命令將自動在 shell 中執行。
編輯和重新執行多個命令
如果您認為 fc
只能一次編輯和執行一個先前的命令,那麼您會感到驚喜。為什麼呢?fc
還允許您編輯多個先前的命令!編輯多個先前的命令有什麼用處?首先,您可以更改命令的執行順序。
假設您想編輯之前的命令編號 2 到 7。要這樣做,請按照以下步驟進行。
1. 在您的 Bash 終端中運行以下命令,然後按 Enter。下面的命令讀作 fc <space> 2 <space> 7
,這意味著 fc
將打開命令 2 到 7 供您編輯。
2. 接下來,根據需要編輯命令。例如:
- 刪除
sudo apt install caffiene -y
命令。 - 交換
uname -a
和ps aux
的順序。 - 刪除
clear
。

3. 編輯完命令後,按 CTRL+X
退出 nano。
4. 在下一個提示中,問您是否要保存修改的緩衝區?,按 Y
—> Enter
保存更改。
你編輯的命令將在退出文本編輯器後自動執行。

在不編輯的情況下重新執行上一個命令
假設你只需要執行上一個命令而不先編輯。 fc
有一個選項可以做到這一點。按照以下步驟執行歷史記錄中指定條目的上一個命令。
- 通過運行下面的命令在終端中列出以前的命令。
2. 從命令歷史列表中找到您想要再次運行的命令,並注意其左側的編號。 在此示例中,命令編號為2。

3. 要執行特定的上一個命令,在shell中運行下面的命令。 -s
選項指示 fc
跳過編輯並繼續執行命令編號2。
下面的屏幕截圖顯示fc執行了命令歷史中的命令2。

結論
本文旨在引起您對一個有用但常常被忽略和遺忘的命令 fc
的興趣。 您學會了如何使用 fc
避免重新輸入先前執行的命令,這可能會浪費時間。
憑藉您現在對 fc
的了解,您認為您會使用它嗎? 還是您仍然更喜歡在shell中重新輸入命令? 做出明智的選擇!