タイトルに従って画面をもう一度開きます。

タイトルに従って画面をもう一度開きます。

次のコマンドを使用してスクリーンセッションを作成しました。

screen -t name

この名前に基づいてこのセッションを再度開く方法はありますか(重複した名前がないと仮定)。

ベストアンサー1

プロセスのリストを見る以外に他のオプションはないと思います。

screen -r $(pgrep -f '\<SCREEN.* -t name\>')

*BSDには他のものが必要です:

screen -r $(pgrep -t- -f '\<screen.* -t name\>')

オプションは、制御端末がないプロセスのみを一致させるように-t-指示します。この場合、最初のリンク表示ではなくバックエンドプロセスのみが一致します(バックエンドプロセスをどこにでも変更しますが、* BSDでは文字列の変更は適用されません)。 Linuxと同様に、プロセスのリストにミラーリングされます。pgrepscreenscreenargv[0]"SCREEN"argv

FreeBSDでは、-aオプション(「呼び出しプロセスの親エントリも一致」)が必要になる場合があります。残念ながら、pgrep -t-Linuxではサポートされておらず、pgrep -aまったく異なる操作を行います。

したがって、すべてを関数に入れます。

# usage tscreen title [args ...]
tscreen(){
    title=$1; shift
    screen -r $(
      pgrep -f "\\<SCREEN.* -t $title\\>" ||
      pgrep -t- -f "\\<screen.* -t $title\\>" ||
      pgrep -at- -if "\\<screen.* -t $title\\>" ||
      echo "title=$title"
    ) "$@"
}

おすすめ記事