Bash fc 命令:輕鬆使用 Bash Shell

您曾經在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 發揮作用,它必須有一些命令歷史記錄可供使用。由於你剛剛打開了一個新的終端窗口,可能還沒有命令歷史記錄。為了建立一個用於測試的命令歷史,請複製下面的每個命令並在終端中運行它們。這些命令不具侵入性,不會危及你的計算機。

# 清屏
 clear
 
# 將字符串打印到終端會話
 echo 'working on the command line with fc'
 
# 顯示一些系統信息
 uname -a
 
# 使用 PS 命令獲取進程信息
 ps aux

3. 接下來,運行以下命令以列出所有歷史命令。使用-l選項指示fc只列出所有以前的命令而不執行它們。

fc -l

如下所示,fc命令顯示了您之前發出的所有四個命令。左側的數字表示您執行每個命令的順序。

Listing command history with fc

編輯並重新執行上一個命令

想像一個情況,您正在安裝一個應用程序,並且拼寫錯誤。結果,命令失敗了。與其重新輸入整個命令,為什麼不編輯命令並自動重新執行呢?請按照以下步驟進行操作。

1. 在終端中運行以下命令模擬安裝一個不存在的應用程序。注意,您將故意拼寫應用程序名稱caffiene錯誤。

sudo apt install caffiene -y

結果,嘗試安裝失敗。您將收到類似以下的消息。

Failed installation message

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

fc

下面的截圖顯示了在nano編輯器中的最後一個命令。

Editing the last command with nano.

如果nano不是您首選的文字編輯器,您可以指示fc使用其他編輯器,如vi。為此,請包含-e選項,後跟文字編輯器名稱。例如,fc -e vi將在vi文字編輯器中打開命令歷史。

3. 一旦進入nano文字編輯器,請將應用程式名稱的拼寫從caffiene更正為caffeine

4. 更正應用程式名稱後,按下CTRL+X退出nano。

5. 在下一個提示要求您保存修改的緩衝區?時,按下Y —> Enter以保存更改。

Editing the last command and saving changes to the history buffer

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

Automatically re-executing the edited command

編輯和重新執行上一個命令

使用fc,您不僅可以編輯最後一次運行的命令,還可以編輯以前執行的任何命令。例如,要編輯命令echo 'working on the command line with fc',請按照以下步驟操作。

1. 在終端中運行以下命令以列出先前的命令。

fc -l

2. 從命令歷史列表中找到要編輯的命令,並注意其左邊的號碼。在此示例中,命令號碼為2。

Listing the command history and finding the command number to edit

3. 要編輯具有條目號碼2的命令,請在終端中運行以下命令。命令將在文本編輯器中打開以進行編輯。

fc 2

4. 一旦進入文本編輯器,現在根據需要編輯命令。

5. 編輯命令後,按 CTRL+X 退出 nano。

6. 在下一個提示中,問您是否要保存修改的緩衝區?,按 Y —> Enter 保存更改。

Editing a past command entry in the history buffer

保存命令並退出文本編輯器後,您編輯的命令將自動在 shell 中執行。

編輯和重新執行多個命令

如果您認為 fc 只能一次編輯和執行一個先前的命令,那麼您會感到驚喜。為什麼呢?fc 還允許您編輯多個先前的命令!編輯多個先前的命令有什麼用處?首先,您可以更改命令的執行順序。

假設您想編輯之前的命令編號 2 到 7。要這樣做,請按照以下步驟進行。

1. 在您的 Bash 終端中運行以下命令,然後按 Enter。下面的命令讀作 fc <space> 2 <space> 7,這意味著 fc 將打開命令 2 到 7 供您編輯。

fc 2 7

2. 接下來,根據需要編輯命令。例如:

  • 刪除 sudo apt install caffiene -y 命令。
  • 交換 uname -aps aux 的順序。
  • 刪除 clear
Editing command history entries 2 through 7 at once

3. 編輯完命令後,按 CTRL+X 退出 nano。

4. 在下一個提示中,問您是否要保存修改的緩衝區?,按 Y —> Enter 保存更改。

你編輯的命令將在退出文本編輯器後自動執行。

Automatically re-executing the edited command

在不編輯的情況下重新執行上一個命令

假設你只需要執行上一個命令而不先編輯。 fc 有一個選項可以做到這一點。按照以下步驟執行歷史記錄中指定條目的上一個命令。

  1. 通過運行下面的命令在終端中列出以前的命令。
fc -l

2. 從命令歷史列表中找到您想要再次運行的命令,並注意其左側的編號。 在此示例中,命令編號為2。

Listing the command history and finding the command number to execute

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

fc -s 2

下面的屏幕截圖顯示fc執行了命令歷史中的命令2。

Executing a previous command from the history buffer without editing

結論

本文旨在引起您對一個有用但常常被忽略和遺忘的命令 fc 的興趣。 您學會了如何使用 fc 避免重新輸入先前執行的命令,這可能會浪費時間。

憑藉您現在對 fc 的了解,您認為您會使用它嗎? 還是您仍然更喜歡在shell中重新輸入命令? 做出明智的選擇!

Source:
https://adamtheautomator.com/bash-fc-command/