7、在一個交互式的(Interactive) shell 中, 用 exec 進行 I/O 重定向. 1). Stdin, stderr 可以定向到文件中嗎? 有什么結(jié)果? a、在交互式shell中,可以將stdin定向到文件。執(zhí)行:exec 0 結(jié)果為:in 文件中每一行均會被自動執(zhí)行,并且在最后會再加執(zhí)行一個 exit 命令,導(dǎo)致退出(或退回到正常shell下)。 如 in 文件內(nèi)容:$ more in date read lsp echo hahha echo "this is $lsp"
在提示符下執(zhí)行命令:$ exec 0 $ date Tue Jan 18 18:29:07 HKT 2005 $ read lsp # 其下面本應(yīng)有的那句“ echo hahha ”的 “hahaha” 已經(jīng)被讀入到變量 lsp 中了 $ echo "this is $lsp" this is echo hahha $ exit
b、在交互式shell中,可以將stderr定向到文件。執(zhí)行:exec 2>err 結(jié)果為:命令提示符PS被屏蔽,輸入的命令也被屏蔽。但是命令執(zhí)行的結(jié)果,如果是stdout 則會回顯到屏幕上,如果是 stderr 則不會回顯到屏幕上。其中,命令提示符、命令、stderr均會保存到文件 err 中。如: $ exec 2>err err in out # 執(zhí)行 ls 命令 Tue Jan 18 18:55:58 HKT 2005 # 執(zhí)行 date 命令,而后執(zhí)行了“ ls nofile”,nofile這個文件不存在 $ # 執(zhí)行 exit 命令
現(xiàn)在讓我們查看 err文件: $ more err [lsp@ii lsp]$ ls [lsp@ii lsp]$ date [lsp@ii lsp]$ ls nofile ls: nofile: No such file or directory [lsp@ii lsp]$ exit exit