我已经阅读了如何单独记录某些脚本或命令,但没有介绍如何从BASH shell中记录所有命令。我想做的是:
一个不那么冗长/更具代码性的例子:
exec> >(tee logfile.log)当用户输入时完全符合我的要求。它将stdout记录到logfile.log,并将继续这样做,直到关闭bash shell。但是,将此命令作为脚本运行不会执行此操作。我想要它。
答案 0 :(得分:5)
您不能在自己的shell下运行的脚本中执行此操作(即,它以#!/bin/bash
和chmod +x
开头,并像可执行文件一样调用它。重定向会影响子shell,但它无法到达父级以执行您想要的操作。您可以.
文件(如在. ./myscript.sh
中)执行shell中命令,然后您可以根据需要重定向。
另一种方法是让你的脚本自己启动一个子shell(它将继承stdin,stdout,stderr)。这就是script
命令的作用。它会将所有内容记录到名为(默认情况下)typescript
的文件中,直到用户退出子shell。
答案 1 :(得分:1)
$ bash | tee /tmp/logs/logfile.txt
$ ls / tmp / logs
LOGFILE.TXT
$< CTRL-d取代;
出口
$ cat /tmp/logs/logfile.txt
LOGFILE.TXT
如果你正在寻找stdout,那么这似乎有效。如果你想要stdin / stdout,那么脚本就像前面提到的那样。
答案 2 :(得分:0)
别名怎么样?
alias Start-Script='script logfile.txt'
答案 3 :(得分:0)