Prompt Della Shell

Il prompt della shell e' quella serie di caratteri prima dello spazio dove si scrive, per esempio sul mio computer quando apro un terminale mi appare:

 max@linux:~>

mentre se lo apre root:

 linux:/home/max #

La stringa iniziale e' una stringa identificata dalla variabile "PS1". Se si impostano valori particolari della variabile, si riescono ad ottenere una serie di risultati che possono sveltire l'uso del terminale. Per capire meglio cosa intendo provate a battere $ echo $PS1 e vedete il risultato ottenuto, sicuramente sara' una serie di caratteri senza senso per voi; ognuno di quei simboli ha un significato speciale, eccoli spiegati:

  • \a : Inserisce il carattere che significa BEEP!, cioe' il suono della campana di sistema. E' come se si premesse [CTRL+g].
  • \d : Stampa la data corrente.
  • \h : Stampa l'hostname del computer.
  • \n : Carattere che indica di andare a capo a scrivere
  • \t : L'ora esatta in forma di 0-24.
  • \@ :L'ora esatta in forma 0-12 a.m./p.m.
  • \w : La directory corrente.
  • \u : Il nostro user name.
  • \! : Il numero del comando nella storia dei comandi.

Tutti questi caratteri si possono mettere insieme, per esempio la mia variabile semplice PS1 e' la seguente:

 \u@\h:\w>

Se poi voglio qulacosa di piu' comodo, uso i COLORI. I colori sono dei codici non stampabili, e come tutti i caratteri non stampabili, nelle variabili cominciano e finiscono con:

 \[ \]

I colori invece cominciano col codice \033, una parentesi quadra e poi col codice del colore, ad esempio:

 $ echo -e "\033[1;31Ciao a tutti"

Se volete vedere un po' di colori eseguite questo script:

 #!/bin/bash
 # Author: ???
 #   This file echoes a bunch of colour codes to the terminal to demonstrate
 #   what's available.  Each line is one colour on black and gray
 #   backgrounds, with the code in the middle.  Verified to work on white,
 #   black, and green BGs (2 Dec 98).
 #
 echo "  On Light Gray:        On Black:"
 echo -e "\033[47m\033[1;37m  White        \033[0m 1;37m  \033[40m\033[1;37m  White        \033[0m"
 echo -e "\033[47m\033[37m  Light Gray   \033[0m 37m  \033[40m\033[37m  Light Gray   \033[0m"
 echo -e "\033[47m\033[1;30m  Gray         \033[0m 1;30m  \033[40m\033[1;30m  Gray         \033[0m"
 echo -e "\033[47m\033[30m  Black        \033[0m 30m  \033[40m\033[30m  Black        \033[0m"
 echo -e "\033[47m\033[31m  Red          \033[0m 31m  \033[40m\033[31m  Red          \033[0m"
 echo -e "\033[47m\033[1;31m  Light Red    \033[0m 1;31m  \033[40m\033[1;31m  Light Red    \033[0m"
 echo -e "\033[47m\033[32m  Green        \033[0m 32m  \033[40m\033[32m  Green        \033[0m"
 echo -e "\033[47m\033[1;32m  Light Green  \033[0m 1;32m  \033[40m\033[1;32m  Light Green  \033[0m"
 echo -e "\033[47m\033[33m  Brown        \033[0m 33m  \033[40m\033[33m  Brown        \033[0m"
 echo -e "\033[47m\033[1;33m  Yellow       \033[0m 1;33m  \033[40m\033[1;33m  Yellow       \033[0m"
 echo -e "\033[47m\033[34m  Blue         \033[0m 34m  \033[40m\033[34m  Blue         \033[0m"
 echo -e "\033[47m\033[1;34m  Light Blue   \033[0m 1;34m  \033[40m\033[1;34m  Light Blue   \033[0m"
 echo -e "\033[47m\033[35m  Purple       \033[0m 35m  \033[40m\033[35m  Purple       \033[0m"
 echo -e "\033[47m\033[1;35m  Pink         \033[0m 1;35m  \033[40m\033[1;35m  Pink         \033[0m"
 echo -e "\033[47m\033[36m  Cyan         \033[0m 36m  \033[40m\033[36m  Cyan         \033[0m"
 echo -e "\033[47m\033[1;36m  Light Cyan   \033[0m 1;36m  \033[40m\033[1;36m  Light Cyan   \033[0m"

Carino l'effetto che si ottiene, vero?

Ecco la mia PS1 piu' utilizzata:

 \[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$

Ecco un'ottima PS1 per root (rosso fuoco):

 \[\033[31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$