Guida avanzata a Solaris

Esecuzione dei comandi

Quando sullo schermo compare il prompt della shell, significa che il sistema è pronto per ricevere un comando dall'utente. Provare a digitare il comando date, come indicato nell'esempio (digitare date e premere il tasto Return):

$ date
lunedì, 3 febbraio 1993, 10:12:51 MET
$

Come si può osservare, questo comando visualizza la data e l'ora corrente. Si provi ora a digitare lo stesso comando con l'iniziale maiuscola:

$ Date
Date: Comando non trovato.
$

Come si può osservare, la D maiuscola non viene interpretata dal sistema allo stesso modo della d minuscola. Quasi tutti i comandi del sistema operativo SunOS devono essere digitati usando lettere minuscole.

Correzione degli errori di battitura

Se si è iniziato a digitare un comando, ad esempio Date, e ci si accorge di avere commesso un errore, è possibile correggerlo prima di premere il tasto Return. Il comando, infatti, viene inviato al sistema solo premendo il tasto Return e prima di allora non ha alcun effetto. Per correggere un errore di battitura si può procedere in due modi:

Fare una prova con entrambi i metodi per valutarne gli effetti. (Il tasto Canc/Back Space può variare a seconda dei sistemi. La combinazione Ctrl-U funziona su quasi tutti i sistemi.)

Esecuzione di comandi multipli o lunghi

Il sistema operativo SunOS permette di eseguire più comandi raggruppandoli in un'unica riga di comando. È sufficiente separare i comandi con un punto e virgola (;), come indicato nell'esempio con i comandi date e logname:

$ date; logname
lunedì, 3 febbraio 1993, 10:12:51 MET
stella
$

Come si può osservare, il sistema visualizza la data e l'ora corrente (risultato del comando date) e il nome di login dell'utente correntemente connesso al sistema (risultato del comando logname).

Se il comando da digitare è molto lungo, è possibile utilizzare una barra rovesciata (\) per continuare a scrivere sulla riga successiva. Ad esempio:

$ date; \
logname
lunedì, 3 febbraio 1993, 10:12:51 MET
stella
$

I comandi date e logname utilizzati nell'esempio, pur non essendo lunghi, dimostrano in modo semplice la possibilità di inserire una serie di comandi su più righe. Questa caratteristica risulta assai utile con un uso più avanzato del sistema, quando i comandi da inserire sono spesso più lunghi della larghezza dello schermo.


Nota -

Se si utilizza una Shell o una Finestra di comando nell'ambiente OpenWindows, per digitare i comandi su più righe non c'è bisogno di ricorrere alla barra rovesciata. Quando si raggiunge la fine di una riga, i comandi inseriti passano automaticamente alla riga successiva; l'intera sequenza viene quindi eseguita premendo il tasto Return.


Ripetizione di comandi precedenti


Nota -

La funzione di ripetizione dei comandi descritta in questo paragrafo è disponibile solo se si utilizza una C shell.


Un metodo rapido per ripetere l'ultimo comando consiste nel digitare !! e premere Return. Il sistema tiene in memoria una storia, cioè una registrazione cronologica dei comandi eseguiti ed è in grado di ripeterli. Ad esempio, se l'ultimo comando eseguito è date, digitando !! si otterrà quanto segue:

esempio% !!
date
lunedì, 3 febbraio 1993, 10:12:51 MET
esempio%

È anche possibile ripetere un qualsiasi comando già eseguito digitando !x, dove x è il numero del comando desiderato nella storia registrata dal sistema. Per visualizzare la lista dei comandi memorizzati, digitare history e premere Return. L'esempio seguente mostra un possibile output di questo comando:

esempio% history
1  pwd
2  clear
3  ls -l
4  cd /usr/home/worker
5  logname
6  date
7  history

Un altro metodo per ripetere un comando memorizzato consiste nel digitare ! seguito da un numero negativo. Ad esempio, per ripetere il penultimo comando eseguito, digitare quanto segue:

esempio% !-2
logname
stella
esempio%

In base alla registrazione cronologica, il sistema ha ripetuto il comando logname.

