Linux 中 fzf 命令簡介


引言 Linux 命令列介面是系統管理員和開發人員可用於管理和操作其系統最強大的工具之一。CLI 的挑戰之一是需要記住許多命令和選項。但是,有一些工具可以簡化命令列的導航,例如 fzf 命令。在本文中,我們將介紹 fzf 命令、其工作原理及其功能。

什麼是 fzf?

fzf 是一種命令列模糊查詢器,允許您輕鬆搜尋檔案、目錄和其他型別的資料。它是一個高度可定製的工具,可用於篩選和搜尋系統上的任何型別的資料。

fzf 使用 Go 程式語言編寫,適用於 Linux、macOS 和 Windows 作業系統。該工具透過使用模糊搜尋演算法將輸入與可用資料進行匹配,然後根據相關性對結果進行排序。

fzf 的功能

fzf 具有許多功能,使其成為最優秀的命令列工具之一。其中一些功能包括 -

  • 模糊搜尋 - fzf 使用模糊搜尋演算法將輸入與可用資料進行匹配,使您能夠輕鬆找到所需內容。

  • 多選 - fzf 允許您一次選擇多個專案,從而可以輕鬆對資料執行批處理操作。

  • 互動式預覽 - fzf 提供所選資料的互動式預覽,允許您在實際執行操作之前檢視即將處理的內容。

  • 可定製 - fzf 具有高度可定製性,允許您更改工具的預設行為以匹配您的偏好。

  • 鍵盤快捷鍵 - fzf 帶有許多鍵盤快捷鍵,使操作和導航變得簡單。

fzf 使用示例

以下是一些關於如何使用 fzf 命令的示例 -

在目錄中搜索檔案

假設您有一個包含許多檔案的目錄,並且想要查詢特定檔案。與其使用傳統的 ls 命令列出所有檔案然後在輸出中搜索,不如使用 fzf 搜尋檔案。

要在目錄中搜索檔案,可以使用以下命令 -

ls | fzf

此命令將列出目錄中的所有檔案,然後 fzf 將允許您搜尋所需的檔案。

使用 fzf 搜尋命令歷史記錄

如果要搜尋命令歷史記錄以查詢特定命令,可以使用以下命令 -

history | fzf

此命令將顯示您之前執行的所有命令,然後 fzf 將允許您搜尋所需的命令。

搜尋程序並將其殺死

如果要搜尋正在執行的程序並將其殺死,可以使用以下命令 -

ps aux | fzf | awk '{print $2}' | xargs kill -9

此命令將列出系統上所有正在執行的程序,然後 fzf 將允許您搜尋要殺死的程序。選擇程序後,awk 將提取程序 ID,然後將其傳遞給 kill 命令以終止程序。

使用 fzf 導航到目錄

如果要快速導航到目錄,可以使用以下命令 -

cd $(find * -type d | fzf)

此命令將列出當前目錄中的所有目錄,然後 fzf 將允許您搜尋要導航到的目錄。選擇目錄後,cd 命令將帶您到所選目錄。

使用 fzf 搜尋命令的輸出

如果某個命令產生大量輸出,可以使用 fzf 搜尋輸出並查詢所需資訊。例如,如果要使用 ps 命令搜尋特定程序,可以使用以下命令 -

ps aux | fzf --preview 'echo {} | awk "{print \$2}" | xargs ptree' | awk '{print $2}'

此命令將顯示系統上所有正在執行的程序,然後 fzf 將允許您搜尋要調查的程序。選擇程序後,fzf 將顯示程序樹的預覽,awk 將提取程序 ID,並將其列印到控制檯。

自定義 fzf

可以透過設定環境變數或使用命令列選項來自定義 fzf 以匹配您的偏好。您可以設定的一些環境變數包括 -

  • FZF_DEFAULT_COMMAND - 此變數設定 fzf 用於生成輸入的命令。例如,如果希望 fzf 在特定目錄中搜索檔案,可以如下設定變數 -

export FZF_DEFAULT_COMMAND='find /path/to/dir -type f'
  • FZF_DEFAULT_OPTS - 此變數設定 fzf 將使用的預設選項。例如,如果希望 fzf 使用特定佈局,可以如下設定變數 -

export FZF_DEFAULT_OPTS='--layout=reverse --preview-window=right:50%'

fzf 的高階用法

除了我們已經介紹的示例之外,還有其他高階方法可以使用 fzf。讓我們來看幾個 -

將 fzf 與 Git 一起使用

如果您使用 Git,可以使用 fzf 選擇要提交、檢出或比較差異的檔案。例如,要選擇要提交的檔案,可以使用以下命令 -

git status -s | fzf | awk '{print $2}' | xargs git add

此命令將顯示已修改的檔案,然後 fzf 將允許您選擇要提交的檔案。選擇檔案後,awk 將提取檔名,並將其傳遞給 git add 命令以暫存更改。

將 fzf 與 Vim 一起使用

如果您是 Vim 使用者,可以使用 fzf 快速開啟檔案、緩衝區或標籤。例如,要使用 fzf 開啟檔案,可以使用以下命令 -

vim $(find * -type f | fzf)

此命令將列出當前目錄中的所有檔案,然後 fzf 將允許您選擇要開啟的檔案。選擇檔案後,Vim 將在新緩衝區中開啟檔案。

將 fzf 與 Tmux 一起使用

如果您是 Tmux 使用者,可以使用 fzf 快速在 Tmux 會話或視窗之間切換。例如,要在 Tmux 會話之間切換,可以使用以下命令 -

tmux switch-client -n -t $(tmux list-sessions -F '#S' | fzf)

此命令將顯示您開啟的所有 Tmux 會話的列表,然後 fzf 將允許您選擇要切換到的會話。選擇會話後,tmux switch-client 命令將切換到所選會話。

將 fzf 與 Ranger 一起使用

如果您使用 Ranger(一種命令列檔案管理器),可以使用 fzf 快速選擇要操作的檔案。例如,要將檔案移動到其他目錄,可以使用以下命令 -

ranger --choosefiles="$(find * -type f | fzf)" --choosedir="$(find * -type d | fzf)"

此命令將顯示當前目錄中的所有檔案的列表,然後 fzf 將允許您選擇要移動的檔案。選擇檔案後,fzf 將顯示當前目錄中所有目錄的列表,然後 fzf 將允許您選擇要將檔案移動到的目錄。選擇目錄後,Ranger 將檔案移動到所選目錄。

結論

fzf 是一種強大的命令列工具,可以使 Linux 命令列的使用更輕鬆、更高效。它允許您快速輕鬆地搜尋檔案、目錄和其他型別的資料,並且其高度可定製的特性意味著您可以根據自己的偏好對其進行調整。無論您是系統管理員、開發人員還是高階使用者,fzf 都是您應該考慮新增到工具箱中的工具。

更新於: 2023-03-24

355 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.