GNU/Linux >> Linux の 問題 >  >> Linux

Lsからの出力には改行がありますが、1行で表示されます。なんで?

シェルに関しては比較的基本的なポイントを見落としているのではないかと思います。 lsからの出力 コマンドはデフォルトで出力を改行で区切りますが、シェルは出力を1行で表示します。

誰かが私にこれを説明できますか?出力は単にスペースで区切られているといつも思っていましたが、出力が改行で区切られているので、出力は別々の行に表示されると思います。

例:

[email protected]:~/lpi103-4$ ls text*
text1  text2  text3

od 出力が改行で区切られていることを示しています:

[email protected]:~/lpi103-4$ ls text* | od -c
0000000   t   e   x   t   1  n   t   e   x   t   2  n   t   e   x   t
0000020   3  n
0000022

改行が存在する場合、出力が次のように表示されないのはなぜですか。

text1 
text2
text3

承認された回答:

出力をパイプするとき、ls 動作が異なります。

この事実は情報ドキュメントに隠されています:

標準出力が端末の場合、出力は列(垂直方向にソート)になり、制御文字は疑問符として出力されます。それ以外の場合、出力は1行に1つずつリストされ、制御文字はそのまま出力されます。

それを証明するには、実行してみてください

ls

そして

ls | less

つまり、出力がパイプ処理されているかリダイレクトされているかに関係なく、出力が1行に1つのファイルであることを保証する場合は、実行する必要があります

ls -1

-1 ナンバーワンです)

または、ls | less 実行して列に出力するには

ls -C

-C 大文字ですC)


Linux
  1. パイプラインで`ping`からの出力の各ラインをすぐに処理しますか?

  2. 履歴から1行を削除する方法は?

  3. Linux –コマンドラインからPulseaudio出力デバイスをロバストに切り替える方法は?

  1. 終了した後、なぜPingの出力があるのですか?

  2. 出力列から冗長性を削除しますか?

  3. コマンドラインからHdmiへのオーディオ出力を変更するにはどうすればよいですか?

  1. Ls-lがLs-sとは異なるサイズを出力するのはなぜですか?

  2. 「du」の出力が「du -b」としばしば異なるのはなぜですか

  3. Linux コマンド出力の最初の行を省略する