画面のセッション名をhardstatusに含める方法は?


17

プロジェクトごとに異なるスクリーンセッションを使用しています。のような開始画面screen -S project1。さて、hardstatus行に「project1」を記載したいと思います。

セッション名は、環境変数STY:から取得できますSTY=13539.project1
しかし、これを画面に入れる方法は?backtickコマンドと% `をhardstatusで試しましたが、うまくいかないようです。

私がしたこと:

.screenrc:

hardstatus string '%H:%`'
backtick 0 30 30 echo $STY

運がない、空の% `。

backtick 0 30 30 sessionname

まだ運がない、セッション名:見つかりません

回答:


18

この文字列を(必要に応じて追加情報と共に)に含めることができます$PS1

\[\e]0;$STY\007

変数の評価を遅らせるために、単一引用符で囲みます。次に、これをに追加します~/.screenrc

hardstatus string '%H:%h'

残念ながら、機能用に生成されるコマンドの環境にはscreen設定$STYしませんbacktick

上記のオプションの代わりの別のオプション:

hardstatus string '%H:%`'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

これの利点は、sessionnameコマンドを使用して行われた変更に従うことです。最初のオプションはそうではありません。

編集:

ここから:

スクリーンソースが.screenrcの場合、$ STYはまだ設定されていないため、.screenrcで次のトリックを使用できます。

    screen 
    screen $SHELL -c 'screen -X caption always "$STY"' 

つまり、最初のウィンドウに画面コマンドを送信します。


1
で始まるソリューションの場合backtick:(1.)backtickbashは組み込みですか?gnu-screenコマンド?バイナリ実行可能ファイル?マニュアルページはありますか?(2.)私はそれを試したので機能することを知っていますが、gnu-screen .screenrc構文がhardstatusコマンドに1行を必要とするように見えるとき、どのように実行する2行のコマンドを取得しますか?(3.)セッション名の後にテキストを追加できるようにコマンドを変更するにはどうすればよいですか?
トレバーボイドスミス

@TrevorBoydSmith:backtickscreenコマンドです。のmanページで検索してくださいscreen。質問の残りの部分に関する新しい質問を投稿することをお勧めします。hardstatusの出力が画面上の2行を占めるとは思わない。あなたは私の例で何をしているのかを使用sedするawk代わりに使用するか、いくつかの余分なテキストを追加することもできます。grepgrep
追って通知があるまで一時停止します。

「2行」と言ったとき、私が意味することをもう一度述べておくと、hardstatusに2行表示したくありません。私がで混乱していた%` backtick...彼らは関連見えませんでしたが、今私がいることを別の行にビーイングのためのドキュメントを読んでbacktick私は2つが関連していること/必要/有効な構文(むしろ奇妙な構文はいえIMO)を参照してください。
トレバーボイドスミス

3

私にとってこれ%Sは、hardstatusに挿入することで簡単に機能します。

MWE(.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

ただし、これにより、ID なしのセッション名が表示されます(など${STY#*.})。あなたの例では:project1

(他の質問への同じ答えはここと完全のためにここにあります)。


2
参考までに、「%S」は新しいバージョンのgnu-screen(Fedora 21バージョンで動作します)で動作しますが、古いバージョンでは動作しません(CentOS 6バージョンでは動作しません)。
トレバーボイドスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.