旧 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 个现代替代品

来源: habr.com

添加评论