实用!五款新型 Linux 命令行工具

作者 | Ricardo Gerardi

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

在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 [##########] /libvirt33.9 GiB [###       ] /.crc7.0 GiB [          ] /Projects
.   4.7 GiB [          ] /Downloads
.   3.9 GiB [          ] /.local2.5 GiB [          ] /.minishift2.4 GiB [          ] /.vagrant.d
.   1.9 GiB [          ] /.config
.   1.8 GiB [          ] /.cache1.7 GiB [          ] /Videos1.1 GiB [          ] /go692.6 MiB [          ] /Documents
. 591.5 MiB [          ] /tmp139.2 MiB [          ] /.var104.4 MiB [          ] /.oh-my-zsh82.0 MiB [          ] /scripts55.8 MiB [          ] /.mozilla54.6 MiB [          ] /.kube41.8 MiB [          ] /.vim31.5 MiB [          ] /.ansible31.3 MiB [          ] /.gem26.5 MiB [          ] /.VIM_UNDO_FILES15.3 MiB [          ] /Personal2.6 MiB [          ]  .ansible_module_generated1.4 MiB [          ] /backgrounds944.0 KiB [          ] /Pictures644.0 KiB [          ]  .zsh_history536.0 KiB [          ] /.ansible_asyncTotal disk usage: 159.4 GiB  Apparent size: 280.8 GiB  Items: 561540

你可以通过方向键导航到每个结果。如果在选中的结果上按下Enter,则ncdu将显示该目录的内容:

--- /home/rgerardi/libvirt ----------------------------------------------------/..91.3 GiB [##########] /images5.3 GiB [          ] /media

你可以深入各个目录,找出哪些文件占用的磁盘空间最多。使用左方向键可以返回到上一个目录。在默认情况下,你可以按d键删除文件,但在删除文件之前ncdu会要求确认。如果你想禁止删除操作以防止发生意外,则可以通过-r选项设置只读访问:ncdu -r。

ncdu可用于许多平台和Linux发行版。例如,你可以使用dnf从官方代码库直接将其安装在Fedora上:

$ sudo dnf install ncdu

更多有关该工具的信息,请参见:https://dev.yorhel.nl/ncdu。

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# curlTransfers 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。

用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台式机和笔记本电脑上管理和工作。

你是否使用其他工具来处理工作流程?请在下方留言。

原文:https://opensource.com/article/20/6/modern-linux-command-line-tools

本文为 CSDN 翻译,转载请注明来源出处。

推荐阅读
  • 浅谈分布式存储中的网络通信

  • 138 张图带你 MySQL 入门!

  • 如何在 Kubernetes 上配置 Jenkins?

  • 突发!印度封禁抖音、微信、快手等 59 款中国 App

  • 厉害!国内大学生计算机编程第一人,一人挑战一个队,百度最年轻 T10,现创业自动驾驶

  • Balancer因通缩代币STA遭遇闪电贷攻击,价值50万美元资产被黑

  • 浅谈分布式存储中的网络通信

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始入门 K8s | 手把手带你理解 etcd

导读&#xff1a;etcd 是用于共享配置和服务发现的分布式、一致性的 KV 存储系统。本文从 etcd 项目发展所经历的几个重要时刻开始&#xff0c;为大家介绍了 etcd 的总体架构及其设计中的基本原理。希望能够帮助大家更好的理解和使用 etcd。 一、etcd 项目的发展历程 etcd 诞生…

minio 单机安装、部署 centos7环境

文章目录一、默认模式下载运行1. 下载2. 访问minio控制台3. 创建目录3. 上传文件二、企业自定义模式2.1. 指定用户密码2.2. 配置目录2.3. 控制台端口2.4. 启动2.5. minio控制台登录2.6. 效果图一、默认模式下载运行 1. 下载 官网地址&#xff1a;https://docs.min.io/docs/ …

Kubernetes 日志查询分析实践

准备工作 为了完成后续的相关操作&#xff0c;我们需要准备一个 K8s 集群&#xff0c;操作步骤如下&#xff1a; 登陆容器服务控制台。创建一个标准托管集群&#xff08;杭州区域&#xff09;&#xff0c;在向导中勾选上【使用 EIP 暴露 API Server】 和【使用日志服务】。集…

“编程能力差,90%是输在这点上!”谷歌AI开发专家:逆袭并没那么难!

Google 人工智能开发者专家彭靖田老师说——超90%的程序员在初学Python 人工智能时&#xff0c;都会遇到下面3个问题&#xff1a;1.想入门人工智能&#xff0c;但不知从何学起&#xff0c;也不知道该选择什么方向...2.Python语法、机器学习/深度学习框架、算法都能看懂&#xf…

这群程序员疯了!他们想成为IT界最会带货的男人

随着网红主播越来越火&#xff0c;通过直播带货种草的形式也成了今年双12的热点。 不过&#xff0c;网红主播带货早已见怪不怪&#xff0c;但你们见过程序员直播带货吗!? 近日&#xff0c;趁着阿里云双12年末采购节&#xff0c;阿里云邀请了一波程序员GG来为大家直播带货&am…

Minio Docker 单机安装(二种模式) linux

文章目录一、默认单机启动1. docker安装启动2. minio 镜像拉取和启动3. minio登录二、minio纠删码模式2.1. 简述2.2. 启动2.3. minio登录2.4. 总览2.5. 上传文件测试一、默认单机启动 1. docker安装启动 # 在线安装docker yum install docker# 启动docker systemctl start do…

阿里巴巴 Service Mesh 落地的架构与挑战

导读&#xff1a;云原生已成为整个阿里巴巴经济体构建面向未来的技术基础设施&#xff0c;Service Mesh 作为云原生的关键技术之一&#xff0c;顺利完成在 双11 核心应用严苛而复杂场景下的落地验证。本文作者将与大家分享在完成这一目标过程中我们所面临和克服的挑战。 部署架…

看完这篇 HashMap ,和面试官扯皮就没问题了

来源 | Java 建设者责编 | Carol封图 | CSDN 下载自视觉中国&#xff08;如果你没有时间细抠本文&#xff0c;可以直接看 HashMap 概述&#xff0c;能让你对 HashMap 有个大致的了解&#xff09;HashMap 是 Map 接口的实现&#xff0c;HashMap 允许空的 key-value 键值对&#…

除了快,5G 有哪些关键技术?

阿里妹导读&#xff1a;5G不仅仅只是网速更快&#xff0c;更多的是生活方式的颠覆&#xff0c;对各行各业都会起到催化作用。5G里不仅仅只有大带宽&#xff0c;而是会有很多与B端用户&#xff08;企业&#xff09;相结合的点。接下来&#xff0c;跟阿里大文娱的梓烁一起了解5G的…

聚水潭是如何基于AnalyticDB for PostgreSQL 构筑海量实时数仓平台的

聚水潭数据仓库业务介绍 上海聚水潭网络科技有限公司成立于2014年。聚水潭创建之初&#xff0c;以电商SaaS ERP切入市场&#xff0c;凭借出色的产品和服务&#xff0c;快速获得市场领先地位。随着客户需求的不断变化&#xff0c;如今聚水潭已经发展成为以SaaS ERP为核心&#…

sqlite3的编译和使用

编译环境准备 这个是nw官网的环境搭建教程&#xff0c;一般需要python2.7、visual studio 2013、node-gyp、 node-pre-gyp&#xff0c;环境这块的文章很多自己可以百度http://docs.nwjs.io/en/latest/For Users/Advanced/Use Native%2 0Node%20Modules/ 编译好之后&#xff0…

阿里巴巴的 Kubernetes 应用管理实践经验与教训

导读&#xff1a;本文整理自孙健波在 ArchSummit 大会 2019 北京站演讲稿记录。首先介绍了阿里巴巴基于 Kubernetes 项目进行大规模应用实践过程中遇到的问题&#xff1b;随后会逐一介绍解决这些问题的现有实践及其本身存在的局限性&#xff1b;最后会介绍阿里巴巴目前正在进行…

Minio 分布式集群部署

文章目录一、分布式存储可靠性常用方法1. 概述2. 冗余3. 校验二、分布式Minio优势2.1. 数据保护2.2. 高可用2.3.一致性三、运行分布式Minio3.1. 启动方案简述3.2. 案例说明3.3. 制作分布式启动脚本3.4. 制作伪分布式启动脚本3.5. 登录minio四、分布式Minio负载均衡4.1. nginx安…

数据分析:为什么说Python比Excel更简单高效 ?

日本最大的证券公司之一野村证券首席数字官马修汉普森&#xff0c;在Quant Conference上发表讲话&#xff1a;“用Excel的人越来越少&#xff0c;大家都在用Python。”甚至直接说&#xff1a;“Python已经取代了Excel。”事实上&#xff0c;为了追求更高的效率和质量&#xff0…

快速搭建 Serverless 在线图片处理应用

简介 首先介绍下在本文出现的几个比较重要的概念&#xff1a; 函数计算&#xff08;Function Compute&#xff09;&#xff1a;函数计算是一个事件驱动的服务&#xff0c;通过函数计算&#xff0c;用户无需管理服务器等运行情况&#xff0c;只需编写代码并上传。函数计算准备计…

如何在 PyFlink 1.10 中自定义 Python UDF?

我们知道 PyFlink 是在 Apache Flink 1.9 版新增的&#xff0c;那么在 Apache Flink 1.10 中 Python UDF 功能支持的速度是否能够满足用户的急切需求呢&#xff1f; Python UDF 的发展趋势 直观的判断&#xff0c;PyFlink Python UDF 的功能也可以如上图一样能够迅速从幼苗变成…

Node.js从零开发Web Server博客项目笔记

代码运行流程 首先开启服务器&#xff0c;在npm run dev的时候运行了bin目录下的www.js文件&#xff0c;启动http服务 当前端进行访问的时候&#xff0c;经过app.js文件 App.js是整个项目的入口文件&#xff0c;首先判断这个用户在http的header头中带了那些验证的信息&#…

如何度过二十多岁这段又穷又迷茫的岁月?

我们在后台常常会收到读者的留言我马上毕业了&#xff0c;但是现在很迷茫&#xff0c;不知道学校里学的&#xff0c;能不能真正的适应工作...我工作两三年&#xff0c;还是不知道怎么规划自己的技术成长路线&#xff0c;不知道该学什么来提升自己的竞争力...人生需要长线的经营…

Docker-compose 安装Minio 最新版本

文章目录一、环境准备1.安装docker-compose2. 新版本尝鲜3. 镜像下载二、单机编排2.1. 创建docker-compose.yaml2.2. 运行三、集群编排3.1. 下载docker-compose.yaml3.2. nginx.conf3.3.运行一、环境准备 1.安装docker-compose https://gblfy.blog.csdn.net/article/details/…

神龙架构没那么难理解—图解世界领先的阿里云神龙架构(一)缘起

1 概述 1.1 神龙架构的特点 阿里云官方文档对于神龙架构的描述如下&#xff1a; 保留了普通云服务器的资源弹性&#xff0c;并因嵌套虚拟化技术让弹性裸金属服务器保留了物理机的体验。 1.2 理解上的难点 同时拥有云服务器的资源弹性和保留了物理机体验的特点容易让用户在…