Un ulteriore metodo consiste nel digitare ! seguito dal primo carattere di un comando precedente. Ad esempio, se era stato inserito il comando clear per cancellare il contenuto dello schermo, lo stesso comando può essere ripetuto digitando !cl. Con questo metodo, tuttavia, occorre inserire un numero sufficiente di caratteri per rendere il comando identificabile in modo univoco. Se si inserisce una sola lettera dopo !, il sistema ripete il comando più recente che inizia con quella lettera.

Aggiunta di opzioni ai comandi

Molti comandi dispongono di opzioni che corrispondono a funzioni speciali. Ad esempio, il comando date dispone dell'opzione -u, che esprime l'ora nel fuso di Greenwich (GMT, Greenwich Mean Time) anziché nel fuso orario locale:

$ date -u
Lun, feb 3 10:12:51 GMT 1993
$

La maggior parte delle opzioni vengono espresse con un singolo carattere preceduto da un trattino (-). Non tutti i comandi dispongono di opzioni, mentre altri ne possiedono diverse. Per utilizzare più opzioni di uno stesso comando, è possibile digitarle sia separatamente (-a -b) che insieme (-ab).

Redirezione e piping dell'output di un comando

Se non specificato diversamente, i risultati (o output) dei comandi vengono visualizzati sullo schermo. Alcuni simboli speciali permettono tuttavia di redirigere l'output di un comando, ad esempio per salvarlo in un file anziché visualizzarlo sullo schermo. L'esempio seguente mostra l'uso del simbolo di redirezione (>):

$ date > file_di_prova
$ 

In questo esempio, l'output del comando date viene rediretto in un nuovo file di nome file_di_prova. Il contenuto di file_di_prova può a sua volta essere visualizzato con il comando more:

$ more file_di_prova
lunedì, 3 febbraio 1993, 10:12:51 MET
$

Come si può osservare, file_di_prova contiene l'output del comando date. (Per informazioni sul comando more, vedere Capitolo 3.)

In alcuni casi è possibile redirigere l'output di un comando perché venga utilizzato come input da un altro comando. Una serie di comandi collegati in questo modo viene detta pipeline. Il simbolo utilizzato per questo tipo di redirezione è una barra verticale (|) detta pipe.

Ad esempio, anziché salvare l'output di un comando in un file, è possibile utilizzarlo come input per un comando di stampa (lp) usando il simbolo di pipe (|). Per inviare l'output del comando date direttamente alla stampante, digitare quanto segue:

$ date | lp
$

L'output del comando date verrà stampato. (Per informazioni sull'uso del comando di stampa lp, vedere "Invio di una richiesta alla stampante di default" in Capitolo 8.)

Gli esempi di piping e redirezione illustrati finora sono piuttosto semplici, ma le potenzialilità di queste funzioni verranno ulteriormente approfondite nella descrizione di procedure più avanzate.

Esecuzione di comandi in background

In molti casi può essere comodo digitare un comando dal prompt di sistema e quindi lasciare che l'esecuzione avvenga in background. Se un comando non viene posto in background, il prompt non ricompare fino al termine della sua esecuzione. Perciò, per evitare i possibili tempi di attesa, si può rendere la finestra immediatamente disponibile per l'inserimento di altri comandi.

Per eseguire un processo in background, digitare una `e commerciale' (&) dopo il comando, come illustrato nell'esempio seguente. Il numero che compare è l'identificativo (id) del processo:

$ bigjob &
[1] 21414
$ 

Il comando bigjob verrà eseguito in background, lasciando la shell immediatamente disponibile per l'inserimento di altri comandi. Una volta completato il processo, inserendo un nuovo comando, ad esempio date, verrà visualizzato un messaggio simile al seguente:

$ date
lunedì, 3 febbraio 1993, 10:12:51 MET
[1]  + Done    bigjob
$ 

Se si desidera terminare la sessione di lavoro senza attendere il completamento di un processo in background, usare il comando nohup (no hangup) per consentirne l'esecuzione completa, come illustrato in questo esempio. In caso contrario, il processo in background verrà terminato al momento del logout:

$ nohup bigjob &
[1] 21414
$