2010-03-09 14 views
7

Ho recentemente aggiunto queste righe al mio file ~/.bashrc per mostrare il ramo corrente se sono in una cartella di lavoro git, e funziona bene per quella. Tuttavia, quello che ho perso è che il nome della cartella corrente veniva mostrato nella scheda del terminale che ho aperto, e ora non lo è: dice sempre solo "Terminale". Posso riaverlo e mantenere la roba del git? Ecco le righe in questione: è il secondo problema, poiché commentare solo la seconda riga risolve il problema.Impostazioni Bash PS1 - come richiamare la cartella corrente come titolo del terminale

source /etc/bash_completion.d/git 
PS1='\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ ' 

Sono stato a guardare le spiegazioni delle opzioni per PS1, ma non riesco a vedere nulla del titolo della finestra del terminale in là. Qualcuno può consigliare? grazie, max

EDIT

Io in realtà manipolo PS1 già al fine di avere un terminale con il formato

<rvm version and gemset> <computer name> <current folder> <git branch>

, con ogni parte in un colore diverso, ma non ho mai in realtà visto i documenti prima, quindi grazie per il link a questo. La mia impostazione PS1 corrente è

\[\033[0;31m\]$(__my_rvm_ruby_version)\[\033[0;33m\]\h\[\033[0;37m\]:\[\033[1;33m\]\W\[\033[1;32m\]$(__git_branch)\[\033[1;32m\]$(__git_dirty) \[\033[0;37m\]$ 

Presumibilmente posso fare qualcosa di simile

export "<something> $PS1" 

per impostare il mio terminale nome della scheda senza perdere le impostazioni esistenti. Ho pensato a questo e non sono riuscito a farlo.

MODIFICA - capito con l'aiuto di alcune delle risposte qui sotto - grazie a tutti! Ho avvolto in su in uno script di shell

#!/usr/bin/env bash 
#renames the current terminal tab via the PS1 env var 
source ~/.bashrc 
export PS1="$PS1""\[\e]0;$1 \a\]" 

si chiama "renametab", così ora posso chiamarlo, ad esempio con

source renametab mytabname 
è necessaria

"fonte" per esportare le modifiche nella shell corrente: se faccio solo renametab mytabname l'esportazione va in una subshell che viene uccisa quando termina lo script.

Grazie ancora a tutti, per l'aiuto!

risposta

4

Questo è quello che ho come default sul mio Ubuntu riguardante il titolo del terminale:

PS1='\[\e]0;\[email protected]\h: \w\a\]' 

Prepend vostro PS1 con questo e dovrebbe andare bene

+0

Perfetto, grazie Romuald! –

+0

Questo è quello che ho fatto, per evitare di perdere le mie attuali impostazioni PS1: 'pippo' dovrebbe essere sostituito dal valore reale. 'export PS1 =" $ PS1 "'\ [\ e] 0; foo \ a \]'' –

5

Si può provare:

PS1="$PS1"'\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ ' 

Ma sarebbe utile sapere che cosa è stato impostato su PS1 in precedenza in ~/.bashrc o in /etc/bash.bashrc.

+0

Funziona magnificamente - Adoro il riferimento alla variabile esistente! Con il mio .bashrc, ho dovuto eliminare '\ h: \ w' per rimuovere le voci ridondanti:' PS1 = "$ PS1" '$ (__ git_ps1 "\ [\ e [32m \] [% s] \ [\ e [0m \] ") $ '' – sage

0

Un altro modo per farlo è utilizzare PROMPT_COMMAND e lasciare che PS1 sia il prompt. Ad esempio:

PROMPT_COMMAND = 'echo -ne "\ 033] 0; $ {UTENTE} @ $ {HOSTNAME %%.*}: $ {PWD/# $ HOME/~} "; echo -ne "\ 007"'

0

Io uso questo:

PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/~} - ${USER}@${HOSTNAME}\007"' 

che si traduce in un titolo di finestra come questa:

/home/tkirk - [email protected] 
0

per la truelly indifesi (come me). Qui è la mia RC Bash che include nome del ramo git nel prompt e imposta il titolo della finestra. si noti che questo usa la PROMPT_COMMAND per __git_ps1, che definisce PS1 internamente. Quando si utilizza __git_ps1 questo modo ci vogliono 2 argomenti: il primo argomento è la stringa prima del nome del ramo, il secondo argomento è la stringa dopo la crusca nome ch

# 
# ~/.bashrc 
# 

# If not running interactively, don't do anything 
[[ $- != *i* ]] && return 

source ~/git/contrib/completion/git-prompt.sh 

alias ls='ls --color=auto' 
alias cd..='cd ..' 

c_reset='\[\e[0m\]' 
c_prompt='\[\e[1;31m\]' 
c_path='\[\e[0;33m\]' 

if [ -f ~/git/contrib/completion/git-prompt.sh ]; then 
. ~/git/contrib/completion/git-prompt.sh 
GIT_PS1_SHOWDIRTYSTATE=true 
GIT_PS1_SHOWCOLORHINTS=true 
GIT_PS1_UNTRACKEDFILES=true 
# Below, The section "\[\e]0;\w\a\]" sets the window title 
PROMPT_COMMAND="__git_ps1 '${c_path}\w${c_reset}' '\n\[email protected]\t${c_prompt}-->${c_reset}\[\e]0;\w\a\]' " 
fi 

#PS1 is set by the __git_ps1 script above, so comment out below 
#PS1='\w\n[\[email protected]\t]$>' 
2

Se siete fortunati, il vostro terminale è compatibile con Xterm, ed è possibile utilizzare le sequenze ANSI per impostare il titolo del terminale.

Invece di darti la sequenza, ti indicherò lo documentation. Ora puoi colorare la tua richiesta. La sequenza che ti serve è descritta come xterm title hack che è quello che è.

È inoltre possibile utilizzare le sequenze di controllo nel prompt per impostare PS1. Questi possono essere trovati nella pagina man di BASH sotto PROMPTING.

Ed ecco cosa ho nel mio .bashrc:

PS1="\e]0;BASH: \[email protected]\h\aBASH \v: \[email protected]\h:\w\n\$ " 
  • \e]0;BASH: \[email protected]\h\a - Imposta il titolo della finestra
    • \e] - Invia carattere ESC seguito da staffa chiusa a sinistra. Questo è l'inizio di una sequenza di comandi ANSI.
    • 0; - Zero seguito da un punto e virgola. La seguente stringa imposta il titolo
    • BASH: \[email protected]\h\ - My Window Title
      • \u - Nome utente
      • @ - Il simbolo @
      • \h - Nome host
    • \a - La BEL (Cnrl- G) che termina il mio titolo
  • BASH \v: \[email protected]\h:\w\n\$ - Imposta il mio prompt
    • BASH \v: - La stringa BASH seguita dalla versione. Il mio shell di default è Ksh, così quando sto usando la shell BASH, voglio vedere la parola BASH nella mia pronta
    • \u - Il nome utente
    • \h - Il nome host
    • \w - L'attuale directory di lavoro (basata su HOME)
    • \n - Nuova riga - Il mio prompt è a due righe. In questo modo, le directory lunghe non occupano lo spazio della riga di comando.
    • \$ - Segno di dollaro o # se si dispone dei privilegi di root.

giocare e divertirsi. Prova le diverse sequenze di escape. Aggiungi colore Incorpora le cose GIT. Esplorare.

Ricorda, è solo un computer. Il peggio che puoi fare è far crollare l'intero sistema e cancellare tutto il tuo prezioso lavoro, perdere il lavoro e diventare un paria senza speranza il cui unico mezzo di guadagno sarà chiedere ai clienti se vogliono patatine fritte con quello. A meno che tu lavori in una banca. Poi puoi anche abbattere l'intera economia globale.

+0

Non mi rendevo conto che avrei potuto distruggere la mia vita così accuratamente tramite la PS1 var! ;-) Grazie per il link ai documenti e per non aver detto 'rtfm noob lol'. Si prega di vedere la modifica nel mio OP - grazie! –

Problemi correlati