Ricerca…


Modifica prompt PS1

Per cambiare PS1, devi solo cambiare il valore della variabile di shell PS1. Il valore può essere impostato in ~/.bashrc o /etc/bashrc , a seconda della distro. PS1 può essere modificato in qualsiasi testo normale come:

PS1="hello "

Oltre al testo semplice, sono supportati numerosi caratteri speciali con escape alla barra rovesciata:

Formato Azione
\a un carattere campana ASCII (07)
\d la data nel formato "Data del giorno della settimana" (es. "Mar 26 maggio")
\D{format} il formato viene passato a strftime (3) e il risultato viene inserito nella stringa di richiesta; un formato vuoto produce una rappresentazione temporale specifica della locale. Le parentesi sono obbligatorie
\e un carattere di escape ASCII (033)
\h il nome host fino al primo '.'
\H il nome host
\j il numero di lavori attualmente gestiti dalla shell
\l il nome di base del nome del dispositivo terminale della shell
\n nuova linea
\r ritorno a capo
\s il nome della shell, il nome di base di $ 0 (la parte che segue la barra finale)
\t l'ora corrente nel formato HH: MM: SS di 24 ore
\T l'ora corrente nel formato HH: MM: SS di 12 ore
\@ l'ora corrente nel formato am / pm delle 12 ore
\A l'ora corrente nel formato HH: MM a 24 ore
\u il nome utente dell'utente corrente
\v la versione di bash (es. 2,00)
\V il rilascio di bash, versione + livello di patch (es. 2.00.0)
\w la directory di lavoro corrente, con $ HOME abbreviato con una tilde
\W il nome di base della directory di lavoro corrente, con $ HOME abbreviato con una tilde
\! il numero di cronologia di questo comando
\# il numero di comando di questo comando
\$ se l'UID effettivo è 0, un #, altrimenti un $
\nnn* il carattere corrispondente al numero ottale nnn
\ un backslash
\[ iniziare una sequenza di caratteri non stampabili, che potrebbe essere utilizzata per incorporare una sequenza di controllo terminale nel prompt
\] termina una sequenza di caratteri non stampabili

Ad esempio, possiamo impostare PS1 su:

PS1="\u@\h:\w\$ "

E produrrà:

utente @ macchina: ~ $

Mostra un ramo git usando PROMPT_COMMAND

Se sei all'interno di una cartella di un repository git, potrebbe essere bello mostrare il ramo corrente su cui ti trovi. In ~/.bashrc o /etc/bashrc aggiungi quanto segue (per funzionare, git è necessario):

function prompt_command {
    # Check if we are inside a git repository
    if git status > /dev/null 2>&1; then
        # Only get the name of the branch
        export GIT_STATUS=$(git status | grep 'On branch' | cut -b 10-)
    else
        export GIT_STATUS=""
    fi
}
# This function gets called every time PS1 is shown
PROMPT_COMMAND=prompt_command

PS1="\$GIT_STATUS \u@\h:\w\$ "

Se siamo in una cartella all'interno di un repository git questo produrrà:

ramo utente @ macchina: ~ $

E se siamo all'interno di una cartella normale:

utente @ macchina: ~ $

Mostra il nome del ramo git nel prompt del terminale

Puoi avere funzioni nella variabile PS1, assicurati solo di quotarlo o usare escape per caratteri speciali:

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}

PS1='\u@\h:\w$(gitPS1)$ '

Ti darà una richiesta come questa:

user@Host:/path (master)$ 

Gli appunti:

  • Apportare le modifiche in ~/.bashrc o /etc/bashrc o ~/.bash_profile o ~./profile File ~./profile (a seconda del sistema operativo) e salvarlo.
  • Esegui source ~/.bashrc (distro specifico) dopo aver salvato il file.

Mostra il tempo nel prompt del terminale

timeNow(){
    echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '

Ti darà una richiesta come questa:

[05:34:37 PM] user@Host:/path$ 

Gli appunti:

  • Apportare le modifiche in ~/.bashrc o /etc/bashrc o ~/.bash_profile o ~./profile File ~./profile (a seconda del sistema operativo) e salvarlo.
  • Esegui source ~/.bashrc (distro specifico) dopo aver salvato il file.

Colorare e personalizzare il prompt del terminale

Ecco come l'autore imposta la sua variabile personale PS1 :

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}
#Please use the below function if you are a mac user
gitPS1ForMac(){
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
timeNow(){
    echo "$(date +%r)"
}
if [ "$color_prompt" = yes ]; then
  if [ x$EUID = x0 ]; then
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;31m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;31m\]:/#\[\033[00m\] '
  else
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;32m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;32m\]:/$\[\033[00m\] '
  fi
else
    PS1='[$(timeNow)] \u@\h \w$(gitPS1) :/$ '
fi

Ed ecco come appare il mio prompt: inserisci la descrizione dell'immagine qui

Riferimento di colore:

# Colors
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

Gli appunti:

  • Apportare le modifiche in ~/.bashrc o /etc/bashrc o ~/.bash_profile o ~./profile File ~./profile (a seconda del sistema operativo) e salvarlo.

  • Per root potresti dover modificare anche il file /etc/bash.bashrc o /root/.bashrc

  • Esegui source ~/.bashrc (distro specifico) dopo aver salvato il file.

  • Nota: se hai salvato le modifiche in ~/.bashrc , ricorda di aggiungere source ~/.bashrc nel tuo ~/.bash_profile modo che questa modifica in PS1 venga registrata ogni volta che si avvia l'applicazione Terminale.

Mostra lo stato e il tempo di ritorno del comando precedente

A volte abbiamo bisogno di un suggerimento visivo per indicare lo stato di ritorno del comando precedente. Lo snippet seguente lo mette in testa alla PS1.

Nota che la funzione __stat () dovrebbe essere chiamata ogni volta che viene generato un nuovo PS1, altrimenti si attaccherà allo stato di ritorno dell'ultimo comando di .bashrc o .bash_profile.

# -ANSI-COLOR-CODES- #
Color_Off="\033[0m"
###-Regular-###
Red="\033[0;31m"
Green="\033[0;32m"
Yellow="\033[0;33m"
####-Bold-####

function __stat() {
    if [ $? -eq 0 ]; then
        echo -en "$Green ✔ $Color_Off "
    else
        echo -en "$Red ✘ $Color_Off "
    fi
}

PS1='$(__stat)'
PS1+="[\t] "
PS1+="\e[0;33m\u@\h\e[0m:\e[1;34m\w\e[0m \n$ "

export PS1

inserisci la descrizione dell'immagine qui



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow