Bash内蔵制御構造/コマンドリダイレクトの仕組み

Bash内蔵制御構造/コマンドリダイレクトの仕組み

私が興味を持っているのは、bashの組み込み制御構造と機能を使用して技術的にリダイレクトを実装する方法です。

たとえば、次のコマンドがあります。

while read line; do echo $line; done < lines.txt | tac > ~/reversed.txt

標準入力(lines.txt)をreadコマンド(引数)whileに接続するメカニズムとは何doですか?本体を標準出力(パイプ)に接続するメカニズムは何ですか?明らかに、いくつかのコンテキストルールが適用されますが(外部コマンドリダイレクトとは対照的に)、これらのルールは正確に何であり、bashはそれらを技術的にどのように実装しますか?

ベストアンサー1

一般に、UNIXシェルは、オープンで必要なopenファイルをパフォーマンス上の理由で(非常に高価であるため)組み込みコマンドと異なる場合がありますが、意味は同じです。forkdup2execveforkexecve

ただし、コマンドライン解析ルールを参照している場合は、これがPOSIXで説明されています。組み込みプログラムと外部プログラムを区別しません。

おすすめ記事