回答:
の
<(openssl dgst -sha256 filename)
コンストラクトはプロセス置換です。背後でファイル(またはFIFO)を作成し、その名前をコマンドシーケンスに返します。
<
ある通常のファイルのリダイレクトに舞台裏ファイルの内容をリダイレクトstdin
し、
-
sed
入力がからのものであることを示すためにによって認識されるプレースホルダーstdin
です。
以来sed
、ファイルからの読み込みが完全に可能であり、-<
この文脈では、不必要なようです。
sed 's/^.*= //' <(openssl dgst -sha256 filename)
同様に動作するはずです。
<( COMMAND )
Bashの構築物は、呼び出されたプロセス置換。
COMMAND
内部を評価し、その出力をFIFOにリダイレクトします。これは、/dev/fd
割り当てられた内部の仮想ファイル記述子を取得する名前付きパイプです。評価されたコマンドの出力を含む一時ファイルのように機能します。
<
Bashの構築物は、呼び出された入力のリダイレクト。
右側のファイル記述子を受け取り、その内容を左側のコマンドのSTDIN(標準入力)にリダイレクトします。
-
Bashの構成物ではなく、の引数sed
それは、その入力ファイルを指定します。特別な値-
は、STDINから読み取ることを意味します(これもsed
のデフォルトなので、省略できます)。
sed 's/^.*= //' - < <(openssl dgst -sha256 filename)
このラインは最初に実行されopenssl dgst -sha256 filename
、その出力をFIFOにキャッシュします。この名前付きパイプを表すファイル記述子は、STDINにリダイレクトされる入力ファイルとして扱われますsed 's/^.*= //' -
。このsed
コマンドは、STDINから読み取り、「=」記号とそれに続くスペースの前のすべての文字を削除します。
openssl ... | sed '...'