このコマンドが何をしているのかわかりません。その番号が何であるかを説明せずに、端末に3つの番号を生成します。ls -l
すべてのファイルをログリスト形式でリストし、単語数をリストするのは理解していますwc
が、数値が一致しないようです。
助けが必要ですか?
答え1
コマンドがわからない場合は、必ずそのマニュアルをお読みください。この場合、man wc
以下が表示されます。
DESCRIPTION
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. [...] A word is a non-zero-length
sequence of characters delimited by white space.
したがって、これらの3つの数字は、i)行数、ii)単語数、iii)バイト数です。したがって、このディレクトリで実行すると、次のようになります。
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file1
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file2
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file3
次を返します。
$ ls -l | wc
4 29 152
その理由は上に見られるように4以下を含む出力ライン29「単語」(単語は空白として定義)と合計152\n
バイト(ここには各行の末尾に改行()文字が含まれています。)
より簡単な例については、以下を試してください。
$ echo "foo" | wc
1 1 4
このコマンドはecho "foo"
実際にfoo\n
(\n
改行文字)を印刷するので、1行、1語、4バイトになります。
3番目のフィールドは、文字数ではなくバイト数です。これは、UTF-8(最近の標準になる傾向がある)を使用するのと同じように、文字を複数のバイトで構成できるロケールで特に重要です。
$ echo fée | wc
1 1 5
UTF-8では、é文字は2バイトで構成されています。この-m
オプションを使用した文字数m
(マルチバイト文字)。
$ echo fée | wc -m
4