使用命令行时,您可以直接传递一个程序的输出(例如生成某些系统信息或统计信息的工具)作为另一个程序的输入(例如grep、sed等文本过滤或模式搜索工具awk,用于进一步处理),使用管道。
可与管道一起使用来构建命令行的两个最重要的命令行实用程序是:
- xargs – 从标准输入读取数据流,然后生成并执行命令行。
- tee – 从标准输入读取并同时写入标准输出和一个或多个文件。它更像是一个重定向命令。
将命令输出发送到 Linux 中的另一个命令
在这篇简单的文章中,我们将描述如何在 Linux 中使用Pipes、tee和xargs命令从标准输入构建和执行多个命令。
使用管道的最简单语法如下,您可能已经在我们的许多 Linux 教程的命令中看到过这种语法。但是您可以使用多个 Linux 命令构建更长的命令行。
$ 命令1 参数| 命令2参数 或者 # 命令1 参数| 命令2参数| 命令3 参数...
下面是使用管道将dmesg 命令的输出传递到head 命令的示例。
$ dmesg | 头
![](https://www.alaica.com/wp-content/uploads/linux-206.png)
Xargs – 将命令输出传递给其他命令
在此示例中,ls 命令输出将传递到另一个名为xargs的命令,该命令将多行输出连接到一行,如图所示。
$ ls -1 *.sh $ ls -1 *.sh | 参数
![](https://www.alaica.com/wp-content/uploads/linux-207.png)
要计算列表中每个文件的行数/单词数/字符数,请使用以下命令。
$ ls *.sh | xargs wc -l #count每个文件的行数 $ ls *.sh | xargs wc -w #统计每个文件中的单词数 $ ls *.sh | xargs wc -c #count每个文件的字符数 $ ls *.sh | xargs wc #计算每个文件中的行数、单词数和字符数
![](https://www.alaica.com/wp-content/uploads/linux-208.png)
下面的命令查找并递归删除当前目录中指定的目录。All
$ 查找 . -名称“全部”-type d -print0 | xargs -0 /bin/rm -rf "{}"
带有选项操作的find命令-print0
可以在标准输出上打印完整目录路径,后跟一个空字符和-0 xargs
处理文件名中空格的标志,以及用于删除目录的rm -rf 命令。
您可以在这些文章中找到其他实用的xargs 命令用法示例:
Tee – 将命令输出发送到其他命令并保存到文件
此示例演示如何将命令输出发送到标准输出并将其保存到文件中;下面的命令允许您按最高内存和 CPU 使用率查看 Linux 中运行最多的进程。
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | 头| T 恤 topprocs.txt $ cat topprocs.txt
![](https://www.alaica.com/wp-content/uploads/linux-209.png)
要在现有文件中追加数据,请传递该-a
标志。
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | 头| tee -a topprocs.txt
您可以在tee和xargs手册页上找到更多信息。
$ 人 xargs $ 男士 T 恤
就这样!不要忘记查看我们的特别文章:A – Z Linux 命令 – 概述与示例。
在这篇文章中,我们描述了如何使用管道生成命令行;xargs和tee命令。您可以通过下面的反馈表提出任何问题或分享任何想法。