原生Linux命令不好使?試試這14款替代工具吧,好用到爆!
一、lsd
lsd[2]是一個基于 Rust 語言編寫的 ls 命令替代品,增加了顏色、圖標、樹視圖、更多格式選項等。可以在 Archlinux、Fedora、macOS、FreeBSD、Windows、Android、Ubuntu、Debian 等多種操作系統上安裝。
# curl -LO https://github.com/Peltoche/lsd/releases/download/0.21.0/lsd_0.21.0_amd64.deb
# dpkg -i lsd_0.21.0_amd64.deb
二、broot
broot[3]也是一個基于 Rust 語言編寫的 ls 命令替代品。相比 lsd 來說,它是一種查看和導航目錄樹的新方法,也可以理解為 broot 就是終端里的文件管理器。
broot 的特征:
- 獲得一個目錄的概覽、甚至是一個大目錄
- 找到一個目錄然后 cd
- 搜索時永遠不會丟失文件層次的結構
- 操作文件、管理文件、預覽文件
- 將標準或個人快捷方式應用于文件
- 替代 ls
- 排序看看占用空間
- 檢查 Git 狀態
broot 的使用:
使用 broot 時,可以先列出當前目錄下的文件信息。
# br -sdph
- -s:顯示文件大小
- -d:顯示文件時間
- -p:顯示文件權限
- -h:顯示隱藏文件
從上述結果可以看出,broot 默認是以樹狀結構展開子目錄,在該界面中,可以完成搜索(輸入關鍵詞)、復制(cp <復制后的文件名>)、刪除 rm、更改文件名(mv <新文件名>)、退出 q基本文件操作。
三、zoxide
zoxide[5]是 cd 命令的替代品,主要用來切換用戶當前工作目錄,相比 cd 命令來說,zoxide 更智能些,它會記住您最常使用的目錄,因此您只需按幾下鍵即可“跳轉”到指定的目錄。
zoxide 可以在 Linux、macOS、Windows、BSD、Android 等操作系統上運行,用法與 cd 一樣。
# zoxide /etc
如果您經常用 zoxide 進入 /etc 目錄,您可以只寫路徑的一部分,從而將自動找到您經常使用的匹配項,只需輸入命令:z e,就會自動將e匹配為 /etc,從而進入該目錄中。
# z e
四、fzf
fzf[6]是一個通用的交互式命令行模糊查找器,便捷、無依賴、速度極快可用于任何列表、文件、歷史命令、進程、主機名、書簽、git 提交等。可以在 Debian 9+、Ubuntu 19.10+、Fedora、Arch Linux、FreeBSD、OpenBSD、openSUSE 等多種 Linux 發行版中安裝。
# curl -LO http://cn.archive.ubuntu.com/ubuntu/pool/universe/f/fzf/fzf_0.24.3-1_amd64.deb
# dpkg -i fzf_0.24.3-1_amd64.deb
使用 fzf 可以結合 find 的替代品 fd[7]工具,關于 fd 這里不詳細介紹了!
如果使用模糊查找,找出包含 debug 的文件名,可執行如下命令后,輸入debug即可。
# find . -type f | fzf
五、ripgrep (rg)
ripgrep (rg)[8]是 grep 命令的替代品,它是一種面向行的搜索工具,遞歸地在當前目錄中搜索正則表達式模式,支持在 Windows、Linux 和 macOS 上安裝。
ripgrep GitHub 存儲庫也對相同文件、單個大文件通過 ripgrep、git grep、ugrep、The Silver Searcher、ack、GNU grep 的方式做了鮮明的基準測試對比。從時間上來看 ripgrep 搜索時間相比是最快的。
除此之外,ripgrep 默認過濾、更少的錯誤、Unicode 支持、帶有行號和搜索詞高亮。
# apt install ripgrep
ripgrep 跟 grep 用法類似,比如:我要搜索所有內容包含字符串 yum 的 sh 文件,可執行如下命令:
# rg yum *.sh
9:cd /etc/yum.repos.d/
22:yum clean all
23:yum makecache
25:echo "本地yum倉庫已經創建完成!"
除 grep、ripgrep 之外,還有 ack、ag[9]關于 ack 和 ag 這里不詳細介紹了
六、procs
procs[10]是基于 Rust 語言編寫的一個 ps 命令的替代品,它支持彩色高亮、多欄關鍵詞搜索等特征的顯示進程相關信息,可在 Linux、macOS、Windows 操作系統上進行安裝。
procs 的安裝:
Arch Linux
# sudo pacman -S procs
Fedora
# sudo dnf install procs
RPM
# sudo rpm -i https://github.com/dalance/procs/releases/download/v0.12.1/procs-0.12.1-1.x86_64.rpm
使用 procs 可執行如下命令,將顯示所有進程的信息。
# procs
使用非數字 / 關鍵字進行搜索,添加任何關鍵字作為參數選項,默認情況下將會自動匹配 USER 到 COMMAND 中,添加與非數字關鍵字匹配的列,nonnumeric_search可以在配置文件中使用選項。
使用數字作為關鍵字進行搜索,默認匹配PID,默認情況下,數值被視為完全匹配,非數值被視為部分匹配,添加與數字關鍵字匹配的列,numeric_search可以在配置文件中使用選項。
如有一些關鍵字,可通過命令行選項指定關鍵字之間的邏輯運算。
- --and:顯示與所有關鍵字匹配的進程
- --or:顯示與任何關鍵字匹配的進程
- --nand:除非這些過程與所有關鍵字匹配,否則將顯示這些過程
- --nor:除非與任何關鍵字匹配,否則將顯示進程
七、diff-so-fancy
diff-so-fancy[11]是 git diff 的替代品,它是基于 node 實現的一款命令行工具,可以為您的終端呈現漂亮的差異,有助于提高代碼質量并幫助更快發現缺陷。
diff-so-fancy 的安裝:
# npm install -g diff-so-fancy
diff-so-fancy 的使用:
直接可以在命令行調用
# git diff --color | diff-so-fancy
通過上述方式使用 diff-so-fancy 雖簡單,但會把所有結果全部輸出,并沒顯得差異化。我們可以通過設置 pager 對結果進行分頁配置 git 以 diff-so-fancy 用于所有差異輸出:
# git config --global core.pager " diff-so-fancy | less --tabs=4 -RFX "
# git config --global interactive.diffFilter " diff-so-fancy --patch "
將 diff-so-fancy 配置為 Git 的默認 diff 工具就可以了,每次執行 git diff,就會輸出它的執行結果。
八、delta
delta[12]是用于 git、diff 和 grep 輸出的語法高亮分頁器,它允許對 diff 的布局和樣式進行大量的更改。
delta 的特征:
- 使用顏色主題突出顯示語言的語法
- 語法高亮從 rg、git grep、grep 等的 grep 輸出
- 帶換行的并排視圖
- 支持顯示行號
- 支持合并沖突顯示
- 支持 Git 的 --color-moved 功能
- n 和 N 鍵綁定在大差異中的文件之間移動
- 代碼可以直接從差異中復制
delta 的安裝:
delta 支持在 Arch Linux、Fedora、FreeBSD、OpenSUSE、Debian / Ubuntu、Windows 等多種操作系統上安裝,具體可參考 delta[13] 用戶手冊的安裝部分。
九、mcfly
Mcfly[14] 是ctrl+r的替代品,主要用來搜索 Shell 操作記錄。
mcfly 的特征:
- 綁定ctrl+r以啟動全屏反向歷史搜索
- 基于 Rust 編寫,快速、安全
- 搜索時鍵入%以匹配任意數量的字符
- 維護正常 Shell 歷史文件,以便可隨時停止使用 McFly
- 支持從 McFly 數據庫和 Shell 歷史文件中清除任何歷史項目的操作
十、choose
choose[15] 是 cut[16]命令的替代品,用來顯示行中的指定部分,刪除文件中指定字段。cut 經常用來顯示文件的內容,類似于 type 命令。
choose 的特征:
- 簡潔字段、語法簡單、類似于 Python 的列表切片
- 負索引從行尾開始
- 可選的開始 / 結束索引
- 零索引
- 反向范圍
- 對于足夠長的輸入,略快于cut,遠快于awk
- 使用 Rust 的正則表達式語法的正則表達式字段分隔符
cut 的案例寫法:
# cat 2022.txt | cut -d " " -f 1
or
# cut -d " " -f 1 2022.txt
choose 的案例寫法:
# cat 2022.txt | choose 1
or
# choose 1 -i 2022.txt
十一、httpie
httpie[17]是 curl 的替代品,一個命令行 HTTP 客戶端。httpie 的目標是使 CLI 與 Web 服務的交互盡可能的人性化,用于測試、調試以及通常與 API 和 HTTP 服務器交互,允許 http 和 https 命令創建和發送任意 HTTP 請求,從而使用簡單的語法,并能夠提供格式化和彩色輸出。
curl PUT 請求案例寫法:
# curl -X PUT -d hello=world example.com
httpie PUT 請求案例寫法:
# http PUT example.com hello=world
自定義 HTTP 方法、HTTP 標頭和 JSON 數據:
# http PUT pie.dev/put X-API-Token:123 name=John
在不使用離線模式發送的情況下構建和打印請求:
# http --offline pie.dev/post hello=offline
十二、curlie
curlie[18]跟 httpie 是同類項目,curlie 增加了 httpie 的易用性,而不影響它的特性和性能,所有 curl 選項的語法和輸出格式都來自 httpie,如果您喜歡 httpie 的界面,但不喜歡 curl 的特性,那 curlie 是最佳的選擇。
curlie 與 httpie 的區別:
- curlie 像 curl,但不像 httpie,文件頭是寫在 stderr,而不是寫在 stdout;
- 輸出沒緩沖,所有格式化均動態完成,可輕松調試流數據;
- 使用 curl 選項打印執行的 curl 命令;
curlie 的語法:
# curlie [CURL_OPTIONS...] [METHOD] URL [ITEM [ITEM]]
curlie 的簡單獲?。?
# curlie httpbin.org/headers
自定義方法、標頭和 JSON 數據:
# curlie -v PUT httpbin.org/status/201 X-API-Token:123 name=John
十三、xh
xh[19]是一個用于發送 HTTP 請求的友好且快速的工具,相比 httpie 來說,主要是提高了性能、可作為單個靜態鏈接的二進制文件,易于安裝、支持 HTTP / 2、使用 curl 標志內置對 curl 命令的轉換、簡短的幫助信息可通過備忘單樣式進行輸出。
xh 的語法:
# xh [OPTIONS] <[METHOD] URL> [--] [REQUEST_ITEM]...
xh 的例子:
# 發送 GET 請求
xh httpbin.org/json
# 發送一個 POST 請求,請求體{"name": "ahmed", "age": 24}
xh httpbin.org/post name=ahmed age:=24
# 發送一個 querystring id=5 & sort=true 的 GET 請求
xh get httpbin.org/json id==5 sort==true
# 發送一個 GET 請求,并包含一個名為 x-api-key 的頭,值為:66666
xh get httpbin.org/json x-api-key:66666
# 發送一個 PUT 請求,并將結果管道到 less
xh put httpbin.org/put id:=49 age:=24 | less
# 下載并保存到 test.json
xh -d httpbin.org/json -o test.json
# 請求與自定義用戶代理
xh httpbin.org/get user-agent:foobar
十四、dog
dog[20]是一個命令行開源 DNS 客戶端,dig 命令的替代品,有豐富多彩的輸出,理解命令行參數語法,支持 UDP、TCP、DNS-over-TLS 和 DNS-over-HTTPS 協議的網絡傳輸,并且可以發出 DNS 查詢。
dog 可以在 Windows、MacOS 和 Linux 操作系統上運行,支持 16 種記錄類型,包括:A、AAAA、CAA、CNAME、HINFO、LOC、MX、NAPTR、NS、OPT、PTR、SOA、SRV、SSHFP、TLSA 和 TXT。
dog 的例子:
# 使用默認設置查詢域
dog example.net
# 查看 MX 記錄
dog example.net MX
# 使用特定的命名服務器
dog example.net MX @IP地址 x.x.x.x
# 使用 TCP 而不是 UDP
dog example.net MX @IP地址 x.x.x.x -T
更多關于 dog 的安裝、查詢選項、發送選項、協議選項、輸出選項可參考 dog 文檔。