我知道如何更改終端視窗標題。我想知道的是如何bash不zsh寫出當前正在運行的行程,所以如果我說這樣做
$ ls -lF
我會得到這樣的標題
/home/me/curerntFolder (ls -lF)
由于命令已經執行,因此獲取最后執行的命令為時已晚,因此它不會使用已執行的命令設定標題。
uj5u.com熱心網友回復:
更新:我以前的答案(下)在標題欄中顯示上一個命令。
忽略我之前的回答中的所有內容并從頭開始:
trap 'echo -ne "\033]0;${PWD}: (${BASH_COMMAND})\007"' DEBUG
在命令提示符處運行以下命令:
$ sleep 10
/my/current/directory: (sleep 10) 視窗標題欄在運行時變為sleep 10。
運行以下任一:
$ sleep 1; sleep 2; sleep 3
$ { sleep 1; sleep2; sleep 3; }
標題欄隨著每個sleep命令的呼叫而變化。
運行這個:
$ ( sleep 1; sleep 2; sleep 3 )
標題欄不會改變(trap不適用于子流程呼叫)。
最后一張:
$ echo $(sleep 3; echo abc)
標題欄顯示(echo $sleep 3; echo abc))。
上一個答案
添加到這個答案:
store_command() {
declare -g last_command current_command
last_command=$current_command
current_command=$BASH_COMMAND
return 0
}
trap store_command DEBUG
PROMPT_COMMAND='echo -ne "\033]0;${PWD}: (${last_command})\007"'
其他閱讀材料trap / DEBUG:
- bash 陷阱指南
- 問答
uj5u.com熱心網友回復:
您可以將設定視窗標題與設定提示結合起來。
這是一個使用示例重擊年代PROMPT_COMMAND:
tputps () {
echo -n '\['
tput "$@"
echo -n '\]'
}
prompt_builder () {
# Window title - operating system command (OSC) ESC ]
echo -ne '\033]0;'"${USER}@${HOSTNAME}:$(dirs)"'\a' >&2
# username, green
tputps setaf 2
echo -n '\u'
# directory, orange
tputps setaf 208
echo -n ' \w'
tputps sgr0 0
}
prompt_cmd () {
PS1="$(prompt_builder) \$ "
}
export PROMPT_COMMAND=prompt_cmd
uj5u.com熱心網友回復:
除了@markp-fuso 的回答,這是我如何使它與 Starship 一起作業的。
function set_win_title() {
local cmd=" ($@)"
if [[ "$cmd" == " (starship_precmd)" || "$cmd" == " ()" ]]
then
cmd=""
fi
if [[ $PWD == $HOME ]]
then
if [[ $SSH_TTY ]]
then
echo -ne "\033]0; ??? @ $HOSTNAME ~$cmd\a" < /dev/null
else
echo -ne "\033]0; ?? ~$cmd\a" < /dev/null
fi
else
BASEPWD=$(basename "$PWD")
if [[ $SSH_TTY ]]
then
echo -ne "\033]0; ??? $BASEPWD @ $HOSTNAME $cmd\a" < /dev/null
else
echo -ne "\033]0; ?? $BASEPWD $cmd\a" < /dev/null
fi
fi
}
starship_precmd_user_func="set_win_title"
eval "$(starship init bash)"
trap "$(trap -p DEBUG | awk -F"'" '{print $2}');set_win_title \${BASH_COMMAND}" DEBUG
請注意,這與Bash 指令中的自定義預提示和預執行命令不同,因為陷阱設定在 starship init. 我在一個錯誤中注意到了這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/445485.html
