Come posso accorciare il mio prompt della riga di comando (bash)?


Risposte:


242

Per cambiarlo solo per l'istanza terminale corrente

Basta inserire PS1='\u:\W\$ 'e premere Invio.


Per cambiarlo "permanentemente"

Nel tuo ~/.bashrc, trova la seguente sezione:

if ["$ color_prompt" = yes]; poi
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $ '
altro
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $'
fi

Rimuovere il simbolo @\he sostituirlo \wcon un maiuscolo \W, in modo che diventi:

if ["$ color_prompt" = yes]; poi
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ W \ [\ 033 [00m \] \ $ '
altro
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u: \ W \ $'
fi

Salvare, uscire, chiudere il terminale e avviarne un altro per vedere il risultato.


Molte altre opzioni!

  • Vedi qui per un howto più ampio, con molte più opzioni
  • Vedi questa risposta per usare un piccolo script Python per impostare il prompt in modo che l'accorciamento avvenga solo quando sei in profondità in una struttura di directory.

1
Puoi anche avere molte informazioni ... e poi un ritorno a capo alla fine come in unix.stackexchange.com/q/88780/10043
Michael Durrant,

C'è un modo per renderlo globale? In altre parole, se eseguo sudo su un altro utente, questa impostazione viene mantenuta, ma solo per me stesso (ovvero, non per l'utente quando normalmente usa il suo account)?
ctote del

Per avere un .bashrc condiviso che funziona sia su Linux che su OSX, da allora sono passato a unix.stackexchange.com/a/127800/10043
Michael Durrant,

cioè HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } TIME='\033[01;31m\]\t \033[01;32m\]' LOCATION=' \033[01;34m\]pwd | sed "s # (/ [^ /] \ {1, \} / [^ /] \ {1, \} / [^ /] \ {1, \} /). * (/ [^ /] \ { 1, \} / [^ /] \ {1, \}) / \ {0,1 \} # \ 1_ \ 2 # g "' BRANCH=' \033[00;33m\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
Michael Durrant,

ma vedi la risposta per il codice effettivo da utilizzare.
Michael Durrant,

104

Esegui questo codice nel terminale corrente

PROMPT_DIRTRIM=3

Ora il prompt di bash mostrerà solo gli ultimi 3 nomi di directory. Puoi scegliere 1 per mostrare solo la directory corrente. Maggiori informazioni sono disponibili nella documentazione GNU .

L'effetto:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

Se vuoi renderlo permanentemente, aggiungi la seguente riga ~/.bashrcall'inizio:

PROMPT_DIRTRIM=3

o un altro numero maggiore di zero.


7
Solo un sidenote: questo richiede Bash 4.
Stefan Lasiewski,

Bello ... ho aggiunto un bach_alias per questo (con una funzione) promptdir() { PROMPT_DIRTRIM=$1; }solo per rendere la vita più facile ...
dgoosens

18

Questa è la mia impostazione di prompt preferita:

aggiunto in ~/.bashrc

PS1='[\u@\h \W]\$ '    

sembra così:

[user@hostname dirname]$

(con uno spazio dopo il $segno)


Come aggiungerei uno spazio tra ogni parola? Inoltre, posso colorarlo?
Daniel Springer,

6

Personalmente preferisco vedere solo la cartella corrente nel prompt di bash. Posso farlo con il seguente comando:

PS1='\W\$ '

Se vuoi che abbia effetto dopo ogni avvio, aggiungi il comando sopra nel tuo ~ / .bashrc.


1

Mi rendo conto che questo è super vecchio, ma dal momento che nessuno ha suggerito di creare un alias ho pensato di postare. Usando Bash Prompt Escape Sequences ho creato un aliasshorten

In ~/.bash_aliasesqui si noterà la var $ Blu per impostare il colore prompt dei quali è possibile omettere o modificare in base alle preferenze ho anche chiaro il terminale quando si chiama accorciare.

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

Per ottenere la stringa di prompt desiderata dell'OP:

alias shorten='PS1="$USER:\W$ "'

Ho colori definiti in ~/.bashrccopia e incollati da https://wiki.archlinux.org/index.php/Color_Bash_Prompt . In una nota a margine che cosa è con i colori del codice ansi? Sono confuso solo a guardarlo.

Blue='\e[0;34m'         # Blue

Una guida passo passo per questo sarebbe così utile in quanto non ho idea di come arrivare a .bash_aliases. Grazie
Kayote il

2
"" il prefisso indica una directory o un file nascosti. La tilde "~" è una forma abbreviata della variabile $ HOME. Quindi, "~ / .bash_aliases" è solo una forma abbreviata di "/home/$USER/.bash_aliases". Per aprire ".bash_aliases" è possibile aprire un terminale e digitare "gedit /home/$USER/.bash_aliases" o "gedit ~ / .bash_aliases" o nella directory home digitare ctrl-h per mostrare i file nascosti e aprire il file direttamente . Spero che aiuti. Potresti voler fare una ricerca su Google anche per alias utili.
Allie Carver,

0

Ho scritto una funzione che puoi modificare in base alle tue esigenze:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

Posizionare questa funzione vicino o alla fine di ~/.bashrcdopo che la PS1linea è stata completamente calcolata.

Digiteresti termpromptogni volta che vuoi accorciare il tuo prompt o, hai termpromptchiamato dal fondo del tuo ~/.bashrcper la permanenza.

Il vantaggio di questa tecnica rispetto a molte altre risposte è che .bashrcpuò essere impostato PS1in quattro modi diversi (xterm + no-color, xterm + color, no-xterm + no-color, no-xterm + color). Questa risposta supporta tutti e quattro i metodi attuali e probabilmente anche quelli futuri.

Un altro vantaggio è che questo metodo ha codici di controllo meno complessi da attraversare per inserire le modifiche.

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.