如何在 Linux 中使用 Tee 和 Xargs 从标准输入运行命令

系统 Linux
在本文中,我们描述了如何使用管道生成命令行:xargs 和 tee 命令。

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

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

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

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

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

$ command1 args | command2 args 
或者
# command1 args | command2 args | command3 args ...

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

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                              
sudo su
[sudo] linuxmi 的密码:
Linux迷 www.linuxmi.com> dmesg | head

将命令输出传递给另一个命令

如何使用 xargs 运行命令

在此示例中,第二个命令使用 xargs 将多行输出转换为单行:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                              
ls -1 *.sh
install.sh
linuxmi.com.sh
www.linuxmi.com.sh

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
ls -1 *.sh | xargs
install.sh linuxmi.com.sh www.linuxmi.com.sh

使用 Xargs 运行命令

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

$ ls *.sh | xargs wc -l #统计每个文件的行数
$ ls *.sh | xargs wc -w #统计每个文件的字数
$ ls *.sh | xargs wc -c #统计每个文件的字符数
$ ls *.sh | xargs wc #计算每个文件中的行数、单词数和字符数

使用 Xargs 计算文件字数

下面的命令查找并递归删除在当前目录中命名为 linuxmi 的目录:

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

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

如何在 Linux 中通过命令使用 Tee

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

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

将命令输出保存到文件

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

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                              
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a linuxmi.com.txt

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

$ man xargs
$ man tee

就这样!

责任编辑:赵宁宁 来源: Linux迷
相关推荐

2022-10-25 09:07:28

Linuxxargs命令

2020-08-24 12:37:54

Linuxxargs命令

2018-06-26 09:15:24

Linux命令history

2018-05-16 10:32:06

Linux命令find

2022-11-18 10:16:26

Linuxwc 命令

2023-09-14 15:05:33

grep正则表达式

2021-01-13 09:40:26

Linuxexport命令

2017-02-06 18:00:26

Linuxsudo命令

2019-09-16 19:00:48

Linux变量

2023-01-31 17:36:22

IPLinux网络

2021-07-13 07:52:02

Linuxgrep命令

2018-04-28 09:12:42

Linux

2022-05-25 08:41:48

Linuxfd 命令文件

2021-07-20 10:00:28

Linuxgrep命令

2015-12-16 16:01:13

2022-03-30 09:32:32

BashtestLinux

2022-11-21 12:06:24

fgrep命令Linux

2022-11-07 12:52:25

Linuxfsck命令

2023-02-27 17:36:33

LinuxSIGINT信号

2023-11-22 07:54:33

Xargs命令Linux
点赞
收藏

51CTO技术栈公众号