`$(< file)` は厳密に bash ですか、それとも `$(< file)` は実際に `cat` に依存していますか? [コピー]

`$(< file)` は厳密に bash ですか、それとも `$(< file)` は実際に `cat` に依存していますか? [コピー]

Bashのマニュアルから:

コマンド置換を使用すると、 $(cat file)コマンドを同じですがより高速なコマンドに置き換えることができます$(< file)

catbash 組み込みコマンドではなくcoreutilsから。だから私はbashマニュアルでbash以外のものを言及しているという事実に驚きましたcat

本当に$(< file)の略ですか$(cat file)

それは$(< file)厳密にbashですか、それとも$(< file)実際にそれに依存しますかcat

$(< file)厳密にbashであり、に依存しない場合cat

  • < fileリダイレクトですか、コマンドですか、それとも両方ですか(リダイレクトと空のコマンド名を持つコマンド)。
  • < file(リダイレクトがあり、コマンド名が空のコマンド)標準出力に出力する方法は?

ありがとうございます。

答え1

アップデート:リファレンスhttps://unix.stackexchange.com/a/368663/145784さまざまなシェルのUnix演算子について詳しく説明します$(<

$(< file)完全に強打。このステートメントは< fileファイルをインポートし、それをstdin呼び出したコマンドにリダイレクトします。この場合は$()コマンド置換形式なので、コマンドを置き換えて使用されます。受信した入力を受け取り、コマンドで使用するのに適した変数に変換します。外部プログラムを呼び出さないため、cat速度が速くなります。

この変数を標準出力に出力するには、次のようにします。

echo $(< file)

関連情報