是否可以让 GNU Screen 显示任意命令的输出,例如 who | wc -l,在状态栏中,例如每分钟刷新一次?
小智 6
是的,您可以使用反引号功能。 反引号
你在 screenrc 文件中放了一行:
backtick 1 0 5 /bin/date
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这意味着运行 command 的反引号 id 1/bin/date产生的输出有效期为 0 秒,并且标题/硬状态应每 5 秒更新一次。
现在,您可以使用%1`hardstatus 中的字符串进行替换,例如
hardstatus alwayslastline "date output: %1`"
Run Code Online (Sandbox Code Playgroud)
就您而言,我认为您必须编写脚本。例如$HOME/my_script.sh:
#!/bin/bash
who | wc -l
Run Code Online (Sandbox Code Playgroud)
在您的~/.screenrc:
backtick 1 0 60 $HOME/my_script.sh
hardstatus alwayslastline "who|wc -l output: %1`"
Run Code Online (Sandbox Code Playgroud)
显然,您不会完全想要那个,而只是添加%1`到您拥有的其他任何东西上。请注意,您的脚本输出不能包含用于屏幕展开的字符串转义,例如,如果您的脚本echo "%{bg}blue on green%{dd}"不会被着色,您只会在状态行中看到${bg}和${dd}。