如何在 Linux 中将一个命令输出传送到其他命令如何在 Linux 中将一个命令输出传送到其他命令如何在 Linux 中将一个命令输出传送到其他命令如何在 Linux 中将一个命令输出传送到其他命令
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中将一个命令输出传送到其他命令

使用命令行时,您可以直接传递一个程序的输出(例如生成某些系统信息或统计信息的工具)作为另一个程序的输入(例如 grep、sed 等文本过滤或模式搜索工具) awk,用于进一步处理),使用管道。

可与管道一起使用来构建命令行的两个最重要的命令行实用程序是:

  • xargs – 从标准输入读取数据流,然后生成并执行命令行。
  • tee – 从标准输入读取并同时写入标准输出和一个或多个文件。它更像是一个重定向命令。

将命令输出发送到 Linux 中的另一个命令

在这篇简单的文章中,我们将描述如何在 Linux 中使用 pipes、tee 和 xargs 命令从标准输入构建和执行多个命令。

使用管道的最简单语法如下,您可能已经在我们的许多 Linux 教程的命令中看到过该语法。但是您可以使用多个 Linux 命令构建更长的命令行。

command1 args | command2 args 
OR
command1 args | command2 args | command3 args ...

下面是使用管道将 dmesg 命令的输出传递到 head 命令的示例。

dmesg | head

Xargs – 将命令输出传递给其他命令

在此示例中,ls 命令输出将传递到另一个名为 xargs 的命令,该命令将多行输出连接到一行,如图所示。

ls -1 *.sh
ls -1 *.sh | xargs

要计算列表中每个文件的行数/单词数/字符数,请使用以下命令。

ls *.sh | xargs wc -l	    #count number of lines in each file
ls *.sh | xargs wc -w	    #count number of words in each file
ls *.sh | xargs wc -c	    #count number of characters in each file
ls *.sh | xargs wc	    #count lines, words, and characters in each file

下面的命令查找并递归删除当前目录中名为 All 的目录。

find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"

带有选项 -print0 操作的 find 命令可以在标准输出上打印完整目录路径,后跟一个空字符和 -0 xargs 标志处理文件名中的空格和删除目录的 rm -rf 命令。

您可以在这些文章中找到其他实用的xargs命令用法示例:

Tee – 将命令输出发送到其他命令并保存到文件

此示例演示如何将命令输出发送到标准输出并将其保存到文件中;下面的命令允许您按最高内存和 CPU 使用率查看 Linux 中运行最多的进程。

ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt
cat  topprocs.txt

要在现有文件中追加数据,请传递 -a 标志。

ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt 

您可以在 tee 和 xargs 手册页上找到更多信息。

man xargs
man tee

就这样!不要忘记查看我们的特别文章:A – Z Linux 命令 – 概述与示例。

在这篇文章中,我们描述了如何使用管道生成命令行; xargs 和 tee 命令。您可以通过下面的反馈表提出任何问题或分享任何想法。

©2015-2025 艾丽卡 support@alaica.com