GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Shell PS1:10 esempi per rendere il tuo Linux Prompt come Angelina Jolie

Foto per gentile concessione di f1r3storm85

Nell'articolo precedente, abbiamo discusso delle variabili di ambiente Linux PS[1-4] e PROMPT_COMMAND. Se utilizzata in modo efficace, PS1 può fornire informazioni preziose direttamente dal prompt dei comandi.

In Tomb Raider, Angelina Jolie ha tutti i gadget e le armi a portata di mano per risolvere il mistero con stile. Anche se il gadget e lo stile di Angelina Jolie sono difficili da eguagliare, proviamo almeno a rendere il buon vecchio prompt di Linux molto funzionale ed elegante usando i 10 esempi forniti in questo articolo.

1. Visualizza nome utente, nome host e directory di lavoro corrente nel prompt

La PS1 in questo esempio mostra le seguenti tre informazioni nel prompt:

  • \u – Nome utente
  • \h – Nome host
  • \w – Percorso completo della directory di lavoro corrente
-bash-3.2$ export PS1="\u@\h \w> "

ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>

2. Visualizza l'ora corrente nel prompt

Nella variabile d'ambiente PS1, puoi eseguire direttamente qualsiasi comando Linux, specificando nel formato $(linux_command). Nell'esempio seguente, viene eseguito il comando $(date) per visualizzare l'ora corrente all'interno del prompt.

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> "

ramesh@dev-db [11:09:56]>

Puoi anche usare \t per visualizzare l'ora corrente nel formato hh:mm:ss come mostrato di seguito:

ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [12:42:55]>

Puoi anche utilizzare \@ per visualizzare l'ora corrente nel formato 12 ore am/pm come mostrato di seguito:

ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[04:12 PM] ramesh@dev-db>

3. Visualizza l'output di qualsiasi comando Linux nel prompt

È possibile visualizzare l'output di qualsiasi comando Linux nel prompt. Nell'esempio seguente vengono visualizzati tre elementi separati da | (pipe) nel prompt dei comandi:

  • \!: Il numero di cronologia del comando
  • \h: nome host
  • $versione_kernel: L'output del comando uname -r dalla variabile $kernel_version
  • \$?: Stato dell'ultimo comando
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
473|dev-db|2.6.25-14.fc9.i686|0>

4. Cambia il colore di primo piano del prompt

Visualizza il prompt in colore blu, insieme a nome utente, host e informazioni sulla directory corrente

$ export PS1="\e[0;34m\u@\h \w> \e[m"
[Note: This is for light blue prompt]

