端末の最初の行に画面のキャプションを表示する


8

新しい端末を起動すると、プロンプトが最初の行に表示されます。しばらく作業した後(または出力を生成するコマンドを実行した後)、プロンプトは最後の行に表示されます。ここで、Ctrl- l、実行clearresetまたは類似のキーを押さない限り、残りのセッション中はそのまま残ります。

作業の継続性を測定するために、キャプションにセッション名を表示screenするトリックを使用しています(最後の1つをの2つのscreenコマンドで使用しています.screenrc)。

作業領域が乱雑になることによる認識のオーバーヘッドを回避するために、このキャプションを端末の上部に表示します。

回答:


3

あなたは幸運です、screenはsaveコマンドとresoreコマンドを尊重します。だからbashでそれを行うことができます。

これは、特別なエスケープシーケンスでカーソルを移動する方法を示します。「Hello World!」と書けます。これで左上隅に:

echo -e "\033[s\033[2;0HHello World!            \n                        \033[u"

説明:キャラクター\033[sは現在のカーソル位置を保存します。これは、画面の端末サイズがさまざまに異なる可能性があるためです。次に\033[2;0、カーソルを3行目の最初の文字に移動します(左上隅を0としてカウントを開始します)。次に、テキストと可能なことの小さなイラストが表示されます。最後に、コード\033[uはカーソル\033[sをエミットされた場所に戻します。

この例では、コマンドを発行すると2つの改行が出力されるため、現在の3行目が最初の行になるため、カーソルを2行目に移動します。

これは、すでにリンクしている説明で取得できるセッションキャプションと一緒に使用できます。


2
を使用tputして、端末に依存しない方法でこれを行うことができます。これらのエスケープコードをハードコードする必要はありません。例えば:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"
ジム・パリ

どのシェルにもこれらの文字を出力する方法があると確信していますが、bashしか知りません:-) tput入力をありがとう、それについては知りませんでした。
2012

@ user1129682:私が試していないscreen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'し、screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'どちらも働きました。何か案は?
l0b0 2012

あなたが望むものに依存します。スクリーンキャプションで現在のセッションからタイトルを削除したいだけの場合は、そうしますscreen -X caption always; screen -X caption string "%t"。左上隅に現在のタイトルが必要な場合は、PS1環境変数を変更してtput魔法をかける必要があります。
Bananguin 2012

@ l0b0:これをもう一度読むと、tput cup 0 0には二重改行の問題がある可能性があります。そのため、テキストを1行目ではなく3行目に配置します。あなたはtput cup 2 0または0 2を試しましたか...それでもtputを読んでいません...
Bananguin 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.