Pipe

貓和管道與重定向

  • September 2, 2018

這兩個命令有什麼區別?

cat /proc/uptime | awk '{print $1}'

< /proc/uptime awk '{print $1}'

具體來說,第二個命令是如何工作的?重定向操作符不是<必須帶有命令嗎?像這樣重定向文件的內容是什麼意思?

一般來說,在 bash 腳本foo < bar< bar foo是等價的。任何時候< filename都由 shell 處理,這意味著與其關聯的命令將具有來自該文件的標準輸入。這不涉及額外的命令或過程;外殼自己做。

執行cat filename讀取指定文件的內容並將它們寫入標準輸出。|在兩個命令之間意味著將左側命令的標準輸出連接到右側命令的標準輸入。

因此,您的兩個命令都具有將內容髮送/proc/uptime到 awk 的相同效果,但第一種方式會啟動一個額外的cat過程來執行此操作。

引用自:https://unix.stackexchange.com/questions/466463