screen
命令是我们运行进程后台的一个不错的程序,但我发现Ctrl + a w
在 xshell(Xmanager 组件)中不显示屏幕窗口列表,并且Ctrl + a k
不为我杀死这个屏幕终端。但是Ctrl + a d
分离会话是有效的!那么Ctrl +a w
列出会话有什么问题呢?
更严重的是,我怎么知道我是在屏幕窗口还是普通的 bash 窗口?很多次我尝试分离屏幕会话,之后我就注销了ctrl+a
d。非常尴尬不是吗?那么有没有任何提示可以显示我是在屏幕窗口中还是只是普通的 tty 终端?
答案1
如果您在输入 ^A d 时注销,我猜您在按 d 时仍在按住控制键。 ^A ^D 和 ^A d 一样都必须“分离”。对于 ^A k 和 ^A w,请尝试在按 k 或 w 之前放开控制键。
答案2
可能该组合^A w
被具有更高优先级的事物使用。^A d
可能没有被它使用,因此传递给screen
.您可以尝试使用 设置不同的命令字符-e
。
^A d
不应将您从普通 shell 中注销。
我的建议是,当不确定时,请务必^A w
先按^A d
。为了使其完全安全,您可以使用 shell 的键绑定功能对其做出反应,例如 print this is not within screen
。
答案3
我也发现自己被这个欺骗了。从那时起,我总是将这两行添加到screenrc
:
hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"
它改变了 TTY 在屏幕中的视觉外观。事后你不能忽视它。