デフォルトでは、スクリーンセッションのタイトルは最後に入力したコマンドの名前で、私の場合はうまくいきますが、場合によっては変更したいと思います。私はCtrl- コマンドについて知っていますが、A A次のコマンドまでのみタイトルを変更し、別の方法で決定するまでそこに滞在したいと思います。
編集する:
これはpreexec
私が見つけた機能です。.zshrc
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek$CMD\e\\"
fi
答え1
設定方法によって異なりますが、基本的にこれはうまくいきます。
settitle() {
printf "\033k$1\033\\"
}
次に、次を実行します。
settitle NEWTITLE
。
バラより画面タイトル文書そしてGNU画面のよくある質問詳細については。
指定された+は、(すべてのシェル)または/(bashのみ)または/(zshのみ)に設定Ctrlできる次のコマンドの前にのみ変更されます。A A$PS1
$PROMPT_COMMAND
DEBUG trap
precmd
preexec
\e
デフォルトでは、\033
上記の例のように、itと一緒に、または後ろに表示されるすべての場所を見つける必要があります。k
\\
settitle
修正する
クセがあると言われましたpreexec
。
これを次のように変えたらどうでしょうか?
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
その後、次のコマンドを実行してカスタムタイトルを設定できます。
TITLE="my title"
以下を実行してヘッダー設定を解除します。
TITLE=
必要に応じて変更することを忘れないでくださいprecmd
。$PS1
横に
合計をハードコーディングしないことで、それをすべての端末(例:xterm
など)に拡張することもできます。gnome-terminal
\ek
\e\\
これが私がする方法です:
terminit()
{
# determine the window title escape sequences
case "$TERM" in
aixterm|dtterm|putty|rxvt|xterm*)
titlestart='\033]0;'
titlefinish='\007'
;;
cygwin)
titlestart='\033];'
titlefinish='\007'
;;
konsole)
titlestart='\033]30;'
titlefinish='\007'
;;
screen*)
# status line
#titlestart='\033_'
#titlefinish='\033\'
# window title
titlestart='\033k'
titlefinish='\033\'
;;
*)
if type tput >/dev/null 2>&1
then
if tput longname >/dev/null 2>&1
then
titlestart="$(tput tsl)"
titlefinish="$(tput fsl)"
fi
else
titlestart=''
titlefinish=''
fi
;;
esac
}
# or put it inside a case $- in *i* guard
if test -t 0; then
terminit
fi
# set the xterm/screen/etc. title
settitle()
{
test -z "${titlestart}" && return 0
printf "${titlestart}$*${titlefinish}"
}
その後、次のように変更できますpreexec
。
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
答え2
ウィンドウタイトルが現在ウィンドウで実行されているアプリケーションを反映している場合、これはシェルがこれを実行しているためです。その場合は、ディストリビューション、システム管理者、またはユーザーが構成したためです。
実行時にコマンドがウィンドウのタイトルとして表示される場合、これはpreexec
(zshから)またはBashでのシミュレーション。
各コマンドの完了時にタイトルが変更されると、これはprecmd
zshの関数、bashのパラメータ、またはシェルのプロンプト(パラメータ)の一部を介してPROMPT_COMMAND
行われます。PS1
(タイトルを変更するコマンドは、端末出力ストリームの一部としてすべてのアプリケーションで実行されるエスケープシーケンスなので、プロンプトに含めることができます。)
\e]0;new title\a
、または(、、...)などのシェル初期化ファイルでエスケープシーケンスを見つけます\e]2;new title\a
。関連がない場合、設定はシステムファイル(たとえば)にあり、独自の初期化ファイルでパラメータまたは関数をオーバーライドします。\eknew title\e\\
~/.bashrc
~/.zshrc
/etc/bash.bashrc
/etc/zsh/zshrc
バラよりミケルの答えで上書き可能なタイトルの設定preexec
。