私はただシェルコマンドを学んでいます。具体的にはパイプを学んでいます。
ls | sort file.txt
これsort file.txt
で、次のコマンドを区別できません。明らかに違いがあるはずです。
誰かが何が起こっているのか説明してもらえますか?
答え1
両方のコマンドの表示結果は同じls | sort file.txt
です。sort file.txt
sort file.txt
行をアルファベット順に並べ替え、file.txt
結果を印刷します。
ls | sort file.txt
ls
現在のディレクトリに名前リストを生成するために呼び出されます。このリストは から読み取られるので、sort file.txt
の名前リストを無視し、代わりにソートされたコンテンツを出力として生成します。この場合、標準入力から何も読み取っていないため、出力は破棄されます。sort
file.txt
ls
file.txt
ls
sort
ls | sort
これを使用して、出力行ls
(すでにソートされている)をソートできます。sort
読み取る出力は、読み取る特定のファイル名が指定されていないため、ls
標準入力ストリーム(パイプ付き出力ストリーム)から読み取られます。ls
ただし、Unixファイル名は、テキスト行が必要なツールを使用して処理されない場合があります。これらのファイル名には改行文字を含めることができるからです。