Bashの標準入力を使用するには、<代わりに_<を使用してください。

Bashの標準入力を使用するには、<代わりに_<を使用してください。

プロセス置換を使用するときに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残りの行は変数に保存されます。$bytesdu -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システムでは、必要に応じてファイルサイズは次のメガバイトに丸められます。

おすすめ記事