譯者:ChatGPT
像 fzf 和 fzy 這樣的現(xiàn)代工具將 Linux 終端中的文件搜索提升到了一個新的水平。
在 Linux 命令行中,如何搜索文件 :443?你可以使用find 命令 :443。這是標準答案,沒有問題。
通常,你鍵入帶有搜索參數(shù)的命令,按回車鍵,然后它會顯示搜索結(jié)果。
你可以通過模糊搜索來提升終端中的文件搜索體驗。
模糊搜索是一種近似搜索算法或技術(shù)。在這種搜索中,通過名稱搜索指定位置的文件,并實時顯示結(jié)果給用戶。
模糊搜索在網(wǎng)絡(luò)搜索引擎中很受歡迎,用戶開始輸入術(shù)語后,它會開始顯示與該術(shù)語相關(guān)的結(jié)果。
在本文中,我將討論兩個命令行工具,它們可以讓你在 Linux 中執(zhí)行模糊搜索:
?fzf:模糊查找工具
?fzy:模糊選擇工具
fzf:Linux 中的模糊查找工具
fzf是一款可用于 Linux 的模糊搜索工具,你可以通過它進行交互式文件搜索。
在 Ubuntu 中安裝fzf,打開終端并運行以下命令:
sudo apt install fzf
雖然fzf本身可以正常工作,但最好與其他工具配合使用,以充分發(fā)揮其功能。
使用 fzf
打開終端并運行:
fzf
這將打開一個fzf提示符,在當前工作目錄中搜索文件。
為 fzf 應(yīng)用邊框
你可以使用--border選項為fzf應(yīng)用邊框,有多種邊框可用,如rounded(圓角)、sharp(尖角)等。
fzf --border=rounded
應(yīng)用背景和前景顏色
使用顏色屬性,你可以為fzf設(shè)置 ANSI 顏色,可以作為背景、前景或兩者都設(shè)置。
fzf --color="bg:black,fg:yellow"
你可以串聯(lián)這些選項,使fzf在視覺上更加美觀。
現(xiàn)在,讓我展示一些fzf模糊搜索的實際用法。
使用 fzf 在 Bash 歷史中進行搜索
當然,Bash 歷史記錄中有CTRL+R的反向搜索功能。但如果你想使用fzf來獲得更好的外觀,可以運行以下命令:
history | fzf
使用 fzf 結(jié)合 tree 命令
tree 命令 :443會列出文件和目錄,并顯示它們的層級關(guān)系。
使用fzf結(jié)合tree命令可以幫助你找到特定文件的絕對路徑。
tree -afR /home/$USER | fzf
上述命令會調(diào)用tree并以遞歸方式列出包括隱藏文件在內(nèi)的所有文件(-a)。同時,-f選項告訴tree列出完整路徑。
在 fzf 中預(yù)覽文件
有時,如果你可以獲得你搜索的文件的小型預(yù)覽,那會很有幫助。
幸運的是,fzf提供了一個預(yù)覽選項。你可以使用--preview來訪問它。我在這里使用find命令使其更加有用。
find /home/$USER -type f | fzf --preview 'less {}'
在這里,當你滾動瀏覽結(jié)果時,它將使用less顯示文本文件。
如果你使用其他命令如ls等,請不要使用-l等選項,因為這將顯示額外的詳細信息(文件權(quán)限)。這些額外的詳細信息會破壞fzf預(yù)覽所需的格式。在使用預(yù)覽功能時,輸入到fzf的應(yīng)該只是文件名。
如果你已安裝了bat,也可以使用它來預(yù)覽文件。
find /home/$USER -type f | fzf --preview 'bat --color always {}'
使用 bat 作為 FZF 預(yù)覽功能的文本查看器
對于 Ubuntu 用戶,可以使用batcat來調(diào)用bat。因此運行:
find /home/$USER -type f | fzf --preview 'batcat --color always {}'
為這些命令創(chuàng)建別名 :443,這樣你就不需要反復輸入它們。
從任何地方使用 fzf 進入任何目錄(高級技巧)
這比以前要復雜一些。在這里,你不能直接將fzf和cd連接在一起,因為它們是不同的進程。
你可以創(chuàng)建一個別名并使用以下命令:
cd $(find /home/$USER -type d | fzf)
或者,你可以按照下面解釋的方法進行操作。
為此,你可能需要在bashrc中添加一個函數(shù)。讓我將這個函數(shù)稱為finder。現(xiàn)在請?zhí)砑右韵滦械侥愕腷ashrc中。
finder() {
local dir
dir=$(find required/location/to/search/and/enter -type d | fzf)
if [[ -n "$dir" ]]; then
cd "$dir" || return
fi
}
現(xiàn)在,你應(yīng)該輸入路徑 ,其中包含你要搜索并進入的目錄。
例如,我已經(jīng)使用/home/$USER替換了該部分,表示我要從任何位置進入我的主目錄中的任何目錄。
保存你的bashrc文件后,要么重啟終端,要么運行以下命令:
source ~/.bashrc
之后,你可以在終端上運行finder命令,一旦找到要進入的目錄,按回車鍵即可。
將選擇內(nèi)容復制到剪貼板
到目前為止,你已經(jīng)了解了如何使用fzf,它提供了搜索結(jié)果或預(yù)覽。
現(xiàn)在,如果你想要復制某個項目的位置,你不必手動執(zhí)行此操作。也有相應(yīng)的解決方案。
首先,確保你已經(jīng)安裝了xclip。
sudo apt install xclip
然后像這樣將其傳遞給xclip:
fzf | xclip -selection clipboard
這將復制你按下回車鍵的那些行到剪貼板上。
其他用途
正如我之前所說,你可以使用任何涉及大量文本,并希望交互式搜索特定內(nèi)容的命令。
?cat ~/.bashrc | fzf- 在 Bashrc 文件中搜索
?lsblk | fzf- 在鎖定設(shè)備列表中搜索
?ps -aux | fzf- 在進程列表中搜索
另一個選擇:Fzy,模糊選擇器
與fzf不同,fzy是一個模糊選擇器,它會根據(jù)輸入提供一個菜單供你選擇。
例如,如果你將fzy與ls命令一起使用,它將給你提供一個類似菜單的界面。
默認情況下,它會顯示十個條目。
使用 fzy 進入目錄
與fzf類似,你也可以使用fzy進入當前工作目錄中的目錄:
cd $(find -type d | fzy)
使用任何編輯器打開文件
或者使用你喜歡的編輯器打開文件:
nano $(find -type f | fzy)
附加內(nèi)容:自定義文件和圖像預(yù)覽
下面的命令將在Ubuntu中打開一個專門的自定義提示符,用于模糊搜索,你可以通過滾動來預(yù)覽文本文件。
find /home/$USER -type f | fzf --color="bg:black,fg:yellow" --preview 'batcat --color always {}' --preview-window=bottom
為了方便訪問,可以在你的bashrc文件中為此創(chuàng)建一個別名。
或者在使用timg命令行圖像查看器時,在fzf中進行圖像預(yù)覽并滾動。使用以下命令進行安裝:
sudo apt install timg
請注意,圖像查看器無法正確顯示圖像,因為這不是fzf預(yù)覽的主要目的。
fzf --preview 'timg -g 200x100 {}' --preview-window=right:90
對于那些喜歡折騰的人,可以嘗試對此部分進行優(yōu)化。
現(xiàn)代化的替代方案
大多數(shù) Linux 命令都是從 UNIX 時代繼承下來的。它們雖然老舊,但功能如預(yù)期。但這并不意味著它們不能改進。
我的意思是,你不需要重新發(fā)明輪子,但你總是可以努力改進輪子。
像fzf和fzy這樣的現(xiàn)代化工具將 Linux 終端中的文件搜索提升到了一個新的水平。以下是一些其他有趣的命令行工具。
我嘗試給出了這些模糊搜索工具的一些實際示例。希望你對它們感到足夠有啟發(fā)性。如果你打算使用它們,請在評論中告訴我。
(題圖:MJ/-f24e-49be-9579-)
via:
作者:選題:lkxed譯者:ChatGPT 校對:wxy
本文由LCTT原創(chuàng)編譯,Linux中國榮譽推出
歡迎遵照 CC-BY-SA 協(xié)議規(guī)定轉(zhuǎn)載,
如需轉(zhuǎn)載,請在文章下留言 “轉(zhuǎn)載:公眾號名稱”,
我們將為您添加白名單,授權(quán)“轉(zhuǎn)載文章時可以修改”。