プロセス置換を使用するときにstdinを使用することとstdinを使用することの_<
違いは何ですか?<
これはbashを使用して行われます。
例:
read bytes _< <(du -bcm random_iso.iso | tail -1); echo $bytes
ベストアンサー1
これは_<
演算子ではなく、_
読み取りおよび<
リダイレクト演算子に渡される引数です。<(cmd)
これはプロセス交換自体です(パイプを指すファイル名に拡張されます)。
それがすることは次のとおりです。
read bytes _ < /proc/self/fd/x
ここで、fd x はパイプの読み出し端です。
パイプのもう一方(書き込み)の終わりには、du -bcm random_iso.iso | tail -1
標準出力がパイプにリダイレクトされるバックグラウンドサブシェルプロセスが実行されています。
したがって、出力の最後の行の最初の単語は変数に保存され、read
残りの行は変数に保存されます。$bytes
du -bcm
$_
du -bcm
今私はこれが何を意味するのかわかりません。-b
、-c
オプションは-m
標準ではありません。 while-c
は一般的で、累積サイズを提供するために使用されます。 GNUの場合、du
ファイル-b
サイズをバイト単位で取得し(ディスク使用量ではありません)、while-m
はサイズを次のメガバイトに丸め、オプションが競合します(おそらく使用されますが)-b
有効な副作用です--apparent-size
。 FreeBSD duには-m
(メガバイト)があり、no -b
、Solarisには両方ありません...
これは作成方法が複雑なようです。
wc -c < random_iso.iso
または:
du --apparent-size -cm random_iso.iso | awk 'END{print $1}'
GNUシステムでは、必要に応じてファイルサイズは次のメガバイトに丸められます。