次のコマンドを検討してください。
ls
dir1 dir2 file1
x1 x2 y2
この出力がgrepなどにパイプされると、各ファイル/ディレクトリは「アイテム」として扱われます。
ls | grep f
file1
ls
明らかに、aによって生成された実際の出力とgrepによって処理された入力の間に違いがあります。
ls | grep f
grepは行で機能するため、最初の行全体が表示されると予想できます。dir1 dir2 file1
私がここで何を見逃しているのでしょうか?この動作のメカニズムは何ですか?
答え1
コマンドは、出力がTTYに送信されるタイミングを検出できます。したがって、この特別な場合、ls
出力がTTYに送信されないことを検出すると、それはパラメータとして渡されたかの-1
ように動作します。
grep
以下を使用して特別なことをしないことがわかりますcat
。
ls | cat
答え2
リダイレクトされたときに出力がどのように動作するかを確認するには、ls
次の手順を実行します。
ls | cat
または
ls -1
これはls
、出力がTTYに送信されないときに機能する方法です。