Como alterar o título do terminal sem alterar a string do prompt?

1

Eu personalizei meu prompt de comando para exibir o diretório atual com algumas cores e caminho completo. Agora quero definir o título da minha janela para apenas o nome do diretório (não o caminho completo). Você pode, por favor, aconselhar como conseguir isso na shell korn. Obrigado.

    
por Forever Learner 05.01.2017 / 08:55

2 respostas

1

A maneira que encontrei para conseguir isso é criando um alias para o cd. Eu coloquei o seguinte código dentro do arquivo .profile que fez o truque

xcd() { cd $*; echo -ne "3]0;$(basename $PWD)
cd() { command cd "$@"; echo -ne "3]0;${PWD##*/}
xcd() { cd $*; echo -ne "3]0;$(basename $PWD)
cd() { command cd "$@"; echo -ne "3]0;${PWD##*/}%pre%7"; }
7"; } alias cd='xcd'
7"; }
7"; } alias cd='xcd'

Muito obrigado à Kusalananda pela solução que eu estava realmente procurando:

%pre%     
por 10.01.2017 / 09:56
0

De acordo com este site: Como alterar o título de um xterm: exemplos para diferentes shells

ksh provides little in the way of functions and expansions, so we have to insert the escape string in the prompt to have it updated dynamically. This example produces a title of username@hostname: directory and a prompt of ksh$ .

case $TERM in
    xterm*)
        HOST='hostname'
        PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ '
        ;;
    *)
        PS1='ksh$ '
        ;;
esac

However, $PWD produces the full directory path. We can remove the prefix of $HOME/ from the directory using the ${...##...} construct. We can also use ${...%%...} to truncate the hostname:

HOST='hostname'
HOST=${HOST%%.*}
PS1='^[]0;${USER}@${HOST}: ${PWD##${HOME}/}^Gksh$ '

Note that the ^[ and ^G in the prompt string are single characters for ESC and BEL (can be entered in emacs using C-q ESC and C-q C-g).

    
por 05.01.2017 / 14:30