Prompt
Il prompt non e' altro che il sistema in attesa
di input dall'utente, la sua forma classica e':
nome_utente@nome_computer:[#,$]
il mio in questo momento appare come
[root@tontolo root]#
e mi sta' dicendo che sono l'utente "root" sulla macchina "tontolo" e mi
trovo nella mia home directory "root", se fossi stato un semplice utente
al posto del "#" ci sarebbe stato probabilmente un "$". Dico probabilmente
perche' quello che vediamo riflette i valori della variabile PS1 definita
nel file '/etc/profile' che e' di proprieta' dell'utente root, se noi
volessimo un prompt diverso potremmo ridefinire la variabile PS1
nel file ~/.bash_profile.
Questa variabile accetta dei valori predefiniti che sono ottenuti facendo
seguire alla barra rovesciata (backslash) dei caratteri speciali che sono:
\t l'ora corrente nel formato HH:MM:SS
\d la data in formato esteso es. "Tue May
18"
\n un carattere di nuova linea
\s il nome della shell
\w la directory corrente
\W il percorso completo alla directory corrente
\u il nome dell'utente
\h il nome della macchina
\# il numero del processo associato al comando in
esecuzione
\! la posizione numerica nel file storico dei comandi
\$ se l'UID e' 0 mostraun "#", altrimenti ub "$"
Quindi inserendo opportunamente questi caratteri possiamo modificarel'aspetto
del nostro prompt. Se assegno alla variabile PS1 i seguenti valori:
PS1="[\u@\h \W]\$"
il mio prompt mi apparira' cosi':
[root@tontolo /root]#
se modifico la variable cosi':
PS1="[\t \s]\$ "
il mio prompt mi apparira' cosi':
[12:18:24 bash]#
Oltre a questi caratteri speciali la variabile PS1 puo' contenere anche
comandi
per esempio se volessi far apparire la versione del kernel:
PS1="`uname -r` \$ "
il mio prompt mi apparira' cosi':
2.4.17#
Attenti all'uso delle virgolette , ho usato il carattere "`" non le classiche
virgolette "'", chiamato backticks o
virgolette rovescie.
La variable PS2 determina l'aspetto del prompt secondario e viene visualizzato
quando si digitano comandi incompleti. Questo succede quando abbiamo a che
fare con comandi molto lunghi, possiamo digitare il comando su piu' linee
facendo precedere il comando invio da una barra rovesciata (backslash),
a
quel punto la shell capira' che non abbiamo terminato e ci presentera'
il prompt secondario che significa che sta attendendo successivi comandi.
Se per sempio vogliamo vedere come si presenta il prompt secondario nella
nostra shell possiamo digitare
root@tontolo:#if [ -f /etc/profile ]; then
poi premiamo invio e ci accorgeremo di avere un prompt diverso il mio e':
>
in questo caso non abbiamo dovuto far precedere l'invio da una barra rovescia
perche' la shell riconosce i suoi costrutti di programmazione, volendo si
potrebbe digitare un semplice
'echo $PS2'
per ottenere direttamente il valore della variabile.
Tutto quello che e' stato detto per PS1 vale in linea di massima per PS2.
<ritorna>