首頁  >  文章  >  系統教程  >  分享5個基本Linux命令列工具的現代化替代品

分享5個基本Linux命令列工具的現代化替代品

WBOY
WBOY轉載
2024-02-05 12:10:12976瀏覽

在日常使用 Linux/Unix 系統時,我們經常使用各種命令列工具來管理系統和理解系統的運作情況。例如,du 指令用於監視磁碟利用率,top 指令用於顯示系統資源。其中一些工具已經存在了很長時間,例如 top 命令於1984年首次發布,而 du 命令的首次發布可追溯到1971年。

這些工具經過多年的發展,已經從原始的形式逐漸演化為現代化的版本,並被移植到不同的系統上。然而,儘管有現代化的變化,這些工具仍然保持著它們最初的思想和使用者體驗。

這些工具對於系統管理員的工作流程非常重要,是不可或缺的。然而,在過去幾年中,開源社群已經發展了一些替代工具,它們帶來了額外的好處。有些新工具可能比較華而不實,但有些工具則大大提高了可用性,使其成為現代化系統上的最佳選擇。以下介紹了五個替代標準 Linux 命令列工具的工具。

1. ncdu 作為 du 的替代品

#NCurses 磁碟利用率(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

要了解關於這個工具的更多信息,請查看 ncdu 頁面。

https://dev.yorhel.nl/ncdu

2作為 top 替代品的 htop

htop 是一個類似 top 的互動式流程檢視器,但它提供了更好的開箱即用的使用者體驗。預設情況下,htop 會以令人愉悅的彩色顯示與 top 相同的指標。

預設情況下,htop 是這樣的:

分享5個基本Linux命令列工具的現代化替代品

相較之下,top 預設是這樣的:

分享5個基本Linux命令列工具的現代化替代品

此外,htop 在頂部提供了系統概覽信息,在底部提供了一個命令欄,可以使用功能鍵來觸發命令,而且,你還可以按 F2 進入設定界面對它進行定制。你可以變更其顏色、新增或刪除指標,或變更概覽欄的顯示選項。

雖然對於最新版本的 top,你也可以透過配置實現類似的結果,但 htop 提供了更合理的預設配置,這使得它成為一個漂亮且易於使用的流程檢視器。

要了解關於這個項目的更多信息,請查看 htop 首頁。

https://hisham.hm/htop/

3作為 man 替代品的 tldr

#tldr 命令列工具顯示簡化的命令用法訊息,主要包括範例。它是作為社群專案 tldr pages 的客戶端。

這個工具不能取代 man。 man 頁面仍然是許多工具規範而完整的資訊來源。然而,在某些情況下,man 提供的資訊太多了。有時候,你不需要一個命令的所有資訊;你只是試著記住基本的選項。例如,curl 指令的 man 頁面幾乎有 3000 行。相反,curl 的 tldr 頁面只有 40 行,如下所示:

$ tldr curl
# curl
  Transfers data from or to a server.
  Supports most protocols, including HTTP, FTP, and POP3.
  More information: .
- 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’t read」的縮寫,指對一篇很長的文章進行總結。這個名稱很適合這個工具,因為 man 頁面雖然有用,但有時太長了。

在 Fedora 中,tldr 用戶端是用 Python 寫的。你可以使用 dnf 安裝它。若要了解其他客戶端選項,請參閱 tldr pages 專案頁面。

https://tldr.sh/

一般來說,tldr 工具需要存取網路以查閱 tldr pages。 Fedora 中的 Python 用戶端可讓你下載並快取這些頁面以供離線存取。

要了解有關 tldr 的更多信息,可以使用 tldr tldr。

4作為 sed/grep 替代品的 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 和 sed 就可能提供不同的结果。

jq 有许多特性,要介绍所有这些特性的话,需要另写一篇文章。要了解更多信息,请参阅 jq 项目页、man 页面或 tldr jq。

https://stedolan.github.io/jq/

5作为 find 替代品的 fd

fd 是 find 命令的一个简单而快速的替代品。它的目的不是取代 find 提供的全部功能;相反,它提供了一些合理的默认值,在某些情况下非常有用。

例如,在包含 Git 存储库的目录中搜索源代码文件时,fd 会自动排除隐藏的文件和目录,包括. .git 目录,并忽略.gitignore 文件中的模式。一般来说,它的搜索速度更快,而且第一次搜索时提供了更多相关的结果。

默认情况下,fd 在当前目录中执行不区分大小写的模式搜索,输出是彩色的。使用 find 进行相同的搜索需要你提供额外的命令行参数。例如,在当前目录中搜索所有的 markdown 文件(.md 或.MD ),find 命令如下:

$ find . -iname "*.md"

使用 fd 进行同样的搜索:

$ fd .md

在某些情况下,fd 需要额外的选项;例如,如果你想包含隐藏文件和目录,则必须使用选项 -H,而这在 find 中是不需要的。

fd 可用于许多 Linux 发行版。执行以下命令,可以使用标准存储库在 Fedora 中安装:

$ sudo dnf install fd-find

要了解更多信息,请查阅 fd GitHub 存储库。

https://github.com/sharkdp/fd/

6其他替代品

虽然我仍然经常使用所有旧的基本工具,特别是在远程连接到服务器时,但这些替代品额外提供了一些在许多场景中都非常有用的好处。特别是,它们对我在 Linux 台式机和笔记本电脑上的工作帮助很大。

你的工作流中是否使用了其他工具?欢迎在下面的评论区补充。

7作者介绍

Ricardo Gerardi 是加拿大红帽公司的高级顾问,他专门从事基于 Ansible 和 Openshift 的 IT 自动化。他有丰富的电信行业经验,曾在 TELUS 担任高级架构师,并曾在 IBM 巴西和 IBM 加拿大担任网络管理解决方案的高级顾问和售前专家长达 13 年。Ricardo 是一个超过 20 年的 Linux 爱好者。他目前感兴趣的是用 Go 编程来破解东西……

以上是分享5個基本Linux命令列工具的現代化替代品的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lxlinux.net。如有侵權,請聯絡admin@php.cn刪除