unix命令手册 一套有用的 Unix 实用程序 | Linux 中国
还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了 moreutilis 这个日益增长的集合。-- Sk
有用的原文链接请访问文末的“原文链接”获得可点击的文内链接、全尺寸
还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了 moreutilis 这个日益增长的集合。-- Sk 有用的原文链接请访问文末的“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。致谢编译自| 作者|Sk 译者|Andy Song (pinewall) 共计翻译:35篇 贡献时间:156 天 我们都了解GNU 核心实用程序GNU Core Utilities,所有类 Unix 操作系统都预装了它们。它们是 GNU 操作系统中与文件、Shell 和 文本处理相关的基础实用工具。GNU 核心实用程序包括很多日常操作命令,例如cat、ls、rm、mkdir、rmdir、touch、tail和wc等。除了这些实用程序,还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了moreutilis这个日益增长的集合。moreutils可以在 GNU/Linux 和包括 FreeBSD,openBSD 及 Mac OS 在内的多种 Unix 类型操作系统上安装。 截至到编写这份指南时,moreutils提供如下实用程序: ?chronic– 运行程序并忽略正常运行的输出?combine– 使用布尔操作合并文件的行?errno– 查询 errno 名称及描述?ifdata– 获取网络接口信息,无需解析ifconfig的结果?ifne– 在标准输入非空的情况下运行程序?isutf8– 检查文件或标准输入是否采用 UTF-8 编码?lckdo– 带锁运行程序?mispipe– 使用管道连接两个命令,返回第一个命令的退出状态?parallel– 同时运行多个任务?pee– 将标准输入传递给多个管道?sponge– 整合标准输入并写入文件?ts– 为标准输入增加时间戳信息?vidir– 使用你默认的文本编辑器操作目录文件?vipe– 在管道中插入信息编辑?zrun– 自动解压并将其作为参数传递给命令 在 Linux 上安装 moreutils 由于moreutils已经被打包到多种 Linux 发行版中,你可以使用发行版对应的软件包管理器安装moreutils。 在Arch Linux或衍生的Antergos和Manjaro Linux上,运行如下命令安装moreutils:
在Fedora上,运行:
在RHEL,CentOS和Scientific Linux上,运行:
在Debian,Ubuntu和Linux Mint上,运行:
Moreutils – 打包更多有用的 Unix 实用程序 让我们看一下几个moreutils工具的用法细节。 combine 实用程序 正如combine名称所示,moreutils 中的这个实用程序可以使用包括and,not,or和xor在内的布尔操作,合并两个文件中的行。 ?and– 输出file1和file2都包含的行。?not– 输出file1包含但file2不包含的行。?or– 输出file1或file2包含的行。?xor– 输出仅被file1或file2包含的行 下面举例说明,方便你理解该实用程序的功能。这里有两个文件,文件名分别为file1和file2,其内容如下:
下面,我使用and布尔操作合并这两个文件。
从上例的输出中可以看出,and布尔操作只输出那些file1和file2都包含的行;更具体的来说,命令输出为两个文件共有的行,即 is,were 和 there。 下面我们换成not操作,观察一下输出。
从上面的输出中可以看出,not操作输出file1包含但file2不包含的行。 ifdata 实用程序 ifdata实用程序可用于检查网络接口是否存在,也可用于获取网络接口的信息,例如 IP 地址等。与预装的ifconfig和ip命令不同,ifdata的输出更容易解析,这种设计的初衷是便于在 Shell 脚本中使用。 如果希望查看某个接口的 IP 地址,不妨以wlp9s0为例,运行如下命令:
如果只查看掩码信息,运行如下命令:
如果查看网络接口的物理地址,运行如下命令:
如果判断接口是否存在,可以使用-pe参数:
pee 命令 该命令某种程度上类似于tee命令。 我们先用一个例子看一下tee的用法。
上述命令首先创建两个文件,名为file1和file2;接着,将 “Welcome to OSTechNix” 行分别附加到两个文件中;最后unix命令手册,在终端中打印输出 “Welcome to OSTechNix”。 pee命令提供类似的功能,但与tee又稍微有些差异。查看下面的例子:
从上面的命令输出中可以看出,有两个cat命令实例获取echo命令的输出并执行,因而终端中出现两个同样的输出。 sponge 实用程序 这是moreutils软件包中的另一个有用的实用程序。sponge读取标准输入并写入到指定的文件中。与 Shell 中的重定向不同,sponge接收到完整输入后再写入输出文件。 查看下面这个文本文件的内容:
可见,文件包含了一些无序的行;更具体的说,这些行“没有”按照字母顺序排序。如果希望将其内容安装字母顺序排序,你会怎么做呢?
这样做没错,对吧?当然没错!在上面的命令中,我将file1文件内容按照字母顺序排序,将排序后的内容保存在file1_sorted文件中。但如果使用sponge命令,你可以在不创建新文件(即file1_sorted)的情况下完成同样的任务,命令如下:
那么,让我们检查一下文件内容是否已经按照字母顺序排序:
看到了吧?并不需要创建新文件。在脚本编程中,这非常有用。另一个好消息是,如果待写入的文件已经存在,sponge会保持其权限信息permissions不变。 ts 实用程序 正如名称所示,ts命令在每一行输出的行首增加时间戳timestamp。 查看如下命令的输出:
下面,结合ts实用程序运行同样地命令:
对比输出可以看出,ts在每一行行首增加了时间戳。下面给出另一个例子:
vidir 实用程序 vidir实用程序可以让你使用vi编辑器(或其它$EDITOR环境变量指定的编辑器)编辑指定目录的内容。如果没有指定目录,vidir会默认编辑你当前的目录。 下面的命令编辑Desktop目录的内容:
vidir 上述命令使用vi编辑器打开了指定的目录,其中目录内的文件都会对应一个数字。下面你可以按照vi的操作方式来编辑目录中的这些文件:例如,删除行意味着删除目录中对应的文件,修改行中字符串意味着对文件进行重命名。 你也可以编辑子目录。下面的命令会编辑当前目录及所有子目录:
请注意命令结尾的-。如果-被指定为待编辑的目录,vidir会从标准输入读取一系列文件名,列出它们让你进行编辑。 如果你只想编辑当前目录下的文件,可以使用如下命令:
只想编辑特定类型的文件,例如.PNG文件?你可以使用如下命令:
这时命令只会编辑当前目录下以.PNG为后缀的文件。 vipe 实用程序 vipe命令可以让你使用默认编辑器接收 Unix 管道输入,编辑之后使用管道输出供下一个程序使用。 执行下面的命令会打开vi编辑器(当然是我默认使用的编辑器),你可以编辑echo命令的管道输入(即 “Welcome to OSTechNix”),最后将编辑过的内容输出到终端中。
从上面的输出可以看出,我通过管道将 “Welcome to OSTechNix” 输入到vi编辑器中,将内容编辑为 “Hello World”,最后显示该内容。 好了,就介绍这么多吧。我只介绍了一小部分实用程序,而moreutils包含更多有用的实用程序。我在文章开始的时候已经列出目前moreutils软件包内包含的实用程序,你可以通过man帮助页面获取更多相关命令的细节信息。举个例子,如果你想了解vidir命令,请运行:
希望这些内容对你有所帮助。我还将继续分享其它有趣且实用的指南,如果你认为这些内容对你有所帮助,请分享到社交网络或专业圈子,也欢迎你支持 OSTechNix 项目。 干杯! via: 作者:SK[2]选题:lujun9972译者:pinewall校对:wxy 本文由LCTT原创编译,Linux中国荣誉推出 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |