Stavo cercando una soluzione per impostare automaticamente il titolo personalizzato nel terminale in base a quale comando viene eseguito sul terminale corrente. Quindi, piuttosto che mostrare java in molte schede - mi piacerebbe avere a che fare con quale programma java è in esecuzione non tutti dicono solo java.
Ho trovato molto risposte interessanti e diverse ancora non completamente utile per il mio requierment
al momento, ho scritto sotto la riga in ~/.bash_profile
trap 'printf "3]0;%sif [ "$SHELL" = '/bin/bash' ]
then
case $TERM in
rxvt|*term)
set -o functrace
trap 'echo -ne "\e]0;"; echo -n $BASH_COMMAND; echo -ne "settitle () {
export PREV_COMMAND=${PREV_COMMAND}${@}
echo -ne "3]0;${PREV_COMMAND}trap 'printf "3]0;%sif [ "$SHELL" = '/bin/bash' ]
then
case $TERM in
rxvt|*term)
set -o functrace
trap 'echo -ne "\e]0;"; echo -n $BASH_COMMAND; echo -ne "settitle () {
export PREV_COMMAND=${PREV_COMMAND}${@}
echo -ne "3]0;${PREV_COMMAND}%pre%7"
export PREV_COMMAND=${PREV_COMMAND}' | '
}
export PROMPT_COMMAND=${PROMPT_COMMAND}';export PREV_COMMAND=""'
7"' DEBUG
export PS1="\e]0;$TERM%pre%7$PS1"
;;
esac
fi
7" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG
7"
export PREV_COMMAND=${PREV_COMMAND}' | '
}
export PROMPT_COMMAND=${PROMPT_COMMAND}';export PREV_COMMAND=""'
7"' DEBUG
export PS1="\e]0;$TERM%pre%7$PS1"
;;
esac
fi
7" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG
che funziona abbastanza bene in ** iTerm2 ** ma visualizza il comando completo come titolo, ma voglio l'argomento specifico o parte della stringa di comando come titolo
Supponiamo di eseguire questo comando nel terminale
sudo java - jar xyz_service/build/lib/xxx_snapshot.jar
e il titolo del terminale viene impostato così com'è, ma voglio solo impostare xyz_service come titolo
nota: il comando sopra mostra sempre update_terminal_cwd come titolo nel terminale di shell bash predefinito
le altre mie prove che però non funzionano
%pre%anche questo non funziona
%pre%Il mio ambiente è:
- macOS HighSierra v 10.13.3
- iTerm2 build 2.15
- shell è bash v 2.8 (400)
Posso farlo senza un alias wrapper in bash che imposta esplicitamente il nome della variabile?