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

bob*_*cat 4 gnu-screen

是否可以让 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}