Como definir automaticamente o título do terminal como nome do diretório sem caminho

11

Atualmente, o título do meu terminal / guia bash é definido com base no diretório em que estou. Por exemplo:

bob@bobscomputer:~/i/had/some/great/pie/yesterday

Isso não é muito útil se eu tiver várias guias abertas lado a lado. Por exemplo, se eu tiver 4 guias do diretório acima abertas lado a lado, tudo o que vejo é

bob@bobscomputer:~/i/had...

4 vezes.

Gostaria que todos os meus títulos de terminal fossem definidos automaticamente apenas para a última parte do caminho. No exemplo acima, eu gostaria que o título fosse

yesterday

Obviamente, o título deve mudar quando eu mudar de diretório. Eu gostaria de fazer isso sem alterar meu prompt, portanto, o prompt e o título do terminal devem ser diferentes.

Existe uma maneira de fazer isso?

Sapo olhando
fonte
Para o ZSH, veja aqui: superuser.com/a/1328085/122021
LAFK diz Reinstate Monica

Respostas:

11

Por que você deseja fazer isso sem modificar sua variável PS1? Essa é a maneira correta de fazer isso.

Se você executar o seguinte, obterá o que deseja:

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Este é apenas pegar o prompt padrão:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

... e substituindo \u@\h: \wpor \W.

Você pode fazer o mesmo com qualquer comando que faça eco ao código de escape correto:

echo -en "\e]0;${PWD##*/}\a"

... mas você estaria constantemente lutando contra o bash para impedi-lo de usar o PS1 (a melhor maneira).

Steven K
fonte
2
Obrigado - eu não tinha percebido que o PS1 define o título e o prompt de forma independente. No meu .bashrc, no caso "$ TERM" no xterm * | rxvt *), defino PS1 = "[\ e] 0; $ {debian_chroot: + ($ debian_chroot)} \ W \ a] $ PS1" e faz exatamente o que eu queria.
Staring Frog
Esta questão faz um bom trabalho de explicar o que tudo o que PS1 gobbledygook meios: askubuntu.com/questions/404341/...
congusbongus
3

Sim. Anexar: \[\e]0;\W\a\]ao seu PS1. Isso não alterará a aparência das solicitações, mas definirá automaticamente o título das guias do terminal como o nome da base do diretório de trabalho atual.

LikeTheRock
fonte