Pipe
’ls | 是什麼意思?排序file.txt’ 做什麼?
我只是在學習 shell 命令;更具體地說,我正在學習管道。
現在我無法分辨以下命令之間的區別:
ls | sort file.txt
和sort file.txt
. 顯然,應該有區別。請問有人可以解釋發生了什麼嗎?
ls | sort file.txt
這兩個命令的可見結果sort file.txt
是相同的:
sort file.txt``file.txt
按字典順序對行進行排序並輸出結果。
ls | sort file.txt
呼叫ls
以生成目前目錄中的名稱列表。該列表被發送到sort file.txt
. 由於sort
正在讀取 fromfile.txt
,它將忽略來自的名稱列表,ls
而是生成 的排序內容file.txt
作為輸出。的輸出ls
被丟棄,因為sort
在這種情況下沒有從其標準輸入中讀取。您可能想使用
ls | sort
which 會對輸出的行進行排序ls
(本來已經排序)。sort
會讀取 的輸出,ls
因為它沒有被指定任何特定的文件名來讀取,因此是從其標準輸入流(ls
通過管道連接到輸出流)讀取的。請注意,使用需要文本行的工具可能無法處理 Unix 文件名,因為這些文件名可能包含換行符。