Come posso usare il segno di freccia nel mio prompt di bash?


17

Come posso usare questi segni di freccia rossa e verde nel prompt di bash?

inserisci qui la descrizione dell'immagine

aggiornamento 1

Questo è il mio .bashrcfile

if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\ 
[\033[01;34m\]→  \w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}→  \w\$ '
fi
unset color_prompt force_color_prompt

Voglio che questa freccia sia colorata quando @dessert ha risposto prima (diventa rosso e verde per un comando falso e vero)

Risposte:


25

Puoi usare bash's PROMPT_COMMANDper eseguire una funzione che crea il tuo prompt, ad esempio:

PROMPT_COMMAND=build_prompt

build_prompt() {
  EXIT=$?               # save exit code of last command
  red='\[\e[0;31m\]'    # colors
  green='\[\e[0;32m\]'
  cyan='\[\e[1;36m\]'
  reset='\[\e[0m\]'
  PS1='${debian_chroot:+($debian_chroot)}'  # begin prompt

  if [ $EXIT != 0 ]; then  # add arrow color dependent on exit code
    PS1+="$red"
  else
    PS1+="$green"
  fi

  PS1+="→$reset  $cyan\w$reset \\$ " # construct rest of prompt
}

Aggiungi questo codice al tuo ~/.bashrcfile e apri un nuovo terminale o eseguilo . ~/.bashrcin uno esistente per rendere effettive le modifiche. Nota che \$alla fine ho aggiunto il solito , questo stampa $normalmente e #se sei root, impedendoti così di eseguire inconsapevolmente comandi come root. Il falsecomando è un buon modo per testare la variante del codice di uscita diversa da zero:

risultato

Se ti piacciono i temi rapidi, dovresti assolutamente dare un'occhiata alla zshshell (pacchetto zsh), il cui famoso framework di configurazione Oh My Zsh da solo include oltre cento temi . Inoltre ci sono molti altri plugin disponibili, ad esempio il prompt Spaceship ZSH .

link


1
Anche se questa è un'ottima soluzione plain-bash , potresti dare un'occhiata a zsh (in sostituzione di bash) e in particolare al prompt di Spaceship
Richard de Wit,
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.