lsの出力には改行文字がありますが、1行に表示されます。なぜ?

lsの出力には改行文字がありますが、1行に表示されます。なぜ?

私はシェルに関する比較的基本的な点を見落としたかもしれないと思います。出力エルエスデフォルトでは、コマンドは出力を改行で区切りますが、シェルは出力を1行に表示します。

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

例:

cpoweradm@debian:~/lpi103-4$ ls text*
text1  text2  text3

OD改行で区切られた出力を表示します。

cpoweradm@debian:~/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

ベストアンサー1

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

この事実は隠されています情報文書:

標準出力が端末の場合、出力は列に並べられ(縦に並べられ)、制御文字は疑問符として出力されます。それ以外の場合、出力は 1 行に 1 つずつ表示され、制御文字がそのまま出力されます。

これを実演するには、以下を実行してください。

ls

それから

ls | less

これは、パイプまたはリダイレクトのいずれに関係なく、1行に1つのファイル出力を保証するには、次のように実行する必要があることを意味します。

ls -1

-11位です)

あるいは、以下をls | less実行して列ごとに強制的に出力することもできます。

ls -C

-C大文字Cです)

おすすめ記事