GNU Screen:在状态栏中运行任意命令?

GNU Screen:在状态栏中运行任意命令?

是否可以让 GNU Screen 显示任意命令的输出,例如 who | wc -l,在状态栏中,每分钟刷新一次?

答案1

是的,您可以使用反引号功能。 反引号

你在 screenrc 文件中添加一行:

backtick 1 0 5 /bin/date

如果我理解正确的话,它的意思是反引号 id 1,它运行命令/bin/date,产生有效期为 0 秒的输出,并且标题/硬状态应每 5 秒更新一次。

%1`现在,您可以使用硬状态中的字符串进行替换,例如

hardstatus alwayslastline "date output: %1`"

对于你的情况,我认为你必须编写一个脚本。例如$HOME/my_script.sh

#!/bin/bash
who | wc -l

在你的~/.screenrc

backtick 1 0 60 $HOME/my_script.sh
hardstatus alwayslastline "who|wc -l output: %1`"

显然,您不会想要完全这样,而只是添加%1`到您已有的任何其他内容中。请注意,您的脚本输出不能包含用于屏幕扩展的字符串转义符,例如,如果您的脚本是,echo "%{bg}blue on green%{dd}"它将不会被着色,您只会在状态行中看到${bg}和。${dd}

相关内容