Pipe

’ls | 是什麼意思?排序file.txt’ 做什麼?

  • August 14, 2020

我只是在學習 shell 命令;更具體地說,我正在學習管道。

現在我無法分辨以下命令之間的區別:ls | sort file.txtsort file.txt. 顯然,應該有區別。

請問有人可以解釋發生了什麼嗎?

ls | sort file.txt這兩個命令的可見結果sort file.txt是相同的:

sort file.txt``file.txt按字典順序對行進行排序並輸出結果。

ls | sort file.txt呼叫ls以生成目前目錄中的名稱列表。該列表被發送到sort file.txt. 由於sort正在讀取 from file.txt,它將忽略來自的名稱列表,ls而是生成 的排序內容file.txt作為輸出。的輸出ls被丟棄,因為sort在這種情況下沒有從其標準輸入中讀取。

您可能想使用ls | sortwhich 會對輸出的行進行排序ls(本來已經排序)。 sort會讀取 的輸出,ls因為它沒有被指定任何特定的文件名來讀取,因此是從其標準輸入流(ls通過管道連接到輸出流)讀取的。請注意,使用需要文本行的工具可能無法處理 Unix 文件名,因為這些文件名可能包含換行符。

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