bash '<(ファイルの内容)'の構文は何ですか?

bash '<(ファイルの内容)'の構文は何ですか?

これセキュリティStackExchangeへの回答興味深いbash構文を使用してインラインファイルを生成します。

openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650

特に興味深い点は次のとおりです。

<(openssl ecparam -name secp384r1)

ただ実行してください:

echo <(openssl ecparam -name secp384r1)

帰ってきた/dev/fd/63

したがって、これはファイルの内容で一時ファイル記述子を生成するようです。

これは何と呼びますか?

ベストアンサー1

知られているプロセスの交換そしてbash、zsh、kshの機能です(他の機能もあるかもしれません)。 POSIXではなく、移植可能なコードでは使用しないでくださいが、非常に便利です。

bash マニュアルの関連部分は次のとおりです。

3.5.6 プロセスの交換

プロセス置換は、名前付きパイプ(FIFO)または/ dev / fd名前付きファイルを開く方法をサポートするシステムでサポートされています。形を取る

  <(list) 

または

  >(list) 

プロセスリストの入力または出力は、FIFOまたは/dev/fdのファイルにリンクされます。ファイル名は、拡張結果として現在のコマンドに引数として渡されます。 >(リスト)形式を使用している場合は、ファイルに書き込むとリストへの入力が提供されます。 <(リスト)形式を使用している場合は、リストの出力を取得するには引数として渡されたファイルを読み取る必要があります。 <または>と開いている角かっこの間にはスペースを入れないでください。それ以外の場合、構文はリダイレクトとして解釈されます。

可能であれば、プロセス置換は、パラメータおよび変数拡張、コマンド置換、および算術拡張と同時に実行されます。

おすすめ記事