| Italia - Italiano |
|
|
|
![]() |
Uso di HP-UX: Server e workstation HP > Capitolo 3 Uso
della shellComprensione di input standard, output standard ed errore standard |
|
Ogni processo apre tre “file” standard: input standard (stdin), output standard (stdout), ed errore standard (stderr). I programmi li usano nel seguente modo:
La figura di seguito illustra il rapporto tra questi file ed il processo. La shell consente di ridirezionare l’output standard di un processo dallo schermo (il default) ad un file. Ridirezionando l’output si ha la possibilità di memorizzare il testo creato da un comando in un file; rappresenta inoltre un modo comodo per selezionare i file o i dispositivi (come le stampanti) che usa un programma. Nella sua forma più semplice, la sintassi del comando è la seguente: stdout
dove comando è il comando il cui output è ridirezionato e outfile è il nome del file su cui il processo scrive il suo output standard. Se il file di output esiste, i suoi contenuti precedenti andranno perduti. Se il file non esiste, sarà creato. Per aggiungere l’output ad un file esistente, usare due segni di ‘maggiore di’ (>>) che puntano verso il file da aggiungere. Questa figura illustra dove vanno stdin, stdout e stderr quando si ridireziona l’output verso un file. L’esempio di seguito illustra il ridirezionamento dell’output usando il comando who, che visualizza una lista di utenti attualmente collegati al sistema. Invece di visualizzare gli utenti sullo schermo del terminale, l’output è ridirezionato al file whoison. who(1)
La shell consente di ridirezionare l’input standard di un processo in modo che l’input sia letto da un file invece che dalla tastiera. Per ridirigere l’input di un processo, separare il comando ed il nome del file di input con un segno di ‘minore di’ (<) orientato verso il nome del comando. È possibile usare il ridirezionamento dell’input con qualsiasi comando che accetti l’input da stdin (tastiera). Nella sua forma più semplice, la sintassi del comando è la seguente: stdin
dove comando è il comando il cui input è ridirezionato e infile è il nome del file da cui il processo legge l’input standard. Perché il ridirezionamento riesca, occorre che il file esista. La figura di seguito illustra dove vanno stdin, stdout e stderr quando si ridireziona l’input da un file. Nel seguente esempio, l’output standard dal comando who è ridirezionato ad un file denominato savewho. Poi, il comando more visualizza i contenuti di savewho. Infine, si ridireziona l’input standard per il comando wc (word count) perchè provenga dal file savewho: Uso di “>”
Uso di “<“
Nell’esempio precedente, il comando wc con l’opzione -l conta il numero di righe contenute nel file di input. Poichè l’input è ridirezionato da savewho, tale numero è uguale al numero di utenti collegati al sistema quando si è eseguito il comando who. È possibile ridirigere sia l’input standard sia l’output standard di un unico comando. Tuttavia, non usare lo stesso nome file per l’input standard e l’output standard, poichè i contenuti originali del file di input sono andati perduti. La seguente figura illustra dove stdin, stdout e stderr sono diretti quando sia l’output sia l’input sono diretti da e verso dei file. Il seguente esempio usa il comando sort per ordinare il testo digitato sulla tastiera. Digitando CTRL-D si termina l’input standard. L’output standard compare visualizzato sullo schermo del terminale come segue: sort(1)
Nell’esempio che segue, si ridirige l’input:
Nell’esempio precedente, il comando sort usa un file denominato socks come input. L’output standard compare visualizzato sullo schermo del terminale. L’esempio successivo combina il ridirezionamento sia dell’input sia dell’output:
In questo esempio, il comando sort legge l’input dal file socks e legge l’output sul file sortsocks; così, l’output standard (a differenza dei primi due esempi) non compare visualizzato sullo schermo. La shell consente di connettere due o più processi in modo da utilizzare l’output standard di un processo come input standard di un altro processo. La connessione che unisce i processi è un pipe. Per connettere mediante pipe l’output di un processo in un altro, occorre separare i comandi con una barra verticale (|). La sintassi generale per un pipe è la seguente:
dove comando1 è il comando il cui output standard è ridirezionato o connesso mediante pipe ad un altro comando e comando2 è il comando il cui input standard legge l’output del comando precedente. È possibile combinare due o più comandi in un unico pipeline. Ogni comando seguente ha il suo output connesso mediante pipe come input del comando successivo sulla riga di comando:
Nel seguente esempio, l’output dal comando who è nuovamente memorizzato nel file savewho. Poi, il file savewho è usato come input sul comando wc: wc(1)
Con un pipeline, questi due comandi diventano uno:
Come illustrato da questo esempio, usando i pipe si elimina la necessità di avere dei file intermedi temporanei. Invece, l’output standard proveniente dal primo comando è inviato direttamente al secondo comando come input standard di quest’ultimo. Il comando tee consente di deviare una copia dei dati che transitano tra i comandi ad un file senza modificare le modalità di funzionamento del pipeline. L’esempio che segue usa il comando who per stabilire chi si trova sul sistema. Nell’esempio, illustrato ulteriormente nella figura che segue, l’output proveniente da who è connesso mediante pipe nel comando tee, che salva una copia dell’output nel file savewho e passa l’output invariato al comando wc: tee(1)
HP-UX fornisce programmi filtro usati nei pipeline. Tali programmi accettano input di testo, trasformando il testo in qualche modo e producono del testo come output. I comandi filtro includono adjust, awk, more, cut, grep, head, more, pr, rev, sed, sort, spell e tail. Per informazioni su questi comandi, consultare le manpage. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||