【发布时间】:2017-05-17 10:33:18
【问题描述】:
我想在不同的 gnu 屏幕会话(不是 windows)之间快速切换。现在我可以使用screen -d 脱离一个会话并使用screen -r <sessionname> 重新连接到下一个会话,但是没有办法在一个命令中执行此操作吗? screen -d && screen -r <sessionname> 之类的东西?
【问题讨论】:
标签: gnu-screen
我想在不同的 gnu 屏幕会话(不是 windows)之间快速切换。现在我可以使用screen -d 脱离一个会话并使用screen -r <sessionname> 重新连接到下一个会话,但是没有办法在一个命令中执行此操作吗? screen -d && screen -r <sessionname> 之类的东西?
【问题讨论】:
标签: gnu-screen
这很容易通过实用程序脚本来完成:
#!/usr/bin/env bash
set -eu
set -o pipefail
unset CDPATH
: "${BASH:?bash shell is required}"
screen -ls || true
for s in $(screen -ls | tail -n +2 | head -n -2 | sort -R | cut -f2)
do
read -n 1 -s -r -p '[y/n] switch to '"$s"'?' REPLY
if [[ "$REPLY" == "y" ]]
then
screen -DR "$s"
else echo
fi
done
将其保存为cycle-screen 并使其可执行。使用示例:
There are screens on:
43094.27 (Detached)
47415.12 (Attached)
54922.31 (Detached)
3 Sockets in /var/folders/r5/7_prvssx301dyz4jz2pbky5w0000gn/T/.screen.
[y/n] switch to 54922.31?
键入y 以进入提示中指定的屏幕,或输入其他任何内容以跳过它。当您离开屏幕时(通过^a^d、^d、exit 或其他方式),您会收到下一个屏幕的提示。
【讨论】:
不,很遗憾,GNU 屏幕上没有这样的东西。
【讨论】: