如果我登记入住屏幕当前正在运行的任务(ctrl/a + "
),我得到这个:
Num Name
0 -bash
1 -bash
2 -bash
...这是正确的,通常在我的所有屏幕窗口中,bash 正在运行。然而,这并不是我想看到的。我想在该窗口中查看实际执行的命令。它可以是任何东西,例如 ssh-ing、rsync-ing 或运行构建脚本等:
Num Name
0 ssh to@this
1 rsync this./ [email protected]:/path
2 make world
我目前最好的想法是,任何时候如果我执行一个新命令,bash 都应该以某种方式与屏幕进程对话,了解此时发生的情况。例如,作为 unix 管道上的数据报消息。也许这并不容易实现。
有什么东西至少可以得到一些类似的东西吗?
答案1
简短回答:
将以下行添加到您的
$HOME/.bashrc
4case "$TERM" in screen*) PROMPT_COMMAND='printf "\ek\e\\\\"' esac
添加以下行
$HOME/.screenrc
shelltitle '$ | bash'
解释:
screen
具有特定于 shell 的启发式方法,通过将窗口的名称设置为"<search pattern>|<window name>"
并将<ESC>k<ESC>\
序列作为提示的一部分来启用2。
Screen 将使用<ESC>k<ESC>\
清除上一个命令名称并为下一个命令做好准备。当从 shell 接收到换行符时,将搜索提示符的末尾。screen
将抓取匹配字符串后的第一个单词并将其用作命令名称。
用于PROMPT_COMMAND='printf "\ek\e\\\\"'
设置<ESC>k<ESC>\
为提示的一部分。并使用shelltitle
子命令(title
此处不起作用)通过添加来设置默认窗口标题
shelltitle '<end of prompt>|<default window name>'
加载新配置后windowlist
应显示正在运行的命令。
2.screen
动态标题:https://www.gnu.org/software/screen/manual/html_node/Dynamic-Titles.html#Dynamic-Titles
4.类似帖子:https://superuser.com/questions/244299/gnu-screen-how-to-update-dynamically-the-title-of-a-window
5.shelltitle
例子:https://www.gnu.org/software/screen/manual/html_node/Title-Screenrc.html
额外:
3. 关于PROMPT_COMMAND
:https://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html