3つのファイルを含むフォルダがあります。
$ ls
a b c
出力ls
をにパイプするとwc
正しい結果が得られます。
$ ls | wc -l
3
ただし、入力をwc
出力として指定すると、追加のls
テキストが表示されます。
$ wc -l <(ls)
3 /dev/fd/63
何が起こっているのか私に説明できる人はいますか?
答え1
wc
可能であれば、作業中のファイルが何であるかをお知らせします。パイプを含む最初のファイルはファイルではなく標準入力から読み取られるため、ファイル名は報告されません。ただし、2番目は、コマンドの出力をファイルとして表示してwc
報告するプロセス置換を使用しています。読み取ったファイル記述子を報告します。