4

たくさんのコマンドを試しましたが、それらはすべてセッションを現在のセッションにアタッチし、セッション ネストに既にアタッチされているため、後で再アタッチしようとすると、想像できるように失敗します。

リモートサーバー、ログ、およびvimへのウィンドウで作業するプロジェクトごとにセッションを作成します。しかし、切り替えたいときはいつでも、 Ca d を実行してから screen -DR を実行する必要があります

1 つのコマンドを入力するだけでよいと思います。

ありがとう

4

2 に答える 2

2

私の知る限り、これは不可能でscreenあり、この制限を簡単に回避する方法がわかりません。ここでの問題は、各screenセッションが独立しており、他のセッションを認識していないことです。

これが頻繁に使用する機能である場合は、 でこれを行う に切り替えることをお勧めtmux<C-b>sます。私は両方screenを広範囲に使用してきましたが、この 1 年間、ターミナル マルチプレクサが必要になったときはいつでも、この製品を選んだtmuxことを後悔していません。tmux

ネストされたスクリーン セッションを実行することはそれほど難しくありません。2 つのエスケープを送信するだけで、コマンドが内側のスクリーン セッションに移動します。エスケープが単一の文字である場合に役立ちます。

escape ``
于 2012-07-27T00:41:59.670 に答える
0

これには、ループと名前付きパイプを使用した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
}
于 2021-12-05T19:42:02.247 に答える