幸福一箩筐|如何在Linux上使用xargs命令
大家好 , 我是良许 。
在使用 Linux 时 , 你是否遇到过需要将一些命令串在一起 , 但是其中一个命令不接受管道输入的情况呢?在这种情况下 , 我们就可以使用 xargs 命令 。 xargs 可以将一个命令的输出作为参数发送给另一个命令 。
在 Linux 中 , 所有标准的应用程序都有与之关联的三个数据流 。 分别是标准输入流(stdin) , 标准输出流(stdout)和标准错误流(stderr) 。 这些流通过文本来运行 , 我们使用文本将输入(stdin)发送到命令 , 然后响应(stdout)将会以文本形式显示在终端窗口上 。 错误消息也以文本的形式显示在终端窗口上(stderr) 。
Linux 和类 Unix 操作系统的一大功能是可以将一个命令的标准输出流传递到另一个命令的标准输入流 。 第一个命令不会管它的输出是否写到了终端窗口 , 第二个命令也不会管它的输入是否来自键盘 。
虽然所有 Linux 命令都有三个标准流 , 但是并不是所有命令都接受另一个命令的标准输出作为它的标准输入流的输入 。 因此我们无法通过管道将输入传给这些命令 。
xargs是一个使用标准数据流构建执行管道的命令 。 通过使用xargs命令我们可以使 echo , rm 和 mkdir 等命令接受标准输入作为它们的参数 。
xargs命令xargs接受管道输入 , 也可以接受来自文件的输入 。 xargs 使用该输入作为我们指定的命令的参数 。 如果我们没有给xargs指定特定的命令 , 则默认使用 echo 。 xargs 始终生成单行输出 , 即使输入的数据是多行的 。
假如我们使用 ls 的 -1(每行列出一个文件)选项 , 则会得到一列文件名称:
$ ls -1 ./*.sh这一命令列出了当前目录中的 Shell 脚本文件 。
如果我们将输出结果通过管道传递给 xargs, 会得到什么样的效果?
$ ls -1 ./*.sh | xargs可以看出来 , 输出以一长串文本的形式写到了终端上 。 由此可见 , xargs 可以将输出作为参数传递给其他命令 。
配合wc命令使用xargs我们可以使用 xargs 命令轻松地让 wc 命令计算多个文件中的单词数 , 字符数和行数
$ ls *.c | xargs wc执行结果如下:
命令运行结果显示了每个文件的统计信息以及总数 。
【幸福一箩筐|如何在Linux上使用xargs命令】这条命令执行了以下操作:
- ls列出了所有的 .page 文件 , 并将该列表传给了xargs 。
- xargs 将所有文件名传递给 wc 。
- wc 将这些文件名作为命令行参数进行处理 。
如果我们通过 xargs 将一串文件名的字符串传递给 touch 命令 , touch 将创建这些文件 。
$ echo 'one two three' | xargs -p touch我们按下y和 Enter, 然后使用ls用来检查文件是否已经创建 。
推荐阅读
- 笙笙千离|惠若琪李宇春同框颁奖,春春身高176还自卑,巨人身高收获幸福
- 资讯早知道|9年后再看《步步惊心》,发现若曦无论跟谁都不会幸福
- 弹钢琴|原创吉娜为1岁宠物兔庆生,郎朗弹钢琴助兴,幸福温馨像一家三口
- 人民日报|岳阳君山区:消费扶贫托起贫困户稳稳的幸福
- “全国人大 ”微信公众号|何健忠:以实施民法典提升人民美好生活的“幸福指数”
- 经济日报-中国经济网|【幸福花开新边疆】219国道旁的“脱贫事”
- 新华网|【幸福花开新边疆】奋发学技能 靠己奔小康
- 【幸福花开新边疆】奋发学技能 靠己奔小康
- 【幸福花开新边疆】219国道旁的“脱贫事”
- 岳阳君山区:消费扶贫托起贫困户稳稳的幸福
