たくさんのコマンドを試しましたが、それらはすべてセッションを現在のセッションにアタッチし、セッション ネストに既にアタッチされているため、後で再アタッチしようとすると、想像できるように失敗します。
リモートサーバー、ログ、およびvimへのウィンドウで作業するプロジェクトごとにセッションを作成します。しかし、切り替えたいときはいつでも、 Ca d を実行してから screen -DR を実行する必要があります
1 つのコマンドを入力するだけでよいと思います。
ありがとう
たくさんのコマンドを試しましたが、それらはすべてセッションを現在のセッションにアタッチし、セッション ネストに既にアタッチされているため、後で再アタッチしようとすると、想像できるように失敗します。
リモートサーバー、ログ、およびvimへのウィンドウで作業するプロジェクトごとにセッションを作成します。しかし、切り替えたいときはいつでも、 Ca d を実行してから screen -DR を実行する必要があります
1 つのコマンドを入力するだけでよいと思います。
ありがとう
私の知る限り、これは不可能でscreen
あり、この制限を簡単に回避する方法がわかりません。ここでの問題は、各screen
セッションが独立しており、他のセッションを認識していないことです。
これが頻繁に使用する機能である場合は、 でこれを行う に切り替えることをお勧めtmux
し<C-b>s
ます。私は両方screen
を広範囲に使用してきましたが、この 1 年間、ターミナル マルチプレクサが必要になったときはいつでも、この製品を選んだtmux
ことを後悔していません。tmux
ネストされたスクリーン セッションを実行することはそれほど難しくありません。2 つのエスケープを送信するだけで、コマンドが内側のスクリーン セッションに移動します。エスケープが単一の文字である場合に役立ちます。
escape ``
これには、ループと名前付きパイプを使用したhttps://github.com/scottxhe/switch-screen-sessionという bash スクリプトがあり、クリーンでセットアップと使用が簡単です。私は著者です。これがメインのbash関数です。これをスクリプトに入れてソースします。ss
呼び出し可能にする必要があります。
ss my-session-name
画面の内側からでも外側からでも。my-session-name
新しいセッションまたは既存のセッションにすることができます。他の詳細に興味がある場合は、github を確認してください。
ss() {
if [ -z $1 ]; then
screen -ls
return 0
fi
next_session=$1
prev_session=$1
if [ -z "$STY" ]; then
if [ ! -e ~/.next_s ]; then
mkfifo ~/.next_s
fi
if [ ! -e ~/.prev_s ]; then
mkfifo ~/.prev_s
fi
(
echo $next_session > ~/.next_s &
echo $prev_session > ~/.prev_s &
)
while true; do
next="$(cat ~/.next_s)"
prev="$(cat ~/.prev_s)"
if [ -z "$next" ] && [ -z "$prev" ]; then
return 0
elif grep -q "^~" <<< "$prev"; then
next_session=$prev_session
prev_session="$(sed s/~// <<<"$prev" | grep -v "^$")"
else
prev_session=$prev
next_session=$(grep -v "^$" <<< "$next")
fi
screen -dR $next_session
(
echo '' > ~/.next_s &
echo '' > ~/.prev_s &
)
done
else
(
echo $next_session > ~/.next_s &
echo $STY > ~/.prev_s &
)
screen -d $STY
fi
}