現在、私は小さなシェル (リダイレクト、パイプ、exec など) をコーディングしています。Linux シェルが I/O リダイレクションに対処する際に実行する手順を理解しようとしています。
私が助けを必要とするものに関するいくつかの質問:
リダイレクトを探すときに、シェルはコマンドラインからどの方向に読み取りますか? 左から右か、逆か?再帰を使用しますか?
シェルが探す必要のあるケースは何ですか? (多くのバリエーションを含むことができるものがたくさんあるのか、それともカップルだけなのかはわかりません)
とにかく、私が考えることができるいくつかは次のとおりです(間違っている場合は修正してください):
cmd > file1 # stdout of cmd goes to file
cmd file1 > file2 # stdout of cmd with file1 as an argument goes to file2
cmd file2 < file1 # stdin on file2 comes from file1
現在、次のケースのプロセスがわかりません(シェルがこれらをどのように検索して処理するかなど)。シェルが実行する手順は私にはわかりません
cmd file2 > file3 < file1 # using "tee" in place of "cmd" I don't know
# how to do the dups and when to exec
cmd file2 < file3 > file1 # same ^