ls
出力が端末に送信されるかどうかをテストします。出力が端末に送られない場合、それ-1
がデフォルトです。(これは、のいずれかによって上書きすることができ-C
、-m
または-x
オプション)。
したがって、ls
がパイプラインで使用され、別のオプションで上書きされていない場合、ls
を使用します-1
。 この動作はPOSIXで必要とされるため、これに依存できます。
POSIX仕様
POSIXでは-1
、出力が端末に送信されない場合は常にデフォルトとして必要です。
POSIX仕様:
デフォルトの形式は、標準出力への行ごとに1つのエントリをリストすることです。例外は端末に対するものであるか、-C、-m、または-xオプションのいずれかが指定されている場合です。出力が端末への場合、形式は実装定義です。
デフォルトの単一列形式をオーバーライドするこれらの3つのオプションは次のとおりです。
-C
照合順序に従って、列をソートしたエントリでマルチテキスト列出力を書き込みます。テキスト列の数と列区切り文字は指定されていませんが、出力デバイスの性質に合わせて調整する必要があります。このオプションは、長い形式の出力を無効にします。
-m
ストリーム出力形式。<comma>文字とそれに続く<space>文字で区切られた、ページ全体のパス名をリストします。次のリストエントリの行にスペースがない場合は、リストターミネータとして、およびセパレータシーケンスの後に<newline>文字を使用します。このオプションは、長い形式の出力を無効にします。
-x
-Cと同じです。ただし、複数テキスト列出力は、列ではなく列全体でソートされたエントリで生成されます。このオプションは、長い形式の出力を無効にします。
GNUドキュメント
GNU lsマニュアルから:
'-1'
'--format = single-column'
1行に1つのファイルをリストします。これは、標準出力が端末でない場合のlsのデフォルトです。ファイル名内の改行文字の直接出力を抑制するには、-bおよび-qオプションも参照してください。[エンファシスの追加]
例
3つのファイルを作成しましょう。
$ touch file{1..3}
出力が端末に送られるとき、GNU ls
は複数列形式の使用を選択します。
$ ls
file1 file2 file3
出力がパイプラインに送られる場合、POSIX仕様では、単一列がデフォルトであることが必要です。
$ ls | cat
file1
file2
file3
デフォルトの単一列の動作をオーバーライドする3つの例外は-m
、コンマ区切り、-C
ソートさ-x
れた列、およびソートされた列です。
$ ls -m | cat
file1, file2, file3
$ ls -C | cat
file1 file2 file3
$ ls -x | cat
file1 file2 file3
n=0; for i in .* *; do ((n++)) ; done ; echo $n
(ドロップ*あなたがそれらのものをカウントしたくない場合。)。または:(ls -1d ./.* ./* | grep '^\./' | wc -l
ファイル名に「/」を含めることはできません)