在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。赶快订购!