「tput」コマンドで端末のタイトルを設定するにはどうすればよいですか?


9

私はを通じて発見この回答私は何年も素朴な方法で私のプロンプトで、端末の色を設定してきたこと。

プロンプトのさまざまな要素を色分けするために 'tput'コマンドを使用するように.bashrcを変更しました。私が持っている残りのエスケープコードはこれです:

TITLEBAR="\[\033]2; PROD - \u@\h:\w \007\]"

端末ウィンドウのタイトルバーを設定するために使用できるtput / terminfo属性があるかどうかを誰かが知っているので、そのエスケープを排除できますか?

回答:


9

実際の機能はtsl(ステータス行へ)とfsl(ステータス行から)ですが、もちろんすべての端末が持っているわけではありません。特にLinuxでは、端末をxterm + slまたは同様のものに設定する必要があります。

あなたはこれをテストすることができます

export TERM=xterm+sl
echo `tput tsl` Hello world `tput fsl`; sleep 10

私はそれらのエスケープを気にせず.bashrcに保持します


1
Ubuntuの私のコピーにはそのターミナル情報が欠けているようです。:(不完全なterminfoファイルのせいです:)
David Pashley

1
しかし、スクリーンはそれらをうまくサポートするように見えます。ありがとう!
Murali Suriar 2009年

3
\033];エスケープシーケンスは、であるxtermため、「オペレーティングシステムのコマンド」。tputでそれを行う方法はわかりませんが、tputを介して実行できる場合は、クロスプラットフォームのターミナルタイトル設定に適しています。たとえば、xtermでは、次のようなシーケンスになります\033]0;Title\007。こちらもご覧ください
Wyatt8740 2018年

@codeheadあなたの解決策は恥ずかしいです。なぜなら、私がと入力した場合export TERM=xterm+sl、vimで構文構文が強調されなくなるからです。
SebMa

2

xtermのterminfoファイルを調べたところ、このコマンドと同じコードは見つからなかったので、そうではないようです。

興味がある場合は、terminfoのmanページに、termcapとterminfoが理解できるすべてのコマンドがリストされています。terminfoデータベースファイルを逆コンパイルしました。

#infocmp -L xterm 

2

私はコメントできないので、追加の回答:

tsl / fslを使用する場合は、必ず最初に端末にhsを要求してください。tsl / fsl(およびその他の* sl)がサポートされている場合、hsはtrueでなければなりません。

tput hs && { echo ....; }

1
これに関する参照がある場合は+1。
l0b0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.