舊 Linux 命令列工具的 5 個現代替代品

透過將更現代的替代方案與舊的命令列工具一起使用,您可以享受更多樂趣,甚至提高您的工作效率。

舊 Linux 命令列工具的 5 個現代替代品

在 Linux/Unix 上的日常工作中,我們使用許多命令列工具 - 例如 du 來監控磁碟使用情況和系統資源。 其中一些工具已經存在很長時間了。 例如,top 出現在 1984 年,du 的首次發布可以追溯到 1971 年。

多年來,這些工具已經現代化並移植到不同的系統,但總的來說,它們與第一個版本並沒有相差太遠,它們的外觀和可用性也沒有太大變化。

這些是許多系統管理員需要的很棒的工具。 然而,社區已經開發了可提供額外好處的替代工具。 其中一些只是擁有現代、美觀的介面,而另一些則大大提高了可用性。 在本翻譯中,我們將討論標準 Linux 命令列工具的五種替代方案。

1. ncdu vs du

NCurses 磁碟使用情況(南都)與du類似,但具有基於curses庫的交互介面。 ncdu 顯示佔用大部分磁碟空間的目錄結構。

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

是一個類似top的互動式流程檢視器,但開箱即用,它提供了良好的使用者體驗。 預設情況下,htop 顯示與 top 相同的訊息,但以更直觀、更豐富多彩的方式顯示。

預設 htop 看起來像這樣:

舊 Linux 命令列工具的 5 個現代替代品
與頂部不同:

舊 Linux 命令列工具的 5 個現代替代品
此外,htop 在頂部顯示有關係統的概述訊息,在底部顯示使用功能鍵運行命令的面板。 您可以按 F2 開啟配置畫面進行設定。 在「設定」中,您可以變更顏色、新增或刪除指標或變更概覽面板顯示選項。

雖然你可以透過調整最新版本的top的設定來實現類似的可用性,但htop提供了方便的預設配置,這使得它更實用,更容易使用。

3. tldr 與 man

tldr 命令列工具顯示有關命令的簡化幫助訊息,主要是範例。 它是由社區開發的 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有很多功能,但需要另一篇文章來描述它們。 取得更多資訊,請聯繫 專案頁面 jq 或 tldr。

5. fd 與 find

fd 是 find 實用程式的簡化替代方案。 Fd 並不打算完全取代它:它預設安裝了最常見的設置,定義了處理文件的一般方法。

例如,在 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 命令列工具嗎? 還是你只坐在舊的上? 但很可能你有一個組合,對吧? 請在評論中分享您的經驗。

論廣告的權利

我們的許多客戶已經意識到了這些好處 史詩伺服器!
配備 AMD EPYC 處理器的虛擬伺服器,CPU核心頻率高達3.4GHz。 最高配置將讓您盡情享受 - 128 個 CPU 核心、512 GB RAM、4000 GB NVMe。 趕快下單吧!

舊 Linux 命令列工具的 5 個現代替代品

來源: www.habr.com

添加評論