$ export PS1="\e[1;34m\u@\h \w> \e[m"
[Note: This is for dark blue prompt]
  • \e[ – Indica l'inizio del prompt del colore
  • x;ym – Indica il codice colore. Utilizza i valori del codice colore indicati di seguito.
  • \e[m – indica la fine del prompt del colore

Tabella codici colore:

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
[Note: Replace 0 with 1 for dark color]

Rendi permanente il cambio di colore aggiungendo le seguenti righe a .bash_profile o .bashrc

STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

5. Cambia il colore di sfondo del prompt

Cambia il colore di sfondo specificando \e[{code}m nel prompt di PS1 come mostrato di seguito.

$ export PS1="\e[47m\u@\h \w> \e[m"
[Note: This is for Light Gray background]

Combinazione di sfondo e primo piano

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m"
[Note: This is for Light Blue foreground and Light Gray background]

Aggiungi quanto segue a .bash_profile o .bashrc per rendere permanenti lo sfondo e il colore di primo piano sopra.

STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

Gioca usando il seguente colore di sfondo e scegli quello che soddisfa i tuoi gusti:

  • \e[40 milioni
  • \e[41 milioni
  • \e[42 milioni
  • \e[43 milioni
  • \e[44 milioni
  • \e[45 milioni
  • \e[46 milioni
  • \e[47 milioni

6. Visualizza più colori nel prompt

Puoi anche visualizzare più colori nello stesso prompt. Aggiungi la seguente funzione a .bash_profile

function prompt {
  local BLUE="\[\033[0;34m\]"
  local DARK_BLUE="\[\033[1;34m\]"
  local RED="\[\033[0;31m\]"
  local DARK_RED="\[\033[1;31m\]"
  local NO_COLOR="\[\033[0m\]"
  case $TERM in
    xterm*|rxvt*)
      TITLEBAR='\[\033]0;\u@\h:\w\007\]'
      ;;
    *)
      TITLEBAR=""
      ;;
  esac
  PS1="\u@\h [\t]> "
  PS1="${TITLEBAR}\
  $BLUE\u@\h $RED[\t]>$NO_COLOR "
  PS2='continue-> '
  PS4='$0.$LINENO+ '
}

Puoi eseguire nuovamente il login per rendere effettive le modifiche o creare il file .bash_profile come mostrato di seguito.

$. ./.bash_profile
$ prompt
ramesh@dev-db [13:02:13]>

7. Cambia il colore del prompt usando tput

Puoi anche cambiare il colore del prompt PS1 usando tput come mostrato di seguito:

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

Capacità colore tput:

  • tput setab [1-7] – Imposta un colore di sfondo usando ANSI escape
  • tput setb [1-7] – Imposta un colore di sfondo
  • tput setaf [1-7] – Imposta un colore di primo piano usando ANSI escape
  • tput setf [1-7] – Imposta un colore di primo piano

capacità di attivazione della modalità testo:

  • mettere in grassetto – Imposta la modalità grassetto
  • diminuisci la luminosità – attiva la modalità semiluminosa
  • put smul – inizia la modalità sottolineatura
  • tput rmul – uscire dalla modalità sottolineatura
  • tput rev – Attiva la modalità inversa
  • metti SMS – Entra in modalità standout (grassetto su rxvt)
  • tput rmso – Esci dalla modalità straordinaria
  • tput sgr0 – Disattiva tutti gli attributi

Codice colore per tput:

  • 0 – Nero
  • 1 – Rosso
  • 2 – Verde
  • 3 – Giallo
  • 4 – Blu
  • 5 – Magenta
  • 6 – Ciano
  • 7 – Bianco

8. Crea il tuo prompt usando i codici disponibili per la variabile PS1

Usa i seguenti codici e crea il tuo prompt Linux PS1 personale che sia funzionale e adatto ai tuoi gusti. Quale codice di questo elenco sarà molto utile per l'uso quotidiano? Lascia il tuo commento e fammi sapere quale codice PS1 hai utilizzato per il prompt di Linux.

  • \a un carattere di campana ASCII (07)
  • \d la data nel formato "Data mese giorno feriale" (ad es. "Mar 26 maggio")
  • \D{format} – il formato viene passato a strftime(3) e il risultato viene inserito nella stringa del prompt; un formato vuoto risulta in una rappresentazione dell'ora specifica per la locale. Le parentesi graffe sono obbligatorie
  • \e un carattere di escape ASCII (033)
  • \h il nome host fino alla prima parte
  • \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 riga
  • \r andata e ritorno
  • \s il nome della shell, il nome base di $0 (la parte che segue la barra finale)
  • \t l'ora corrente nel formato 24 ore HH:MM:SS
  • \T l'ora corrente nel formato HH:MM:SS a 12 ore
  • \@ l'ora corrente nel formato 12 ore am/pm
  • \A l'ora corrente nel formato 24 ore HH:MM
  • \u il nome utente dell'utente corrente
  • \v la versione di bash (ad 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
  • \\ una barra rovesciata
  • \[ iniziare una sequenza di caratteri non stampabili, che potrebbe essere utilizzata per incorporare una sequenza di controllo del terminale nel prompt
  • \] termina una sequenza di caratteri non stampabili

9. Usa la funzione della shell bash all'interno della variabile PS1

Puoi anche invocare una funzione di shell bash nella PS1 come mostrato di seguito.

ramesh@dev-db ~> function httpdcount {
>  ps aux | grep httpd | grep -v grep | wc -l
> }

ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db [12]>
[Note: This displays the total number of running httpd processes]

Puoi aggiungere la seguente riga a .bash_profile o .bashrc per rendere permanente questa modifica:

function httpdcount {
  ps aux | grep httpd | grep -v grep | wc -l
}
export PS1='\u@\h [`httpdcount`]> '

10. Usa lo script della shell all'interno della variabile PS1

Puoi anche invocare uno script di shell all'interno della variabile PS1. Nell'esempio seguente, il file ~/bin/totalfilesize.sh, che calcola la dimensione totale del file della directory corrente, viene richiamato all'interno della variabile PS1.

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh

for filesize in $(ls -l . | grep "^-" | awk '{print $5}')
do
  let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"

ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [534 bytes]> cd /etc/mail
ramesh@dev-db [167997 bytes]>
[Note: This executes the totalfilesize.sh to display the total
       file size of the current directory in the PS1 prompt]


Quanta personalizzazione hai apportato alla tua PS1? La tua PS1 può battere Angelina Jolie? Lascia un commento e condividi la tua PS1 valore di richiesta.

Lettura consigliata

Bash Cookbook, di Carl Albing, JP Vossen e Cameron Newham . Bash è una shell molto potente. Questo libro ti aiuterà a padroneggiare il bash shell e diventare altamente produttivo. Che tu sia un amministratore di sistema, un DBA o uno sviluppatore, a un certo punto devi scrivere uno script di shell. Un amministratore di sistema saggio sa che una volta che hai imparato le tecniche di scripting della shell, puoi mettere i tuoi server in modalità pilota automatico lasciando che gli script della shell facciano il lavoro. Per accedere alla modalità pilota automatico di sysadmin, devi assolutamente padroneggiare gli esempi forniti in questo libro di cucina. Ci sono pochi libri tranquilli di Bash là fuori. Ma questo libro li supera tutti fornendo molti esempi dettagliati.
 
Raccomandamento aggiuntivo di libri su Linux:12 libri Linux straordinari ed essenziali per arricchire il cervello e la biblioteca
 
Se questo articolo ti è piaciuto, aggiungilo ai preferiti su del.icio.us e Stumble it.


Linux
  1. Come impostare la tua variabile $PATH in Linux

  2. Rendi invernale il tuo prompt Bash in Linux

  3. Come rendere natalizio il tuo terminale e shell Linux

  4. Esempi di comandi chsh in Linux

  5. Spingendo il mio prompt PS1 su ssh

Come personalizzare il prompt di Bash in Linux

Linux make comando spiegato con esempi

Rendi bello il tuo guscio di pesce usando Oh My Fish

Comando Bash Echo spiegato con esempi in Linux

Come installare Linux Bash Shell su Windows 10

Linux make Command con esempi