在输出中输出stdin和stdout的方法

时间:2013-04-21 15:39:57

标签: shell stdout stdin

我需要一种简单的方法来捕获已发出的命令(从脚本)和结果输出到日志文件。

这是一个简单的例子: 命令:

grep '^#PermitRootLogin' /etc/ssh/sshd_config

输出:

#PermitRootLogin no

必填结果:

grep '^#PermitRootLogin' /etc/ssh/sshd_config
  PermitRootLogin no

通过重定向stdin我似乎在stdout上st脚;它应该不是那么困难,但出于某种原因,它正在躲避我。

使用tee只会创建一个带有无关噪音的日志文件;我想在最后使用该文件作为报告(无噪音)。

提前致谢,

TT

2 个答案:

答案 0 :(得分:1)

在函数中包含您想要的行为,即

function stomp {
    echo $@
    eval $@
}

然后像这样称呼它

stomp grep '^#PermitRootLogin' /etc/ssh/sshd_config

答案 1 :(得分:0)

script实用程序,它会记录您键入的所有内容以及任何程序在名为typescript的文件中输出到stdout的内容。但是,非常彻底,并且还会记录所有换行符和换行符以及shell的所有提示,因此您很可能希望对typescript进行过程处理。

也许只是

更容易
echo "grep '^#PermitRootLogin' /etc/ssh/sshd_config" > file
grep '^#PermitRootLogin' /etc/ssh/sshd_config >> file

然后在file中有命令及其输出。