Come impostare automaticamente il titolo del terminale sul nome della directory senza percorso


11

Attualmente, il titolo del mio terminale / tab bash è impostato in base alla directory in cui mi trovo. Ad esempio:

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

Questo non è molto utile se ho più schede aperte affiancate. Ad esempio, se ho 4 schede della directory sopra aperta aperta fianco a fianco, tutto ciò che vedo è

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

4 volte.

Vorrei che tutti i titoli dei miei terminali fossero impostati automaticamente sull'ultima parte del percorso. Nell'esempio sopra, vorrei che il titolo fosse

yesterday

Ovviamente, il titolo dovrebbe cambiare quando cambio directory. Mi piacerebbe farlo senza cambiare il mio prompt, quindi il prompt e il titolo del terminale dovrebbero essere diversi.

C'è un modo per fare questo?


Risposte:


11

Perché vuoi farlo senza modificare la tua variabile PS1? Questo è il modo corretto di farlo.

Se esegui quanto segue, otterrai ciò che desideri:

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

Questo sta solo prendendo il prompt predefinito:

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 la sostituzione \u@\h: \wcon \W.

Puoi fare la stessa cosa con qualsiasi comando che fa eco al giusto codice di escape:

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

... ma poi combatteresti costantemente bash per impedirgli di farlo usando PS1 (il modo migliore).


2
Grazie - Non avevo capito che PS1 imposta il titolo e il prompt in modo indipendente. Nel mio .bashrc, nel caso "$ TERM" in xterm * | rxvt *), ho impostato PS1 = "[\ e] 0; $ {debian_chroot: + ($ debian_chroot)} \ W \ a] $ PS1" e fa esattamente quello che volevo.
Staring Frog,

Questa domanda fa un buon lavoro nel spiegare cosa significhi tutto ciò che PS1 gobbledygook
congusbongus

3

Sì. Prepend: \[\e]0;\W\a\]alla tua PS1. Ciò non cambierà l'aspetto dei prompt, ma imposterà automaticamente il titolo delle schede del terminale sul nome base della directory di lavoro corrente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.