我正在尝试运行一个大脚本,它会在整个过程中提示您回答问题。我想以详细模式运行它,这样会有大量的输出,我想捕获它。因此,我想以一种允许我回答问题并将输出发送到文件的方式运行它。
这能做到吗?
谢谢。
麦克风
答案1
在回答时,您通过文件描述符 0(即 STDIN)提供输入,而程序则在文件描述符 1(即 STDOUT)上显示输出。如您所见,这两个在不同的文件描述符上工作,并且操作一个文件描述符不会妨碍另一个文件描述符的操作。
请注意,还有文件描述符 2,即 STDERR,通常用于显示错误消息。
在这种情况下,请按如下方式运行脚本:
./myscript.sh >~/script.out
现在您可以通过 STDIN 输入脚本问题的答案,程序的输出将保存在 中~/script.out
。
您还可以将错误保存在另一个文件中:
./myscript.sh >~/script.out 2>~/script.err
STDOUT 将保存在 中~/script.out
,STDERR 将保存在 中~/script.err
。
您可以将输出和错误都保存在同一个文件中:
./myscript.sh >~/script.all 2>&1
现在~/script.all
将包含来自的输出和错误消息(如果有)myscript.sh
。