在一个bash脚本中,我使用“screen -L”来logging执行的命令的颜色。 例如 :
屏幕-L树
然后我们读取less -R日志文件。
当执行这个脚本时,其他屏幕可能会运行,所以我们不知道哪个屏幕日志*包含我们的输出。 我不能要求用户自定义他的.screenrc 。
有没有办法在命令行中指定日志名称或读取特定的.screenrc命令。
我对此有一些想法。 首先,请注意,通过-c命令行开关调用屏幕时,您可以控制启动screenrc。 其次,你可以在.screenrc中使用环境variables。 把这一切放在一起,这里有一个shell脚本来做你想做的事情:
#!/bin/bash cat << EOF >/tmp/screenrc.$$ logfile /tmp/screenlog.$$ EOF screen -c /tmp/screenrc.$$ -L rm /tmp/screenrc.$$ echo "logfile is /tmp/screenlog.$$"
该脚本将覆盖用户screenrc并将输出放置在特定的文件中。 在这种情况下,我使用$$通过附加脚本进程名称来生成文件名。 请注意,您通常应该使用mktemp来创build安全的临时文件,但现在我很懒。
这也完全取代了用户.screenrc 。 如果你还想从这个文件读取设置,你应该把生成的configuration文件改成这样:
logfile /tmp/screenlog.$$ source $HOME/.screenrc
你为什么不做:
tree -C > tree.log
即使输出不是tty, -C选项也会强制颜色。 同理:
ls -l --color=always > ls.log grep --color=always foo bar > grep.log ack --color foo > ack.log
当输出发送到pipe道或redirect时,输出颜色的实用程序通常会强制执行。
或者,有一种方法可以在线完成
通过“Ctrl-a:”在屏幕上input命令模式,并使用“logfile”命令和所需文件的名称作为参数logfile whatevernameyoulike.log
来源:屏幕手册页