私はシェルに関する比較的基本的な点を見落としたかもしれないと思います。出力エルエスデフォルトでは、コマンドは出力を改行で区切りますが、シェルは出力を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
(-1
1位です)
あるいは、以下をls | less
実行して列ごとに強制的に出力することもできます。
ls -C
(-C
大文字Cです)