Domanda

vorrei impostare il mio bash prompt per una larghezza fissa, e fare la differenza nello spazio prima del $, quindi se lungo o corto, i miei resti pronta la stessa larghezza:

[name@host] ~/Directory/Dir...Another/LastDir $ 
[name@host] ~/Directory(branch)               $ 

Al momento, in un breve percorso di directory il mio aspetto del prompt qualcosa di simile:

[name@host] ~/Directory(branch) $ 

una directory più profondi sguardi di percorso come questo:

[name@host] ~/Directory/Dir...Another/LastDir $ 

Si può vedere che ho troncato sul distacco dei lavoratori a metà in modo da poter vedere dove inizia il percorso, e dove finisce. Mi piacerebbe fare la differenza prima del $.

Questa è la mia attuale messaggio:

# keep working directory to 30 chars, center tuncated
prompt_pwd() {
  local pwd_symbol="..."
  local pwd_length=30
  newPWD="${PWD/#$HOME/~}"
  [ ${#newPWD} -gt ${pwd_length} ] && newPWD=${newPWD:0:12}${pwd_symbol}${newPWD:${#newPWD}-15}
}
# set prompt
prompt_color() {
  PROMPT_COMMAND='prompt_pwd;history -a;title_git'
  PS1="${WHITEONMAGENTA}[\u@\h]${MAGENTA} \w\$(parse_git_branch) ${MAGENTABOLD}\$${PS_CLEAR} "
  PS1=${PS1//\\w/\$\{newPWD\}}
    PS2="${WHITEONTEAL}>${PS_CLEAR} "
}

Nella mia ricerca, ho trovato Un prompt Largo Quanto il Terminale che fa fare un po 'di riempimento, ma non riusciva a farlo funzionare per questo particolare messaggio.

È stato utile?

Soluzione

Se il percorso è troppo breve ([ ${#newPWD} -le ${pwd_length} ]), è possibile utilizzare printf (1) per estenderla.

printf -v newPWD "%-*s" $pwd_length "$newPWD"

In questo modo sinistro giustificare la stringa $newPWD con una larghezza di campo di $pwd_length.

printf (1) è integrato in bash quindi non è troppo costosa da gestire ogni richiesta di conferma.

Altri suggerimenti

È possibile impostare l'BASH_COMMAND variabile d'ambiente, che permette di definire il manuale rapido. È possibile utilizzare expand -t per arrivare alla lunghezza desiderata.

Quello che ho fatto è la posizione mia directory e quali sopra la mia pronta, quindi non c'è bisogno di preoccuparsi di esso:

myusername@mybox:/home/myusername/some/directory
$ 

In questo modo, posso anche avere il vantaggio di copiare la linea di cui sopra per i comandi SSH SCP e senza dover anteporre l'utente @ host:. Esempio / directory

Ecco la mia variabile $ PS1, se si vuole provare:

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top