當前我正在編寫一個小shell(重定向,管道,exec等)。一直試圖找出Linux shell在解決I/O重定向時所採取的步驟。Linux外殼中的I/O流重定向。 shell如何通過重定向來處理命令?
我需要什麼幫助上的一些問題:
在哪個方向從命令行讀取shell時它正在尋找重定向?從左到右還是相反?使用遞歸?
shell需要尋找什麼情況? (不知道是否有很多或只是一對夫婦可以涵蓋很多的變化)
不管怎麼說,一些我能想到的是(糾正我,如果我錯了):
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
現在我不知道以下情況下的過程(如shell查找和處理這些過程)。 殼採取的步驟是不爲人知我
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^
因爲它從左向右讀取三通 文件1> file2的
John
編號再次閱讀,這是沒有意義的。你不能「設置file1輸出到file2」。文件是一個文件,它不是一個命令。 –
'tee file1> file2