Utilizzo di cat

Red Hat Linux possiede diverse utility per ordinare delle liste brevi, unirle e nello stesso tempo mostrarvi una piccola parte delle potenzialità ancora nascoste del vostro sistema.

L'utility cat, abbreviazione di "concatenate", serve a unire più stringhe insieme.

Il comando cat visualizza inoltre i contenuti di un intero file sullo schermo (per esempio, digitate cat filename.txt). L'uso di cat è utile se il file è breve.

Ma cat può eseguire anche una dimostrazione veloce di due termini importanti: input standard e output standard.

L'input o l'output standard direzionano l'input e l'output (spesso abbreviati come I/O). Se un programma legge l'input standard, si tratta di defaul di quello della tastiera. Se un programma scrive con l'output standard, scrive di default i dati sullo schermo.

Eseguite cat per vedere il suo funzionamento. Al prompt della shell digitate:

cat

Il cursore si sposta su una riga vuota. Digitate quindi:

stop by sneaker store

e premete Invio. Sullo schermo compare:

[newuser@localhost newuser]$ cat
stop by sneaker store
stop by sneaker store

Figura 10-7. Dimostrazione dell'uso di cat per l'input e l'output standard

Per uscire da cat, spostate il cursore su una linea bianca premendo Invio. Poi premete Ctrl-D contemporaneamente.

Sicuramente non si tratta di un esempio brillante, ma con cat abbiamo avuto la possibilità di mostrarvi i concetti di input e output standard. Il vostro input è stato letto dalla tastiera (input standard) ed è stato poi inviato al vostro terminale (output standard).

Ridirezionamento di input e output

Ridirezionare significa cambiare ciò che la shell considera come input o output standard.

Abbiamo usato cat per spiegare i concetti di input e output standard. Ora, usiamo cat per visualizzare il modo in cui l'output può essere ridirezionato.

Per ridirezionare l'output standard, usiamo il simbolo >. Mettendo > dopo il comando cat (o dopo ogni programma che scriva sullo standard output), l'output viene ridirezionato nel file indicato dopo questo simbolo.

Fate una prova. In un prompt di shell digitate:

[newuser@localhost newuser]$ cat > sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coffee

Figura 10-8. Ridirezionare l'output in un file

Ora premete il tasto Invio per andare in una linea vuota e utilizzate i tasti Ctrl-D per uscire da cat.

Notate la differenza? (Vedere Figura 10-8). Non è stato visualizzato niente perché lo standard output di cat è stato ridirezionato verso il file chiamato sneakers.txt .

Troverete il file nella vostra directory di login (vi suggeriamo di utilizzare ls se volete visualizzarlo).

Potete utilizzare cat per leggere il file, digitando:

cat sneakers.txt

al prompt.

CautelaNon sovrascrivete i file
 

State attenti quando ridirezionate l'output standard verso un file, perché rischiate di sovrascrivere un file esistente! Assicuratevi che il nome del file che state creando non sia il nome di un file già esistente, se non volete sovrascriverlo.

Ridirezioniamo l'output verso un altro file chiamato home.txt:

[newuser@localhost newuser]$ cat > home.txt
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

Ora, su una linea vuota, premete i tasti Ctrl-D per uscire da cat.

Possiamo visualizzare ancora il file digitando:

cat home.txt

al prompt.

Utilizzate cat per unire home.txt a sneakers.txt e ridirezionate l'output di entrambi i file verso un nuovo file chiamato saturday (troverete un esempio nella Figura 10-9). Digitate quanto segue:

[newuser@localhost newuser]$ cat sneakers.txt home.txt > saturday

Figura 10-9. Unire file e ridirezionare l'output

Controllate quello che avete appena fatto, digitando:

[newuser@localhost newuser]$ cat saturday

Dovrebbe comparire quanto segue:

[newuser @localhost newuser]$ cat saturday
buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!
[newuser @localhost newuser]$

Come potete notare, cat ha aggiunto home.txt al termine del file sneakers.txt.

SuggerimentoUnire i file con cat
 

Creare e unire file con cat può essere una valida alternativa a un editor di testi come Pico.

Aggiunta di informazioni con l'output standard

Potete usare il ridirezionamento dell'output per aggiungere nuove informazioni alla fine di un file esistente. In modo simile all'uso del simbolo >, indicate alla shell di non inviare l'informazione all'output standard.

Comunque quando usate >>, aggiungete informazioni, anziché sostituirle.

Per chiarire questo concetto vi illustriamo un esempio pratico: prendete due file già creati, per es. sneakers.txt e home.txt. Uniteli usando il simbolo di "unione" (>). Desiderate aggiungere le informazioni contenute in home.txt a quelle presenti in sneakers.txt, digitate dunque:

cat home.txt >> sneakers.txt

Ora controllate il file, digitando:

cat sneakers.txt

Abbiamo così aggiunto il contenuto di home.txt alla fine.

Il comando digitato ha indicato al sistema di aggiungere l'output del file home.txt al file sneakers.txt.

Aggiungendo l'output direttamente, abbiamo risparmiato uno o due passaggi (un pò di spazio sul disco) utilizzando file esistenti, piuttosto che crearne uno nuovo.

Confrontando i file sneakers.txt e saturday, noterete che sono identici. Per fare questo confronto, digitate:

cat sneakers.txt; cat saturday

Sono visualizzati i contenuti di entrambi i file, prima sneakers.txt e poi saturday (come mostrato nella Figura 10-10).

CautelaNon sostituite quando aggiungete
 

Ricordatevi che quando volete accodare l'output, dovete digitare i simboli >>. In caso contrario, create il file originale con quello che volevate aggiungere!

Figura 10-10. Comandi stringa e file di confronto

Ridirezionamento dell'input standard

Non solo potete ridirezionare lo standard output, ma anche lo standard input.

Quando utilizzate il simbolo < per ridirezionare l'input standard, indicate alla shell che un file deve essere utilizzato come input per un comando.

Per capire questo concetto, usate un file già creato. Digitate:

cat < sneakers.txt

Utilizzando il simbolo < per separare il comando cat dal file, l'output di sneakers.txt viene letto da cat.