旧Linux命令行工具的5种现代替代品

使用更多现代替代方案以及旧的命令行工具,您可以获得更多乐趣,甚至可以提高生产率。







在Linux / Unix上的日常工作中,我们使用许多命令行工具-例如du监视磁盘使用情况和系统资源。其中一些工具已经存在很长时间了。例如,top出现在1984年,而du的第一次发布是在1971年。



多年以来,这些工具已经过现代化改造并移植到不同的系统中,但是总的来说,它们与最初的版本并没有什么不同,它们的外观和可用性也没有太大变化。



这些是许多系统管理员所需的出色工具。但是,社区已经开发了提供其他好处的替代工具。它们中的一些仅具有现代,美观的界面,而其他一些则大大提高了可用性。在此翻译中,我们将讨论标准Linux命令行工具的五个替代方法。



1.ncdu vs du



NCurses磁盘使用情况(ncdu)与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 vs顶部



Htop是一个交互式过程查看器,与top相似,但是提供了开箱即用的愉快用户体验。默认情况下,htop显示与top相同的信息,但是以更直观和丰富多彩的方式显示。



默认情况下,htop如下所示:





与top不同:





此外,htop在顶部显示系统概述,在底部显示用于使用功能键运行命令的面板。您可以通过按F2打开自定义屏幕来对其进行自定义。在设置中,您可以更改颜色,添加或删除指标或更改概述窗格的显示选项。



尽管通过调整最新最高版本的设置也可以实现类似的可用性,但是htop提供了方便的默认配置,这使其更实用,更易于使用。



3. tldr vs man



tldr命令行工具显示简化的命令参考信息,主要是示例。它是由tldr pages项目社区开发的



值得注意的是,tldr不能替代人。它仍然是显示手册页的规范和最全面的工具。但是,在某些情况下,人是多余的。当您不需要有关任何团队的全面信息时,您只需尝试记住其使用的主要选项。例如,curl的手册页几乎为3000行。卷曲的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管理器进行安装。通常,该工具需要Internet访问才能工作。但是Fedora Python客户端允许您下载和缓存这些页面以供离线访问。



4.jq vs 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返回所有包含单词名称的行。您可以向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 vs查找



fd是一种轻量级的替代品。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.4 GHz。最高配置将使您充分利用-128个CPU内核,512 GB RAM,4000 GB NVMe。赶快订购!






All Articles