管道命令的作用是將一個命令/程式/進程的輸出傳送給另一個命令/程式/進程,以便將輸出結果進行進一步的處理。我們可以通過使用管道命令把多個命令組合起來,使一個命令的標準輸入或輸出重定向到另一個命令。兩個或多個 Linux 命令之間的豎線字元(|
)表示在命令之間使用管道命令。管道命令的一般語法如下所示:
Command-1 | Command-2 | Command-3 | …| Command-N
Ultimate Plumber(簡稱 UP)是一個命令列工具,它可以用於即時預覽管道命令結果。如果你在使用 Linux 時經常會用到管道命令,就可以通過它更好地運用管道命令了。它可以預先顯示執行管道命令後的結果,而且是即時捲動地顯示,讓你可以輕鬆構建複雜的管道。
下文將會介紹如何安裝 UP 並用它將複雜管道命令的編寫變得簡單。
重要警告:
在生產環境中請謹慎使用 UP!在使用它的過程中,有可能會在無意中刪除重要資料,尤其是搭配 rm
或 dd
命令時需要更加小心。勿謂言之不預。
下面給出一個簡單的例子介紹 up
的使用方法。如果需要將 lshw
命令的輸出傳遞給 up
,只需要在終端中輸入以下命令,然後回車:
$ lshw |& up
你會在螢幕頂部看到一個輸入框,如下圖所示。
在輸入命令的過程中,輸入管道符號並回車,就可以立即執行已經輸入了的命令。Ultimate Plumber 會在下方的可捲動視窗中即時顯示管道命令的輸出。在這種狀態下,你可以通過 PgUp
/PgDn
鍵或 ctrl + ←
/ctrl + →
組合鍵來檢視結果。
當你滿意執行結果之後,可以使用 ctrl + x
組合鍵退出 UP
。而退出前編寫的管道命令則會儲存在當前工作目錄的檔案中,並命名為 up1.sh
。如果這個檔名已經被佔用,就會命名為 up2.sh
、up3.sh
等等以此類推,直到第 1000 個檔案。如果你不需要將管道命令儲存輸出,只需要使用 ctrl + c
組合鍵退出即可。
通過 cat
命令可以檢視 upX.sh
檔案的內容。例如以下是我的 up2.sh
檔案的輸出內容:
$ cat up2.sh#!/bin/bashgrep network -A5 | grep : | cut -d: -f2- | paste - -
如果通過管道傳送到 up
的命令執行時間太長,終端視窗的左上角會顯示一個波浪號(~)字元,這就表示 up
在等待前一個命令的輸出結果作為輸入。在這種情況下,你可能需要使用 ctrl + s
組合鍵暫時凍結 up
的輸入緩衝區大小。在需要解凍的時候,使用 ctrl + q
組合鍵即可。Ultimate Plumber 的輸入緩衝區大小一般為 40 MB,到達這個限制之後,螢幕的左上角會顯示一個加號。
以下是 up
命令的一個簡單演示:
喜歡這個工具的話,你可以在你的 Linux 系統上安裝使用。安裝過程也相當簡單,只需要在終端裡執行以下兩個命令就可以安裝 up
了。
首先從 Ultimate Plumber 的發布頁面下載最新的二進位制檔案,並將放在你系統的某個路徑下,例如 /usr/local/bin/
。
$ sudo wget -O /usr/local/bin/up wget https://github.com/akavel/up/releases/download/v0.2.1/up
然後向 up
二進位制檔案賦予可執行許可權:
$ sudo chmod a+x /usr/local/bin/up
至此,你已經完成了 up
的安裝,可以開始編寫你的管道命令了。