5 款新型 Linux 命令行工具,實用!

2022-01-18 Java技術棧

使用新的替代工具來改進舊的命令行工具。

在Linux/Unix系統的日常使用中,我們需要使用很多命令行工具來完成工作,以及理解和管理我們的系統,例如使用du來監視磁碟利用率、top來顯示系統資源。有些工具已經有很長的歷史了。例如,top於1984年首次發布,而du的首次問世可追溯至1971年。

多年來,這些工具已經過現代化的改造,並移植到了不同的系統中,但總的來說,它們仍然保留了最初的想法、外觀和感覺。

這些工具都非常優秀,對於許多系統管理員的工作流程來說都是必不可少的。但近年來,開源社區開發了不少更具優勢的替代工具。雖然有些工具華而不實,但有些則大大提高了實用性,成為了現代系統的絕佳選擇。在本文中,我將介紹五種標準Linux命令行工具的替代品。

du的替代:ncdu

NCurses磁碟使用率(NCurses DiskUsage,即ncdu)工具提供了與du類似的結果,但其基於curses的交互式界面可以顯示消耗了大部分磁碟空間的目錄。

首先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

你可以深入各個目錄,找出哪些文件佔用的磁碟空間最多。使用左方向鍵可以返回到上一個目錄。在默認情況下,你可以按d鍵刪除文件,但在刪除文件之前ncdu會要求確認。如果你想禁止刪除操作以防止發生意外,則可以通過-r選項設置只讀訪問:ncdu -r。

ncdu可用於許多平臺和Linux發行版。例如,你可以使用dnf從官方代碼庫直接將其安裝在Fedora上:

$ sudo dnf install ncdu

更多有關該工具的信息,請參見:https://dev.yorhel.nl/ncdu。另外,Linux 系列面試題和答案全部整理好了,微信搜索Java技術棧,在後臺發送:面試,可以在線閱讀。

top的替代:htop

htop是一個類似於top的交互式進程瀏覽器,提供了更好的用戶體驗。在默認情況下,htop顯示的各項指標與top相同,而且是漂亮的彩色。

默認的htop如下所示:


與默認的top相比:


此外,htop的頂部還提供了系統的概述信息,底部的命令欄則顯示了功能鍵命令,你還可以按下F2進入設置頁面來自定義界面。在設置頁面中,你可以更改其顏色,添加或刪除指標、更改概述欄的顯示選項。

雖然top的最新版本也可以通過配置獲得相似的結果,但htop提供的默認配置更為合理,作為一個進程瀏覽器更加易於使用。

