透過將更現代的替代方案與舊的命令列工具一起使用,您可以享受更多樂趣,甚至提高您的工作效率。
在 Linux/Unix 上的日常工作中,我們使用許多命令列工具 - 例如 du 來監控磁碟使用情況和系統資源。 其中一些工具已經存在很長時間了。 例如,top 出現在 1984 年,du 的首次發布可以追溯到 1971 年。
多年來,這些工具已經現代化並移植到不同的系統,但總的來說,它們與第一個版本並沒有相差太遠,它們的外觀和可用性也沒有太大變化。
這些是許多系統管理員需要的很棒的工具。 然而,社區已經開發了可提供額外好處的替代工具。 其中一些只是擁有現代、美觀的介面,而另一些則大大提高了可用性。 在本翻譯中,我們將討論標準 Linux 命令列工具的五種替代方案。
1. ncdu vs du
NCurses 磁碟使用情況(
ncdu 分析磁碟,然後顯示按最常用的目錄或檔案排序的結果,例如:
ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
96.7 GiB [##########] /libvirt
33.9 GiB [### ] /.crc
7.0 GiB [ ] /Projects
. 4.7 GiB [ ] /Downloads
. 3.9 GiB [ ] /.local
2.5 GiB [ ] /.minishift
2.4 GiB [ ] /.vagrant.d
. 1.9 GiB [ ] /.config
. 1.8 GiB [ ] /.cache
1.7 GiB [ ] /Videos
1.1 GiB [ ] /go
692.6 MiB [ ] /Documents
. 591.5 MiB [ ] /tmp
139.2 MiB [ ] /.var
104.4 MiB [ ] /.oh-my-zsh
82.0 MiB [ ] /scripts
55.8 MiB [ ] /.mozilla
54.6 MiB [ ] /.kube
41.8 MiB [ ] /.vim
31.5 MiB [ ] /.ansible
31.3 MiB [ ] /.gem
26.5 MiB [ ] /.VIM_UNDO_FILES
15.3 MiB [ ] /Personal
2.6 MiB [ ] .ansible_module_generated
1.4 MiB [ ] /backgrounds
944.0 KiB [ ] /Pictures
644.0 KiB [ ] .zsh_history
536.0 KiB [ ] /.ansible_async
Total disk usage: 159.4 GiB Apparent size: 280.8 GiB Items: 561540
您可以使用箭頭鍵瀏覽條目。 如果按 Enter 鍵,ncdu 將顯示所選目錄的內容:
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
例如,您可以使用此工具來確定哪些檔案佔用了最多的磁碟空間。 您可以按向左箭頭鍵轉到上一個目錄。 使用 ncdu,您可以按 d 鍵刪除檔案。 刪除前會要求確認。 如果要停用刪除功能以防止意外遺失有價值的文件,請使用 -r 選項啟用唯讀存取模式:ncdu -r。
ncdu 可用於許多 Linux 平台和發行版。 例如,您可以使用 dnf 直接從官方儲存庫將其安裝在 Fedora 上:
$ sudo dnf install ncdu
2. htop 與 top
預設 htop 看起來像這樣:
與頂部不同:
此外,htop 在頂部顯示有關係統的概述訊息,在底部顯示使用功能鍵運行命令的面板。 您可以按 F2 開啟配置畫面進行設定。 在「設定」中,您可以變更顏色、新增或刪除指標或變更概覽面板顯示選項。
雖然你可以透過調整最新版本的top的設定來實現類似的可用性,但htop提供了方便的預設配置,這使得它更實用,更容易使用。
3. tldr 與 man
tldr 命令列工具顯示有關命令的簡化幫助訊息,主要是範例。 它是由社區開發的
值得注意的是,tldr 並不能取代 man。 它仍然是規範且最全面的手冊頁輸出工具。 然而,在某些情況下,人是多餘的。 當您不需要有關命令的全面資訊時,您只需嘗試記住它的基本用法即可。 例如,curl 指令的手冊頁包含近 3000 行。 curl 的 tldr 頁面有 40 行長。 它的片段如下所示:
$ tldr curl
# curl
Transfers data from or to a server.
Supports most protocols, including HTTP, FTP, and POP3.
More information: <https://curl.haxx.se>.
- Download the contents of an URL to a file:
curl http://example.com -o filename
- Download a file, saving the output under the filename indicated by the URL:
curl -O http://example.com/filename
- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:
curl -O -L -C - http://example.com/filename
- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):
curl -d 'name=bob' http://example.com/form
- Send a request with an extra header, using a custom HTTP method:
curl -H 'X-My-Header: 123' -X PUT http://example.com
- Send data in JSON format, specifying the appropriate content-type header:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234
... TRUNCATED OUTPUT
TLDR 的意思是「太長;太長」。 未讀」:即某些文字由於過於冗長而被忽略。 這個名稱很適合這個工具,因為手冊頁雖然有用,但有時可能太長。
對於 Fedora,tldr 是用 Python 寫的。 您可以使用 dnf 管理器安裝它。 通常,該工具需要存取互聯網才能運作。 但Fedora的Python客戶端允許下載並快取這些頁面以供離線存取。
4.jq 與 sed/grep
jq 是命令列的 JSON 處理器。 它類似於 sed 或 grep,但專門設計用於處理 JSON 資料。 如果您是在日常任務中使用 JSON 的開發人員或系統管理員,那麼這個工具就是適合您的。
與標準文字處理工具(例如 grep 和 sed)相比,jq 的主要優點是它理解 JSON 資料結構,讓您在單一表達式中建立複雜的查詢。
例如,您嘗試在此 JSON 檔案中尋找容器名稱:
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"labels": {
"app": "myapp"
},
"name": "myapp",
"namespace": "project1"
},
"spec": {
"containers": [
{
"command": [
"sleep",
"3000"
],
"image": "busybox",
"imagePullPolicy": "IfNotPresent",
"name": "busybox"
},
{
"name": "nginx",
"image": "nginx",
"resources": {},
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Never"
}
}
執行 grep 查找字串名稱:
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grep 傳回包含單字 name 的所有行。 您可以為 grep 添加更多選項來限制它,並使用一些正規表示式操作來尋找容器名稱。
要使用 jq 得到相同的結果,只需編寫:
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
此命令將為您提供兩個容器的名稱。 如果您只尋找第二個容器的名稱,請將陣列元素的索引新增至表達式:
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
由於 jq 了解資料結構,因此即使檔案格式略有變化,它也會產生相同的結果。 在這種情況下,grep 和 sed 可能無法正常工作。
jq有很多功能,但需要另一篇文章來描述它們。 取得更多資訊,請聯繫
5. fd 與 find
例如,在 Git 儲存庫目錄中搜尋檔案時,fd 會自動排除隱藏檔案和子目錄,包括 .git 目錄,並且也會忽略 .gitignore 檔案中的通配符。 總體而言,它透過在第一次嘗試時返回更相關的結果來加快搜尋速度。
預設情況下,fd 在目前目錄中執行不區分大小寫的搜索,並帶有顏色輸出。 使用 find 命令進行相同的搜尋需要在命令列上輸入附加參數。 例如,要查找目前目錄中的所有 .md(或 .MD)文件,您可以編寫如下 find 命令:
$ find . -iname "*.md"
對於 fd 來說,它看起來像這樣:
$ fd .md
但在某些情況下,fd 還需要額外的選項:例如,如果要包含隱藏檔案和目錄,則必須使用 -H 選項,儘管搜尋時通常不需要這樣做。
fd 可用於許多 Linux 發行版。 在 Fedora 中可以這樣安裝:
$ sudo dnf install fd-find
你不必放棄任何東西
您正在使用新的 Linux 命令列工具嗎? 還是你只坐在舊的上? 但很可能你有一個組合,對吧? 請在評論中分享您的經驗。
論廣告的權利
我們的許多客戶已經意識到了這些好處 史詩伺服器!
它
來源: www.habr.com