使用命令行時,您可以直接將一個程序(例如生成某些系統信息或統計信息的工具)的輸出作為另一個程序(例如文本過濾或模式搜索工具,如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手冊頁上找到更多信息:
就這樣!