如果想了解有關該項目的更多信息,請查看htop主頁(https://hisham.hm/htop/)。

man的替代:tldr

tldr命令行工具顯示可以簡化的命令文檔,而且大部分文檔都提供示例。它是tldr pages項目(https://tldr.sh/)的客戶端。

這個工具不是man的替代品。man pages仍然是許多工具的規範以及完整的信息源。但是,在某些情況下,man的內容太多了。有時,你不需要有關命令的所有信息。你只需要記住基本選項。例如,curl命令的man page幾乎有3,000行。相比之下,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的全稱是「too long; didn'tread」(太長;未讀),這是一句網絡流行語,表示文章太長。這個名字非常適合這個匯總工具,因為manpages雖然非常實用,但內容太長。

在Fedora中,tldr客戶端是用Python編寫的。你可以使用dnf安裝。有關其他客戶端選項,請參見tldr pages項目(https://tldr.sh/)。

通常,tldr工具需要訪問網際網路才能查詢tldr頁面。Fedora中的Python客戶端允許你下載和緩存這些頁面以供離線訪問。

有關tldr的更多信息,請運行tldr tldr。推薦一個 Spring Boot 基礎教程及實戰示例:https://github.com/javastacks/spring-boot-best-practice

用sed/grep查找JSON數據的替代:jq

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直接查詢name,則結果為:

$ 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和se來說,格式稍有變化提供的結果就會完全不同。

jq還有很多功能,我需要用另寫一篇文章才能介紹其所有的功能。有關更多信息,請參見jq項目頁面(https://stedolan.github.io/jq/)、manpages或tldr jq。

find的替代:fd

fd是find命令的一種簡單快速的替代。它的目的不是替換find的功能,而是提供一些合理的默認值,在某些情況下非常有用。

例如,在包含Git代碼庫的目錄中搜索原始碼文件時,fd會自動排除隱藏的文件和目錄(包括.git目錄),並忽略.gitignore文件中的模式。通常,它可以更快地查詢,並提供相關度更高的結果。

在默認情況下,fd會針對當前目錄執行不區分大小寫的模式搜索,並輸出彩色的結果。使用find進行的相同搜索時,你需要提供其他命令行參數。例如,搜索當前目錄中所有的markdown文件(即.md或.MD文件),find命令如下所示:

$ find . -iname "*.md"$ find . -iname "*.md"

而如下fd搜索能夠返回相同的結果:

$ fd .md

在有些情況下,fd也需要其他選項。例如,如果想讓搜索包括隱藏的文件和目錄,則必須使用選項-H,而find則不需要。

fd可用於許多Linux發行版。在Fedora中安裝fd可使用標準代碼庫:

$ sudo dnf install fd-find

有關更多信息,請請見fd的GitHub代碼庫(https://github.com/sharkdp/fd/)。

優秀的替代工具與久經考驗的實用程序

儘管我還是習慣使用舊工具,尤其是在遠程連接到伺服器時,但新的替代工具提供了額外的好處,而且在許多情況下都很有幫助性。特別是幫助我在Linux臺式機和筆記本電腦上管理和工作。

你是否使用其他工具來處理工作流程?請在下方留言。另外,關注公眾號Java技術棧,在後臺回覆:面試,可以獲取我整理的 Linux 系列面試題和答案,非常齊全。

原文:https://opensource.com/article/20/6/modern-linux-command-line-tools
作者:Ricardo Gerardi
譯者:彎月,責編:屠敏
出品:CSDN(ID:CSDNnews)

相關焦點

  • 實用!五款新型 Linux 命令行工具
    使用新的替代工具來改進舊的命令行工具。
  • Linux 下十大命令行下載工具
    相比某種GUI工具,命令行下載工具可以幫助用戶更迅速地從網上下載任何東西。有許多可滿足一般用途、甚至用於torrent的下載工具,不過相比其它工具,只有像curl或者wget這少數幾款工具更受歡迎。我們在本教程中將探討用於在Linux環境中下載的十大命令行工具。不妨逐一探討這些CLI工具。
  • Linux下監控CPU和GPU溫度的三款命令行工具
    在本文中,我們將分享一些有用的命令行工具,以幫助您密切關注CPU和GPU的溫度。sensor是一個簡單的命令行實用程序,它顯示包括CPU在內的所有傳感器晶片的當前讀數。默認情況下,它預裝在一些Linux發行版種,如Ubuntu,如果沒有則按如下所示安裝。
  • 適用於linux的5個最佳命令行歸檔工具
    # tar -zcvf name_of_tar.tar.gz /path/to/folder解壓一個 tar 存檔文件。# shar file_name.extension > filename.shar提取一個shar歸檔文件。
  • 18個Linux命令行工具
    在IT領域作為一名Linux系統的管理員工作5年後,我逐漸認識到監控和保持系統啟動並運行是多麼的不容易。基於此原因,我們已編寫了最常使用的18個命令行工具列表,這些工具將有助於每個Linux/Unix 系統管理員的工作。這些命令行工具可以在各種Linux系統下使用,可以用於監控和查找產生性能問題的原因。這個命令行工具列表提供了足夠的工具,您可以挑選適用於您的監控場景的工具。
  • 適用於Linux的最佳命令行下載加速器
    特別是當您沒有其他選擇時,您將需要使用Linux命令行工具來完成這項工作。在本文中,我們將回顧一些最常用的通過Linux下命令行下載內容的工具。測試環境為Ubuntu 18.04 LTSWget我們將從一個名為wget的最流行的工具開始。它是一個網絡實用程序,可用於通過HTTP,HTTPS和FTP下載內容。
  • 優秀的Linux實用工具:古老的find命令的高級替代
    linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install fd-find在Ubuntu中,命令是fdfind,以避免與另一個現有的實用程序發生名稱衝突。
  • Linux 下的十一款一流備份實用工具
    Rsync這是一款在Linux用戶當中頗受歡迎的命令行備份工具,尤其受到系統管理員的歡迎。它擁有豐富的功能,包括增量備份、更新整個目錄樹和文件系統、本地備份及遠程備份,以及保留文件權限、所有權、連結及更多對象。
  • 20個命令行工具監控 Linux 系統性能
    /LinuxStory翻譯連結:http://www.linuxstory.org/command-line-tools-to-monitor-linux-performance/對於每個系統管理員或網絡管理員來說,每天要監控和調試 Linux 系統性能問題都是非常困難的工作。
  • 13 款 Linux 比較實用的工具
    Linux 運維比較實用的工具,希望對 Linux 運維人員有所幫助。1、查看進程佔用帶寬情況 - NethogsNethogs 是一個終端下的網絡流量監控工具可以直觀的顯示每個進程佔用的帶寬。Linux 文件系統性能測試工具 可以測試不同的作業系統中文件系統的讀寫性能。
  • 幾款超牛逼的終端命令行工具!好用到爆
    終端是程式設計師的必備工具之一,本文將介紹許多牛逼且實用的開源工具,本文僅對工具做基本介紹,不提供安裝方法
  • 幾個超級牛逼的終端命令行工具!
    本文將介紹許多牛逼且實用的開源工具,用上這些工具後你不一定會變成 10 倍程式設計師,但絕對能夠讓你感覺自己像個 10 倍程式設計師。本文僅對工具做基本介紹,不提供安裝方法,因為這些工具的安裝方法在項目的 github 首頁上基本都會提供,在掘金上也能找到許多具體的使用教程。
  • 在 Linux 上安裝使用 VirtualBox 的命令行管理界面 VBoxManage
    VirtualBox 擁有一套命令行工具,你可以使用 VirtualBox 的命令行界面 (CLI) 對遠程無界面的伺服器上的虛擬機進行管理操作
  • Pet:一個簡單的命令行片段管理器 | Linux 中國
    我們不可能記住所有的命令,對吧?是的。除了經常使用的命令之外,我們幾乎不可能記住一些很少使用的長命令。這就是為什麼需要一些外部工具來幫助我們在需要時找到命令。在過去,我們已經點評了兩個有用的工具,名為 「Bashpast」 和 「Keep」。使用 Bashpast,我們可以輕鬆地為 Linux 命令添加書籤,以便更輕鬆地重複調用。
  • 通過 Linux 命令行連接 Wifi | Linux 中國
    編譯自 | https://linuxconfig.org/connect-to-wifi-from-the-linux-command-line
  • 4 個 Linux 下最好的命令行下載管理器/加速器
    有很多可以加速下載的下載管理器和加速器可用(圖形化界面和命令行界面)。所有的下載工具做著同樣的任務,但它們的處理方式和功能是不同的,比如,單線程和多線程、交互和非交互。 在這裡,我們將列出 4 個最好的我們日常工作使用的命令行下載加速器。
  • Linux 運維必備的 13 款實用工具,趕緊收藏~
    zxvf nethogs-0.8.0.tar.gz[root@localhost ~]# cd nethogs[root@localhost nethogs]# make && make install[root@localhost nethogs]# nethogs
  • 推薦 7 大 Linux GPU 監控和診斷命令行工具
    讓我們看一下解決問題的7大Linux GPU監視和診斷命令行工具。以下工具在Linux上可用於GPU監視和診斷目的,以及其他作業系統(例如FreeBSD)上運行。如今,大多數Linux和FreeBSD用戶都使用Nvidia,Intel和AMD GPU。我們可以使用以下工具來監視、診斷和檢查基於Linux或*BSD的系統。
  • 13 款 Linux 比較實用的工具!
    2、硬碟讀取性能測試-IOZoneIOZone是一款Linux文件系統性能測試工具 可以測試不同的作業系統中文件系統的讀寫性能。下載:http://www.iozone.org/src/current/# tar xvf iozone3_420.tar # cd iozone3_420/src/current/ # make linux # ./iozone -a -n 512m -g 16g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb .
  • 推薦 18 個終端命令行工具
    終端是程式設計師的必備工具之一,10 倍程式設計師的終端跟普通程式設計師有何不同?本文將介紹許多牛逼且實用的開源工具,用上這些工具後你不一定會變成 10 倍程式設計師,但絕對能夠讓你感覺自己像個 10 倍程式設計師。本文僅對工具做基本介紹,不提供安裝方法,因為這些工具的安裝方法在項目的 github 首頁上基本都會提供,在掘金上也能找到許多具體的使用教程。在終端準備部分介紹的工具是跟作業系統相關的,終端內的命令行工具則基本上是 跨平臺 的,可以在 mac、linux、windows 上使用。