13.9. Manipolazione dei file con cat

Red Hat Linux dispone di un'utility per ordinare brevi elenchi, unirli e nello stesso tempo mostrarvi le informazioni sul vostro sistema.

L'utility cat, abbreviazione di concatenate, serve a combinare i file.

Il comando cat visualizza inoltre il contenuto di un intero file sullo schermo (per esempio, digitate cat filename.txt). Se il file è piuttosto lungo, il suo contenuto scorrerà velocemente sullo schermo. Per evitare ciò, usate il comando cat filename.txt | less.

Usando (|) ed il comando less viene visualizzata una pagina per volta del file. È possibile utilizzare i tasti freccia su e giù per spostarsi all'interno delle pagine. Per maggiori informazioni sui pipe, consultate la Sezione 13.10.

13.9.1. Utilizzo del ridirezionamento

Con il ridirezionamento la shell cambia l'input standard o la sua destinazione.

Per ridirezionare l'output standard utilizzate il simbolo >. Se si inserisce > dopo il comando cat (oppure dopo un'utility o applicazione che scrive all'output standard), questo direzionerà l'output generato al file che segue il simbolo.

Per esempio, il solo comando cat dà come risultato ciò che desiderate visualizzare sullo schermo, come se venisse ripetuta la linea appena digitata. L'esempio riportato di seguito mostra come cat ripete ogni linea immessa:

Figura 13-5. Il comando cat

Per ridirezionare l'output cat in un file, digitate quanto segue al prompt della shell (per spostarvi alla riga vuota successiva premete [Enter]):

cat > sneakers.txt

Figura 13-6. Ridirezionamento dell'output in un file

Premete [Enter] per passare a una linea vuota e utilizzate i tasti [Ctrl]-[D] per uscire da cat.

Notate nulla di diverso in Figura 13-6? Non è stato visualizzata alcuna voce ripetuta, perché l'output standard di cat è stato ridirezionato verso un nuovo file chiamato sneakers.txt.

Troverete il file nella directory in cui avete lanciato cat (digitate ls se volete visualizzarlo nell'elenco).

Come appreso in precedenza, potete utilizzare cat per leggere il file. Al prompt digitate:

cat sneakers.txt

CautelaAttenzione!
 

Fate attenzione 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.

Utilizzate il ridirezionamento dell'output verso un altro file chiamato home.txt. Per questo esempio, digitate: cat > home.txt, premete [Invio], digitate quanto seguente:

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.

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

cat sneakers.txt home.txt > saturday.txt

Figura 13-7. Unione dei file e ridirezionamento dell'output

Come potete vedere, cat ha aggiunto home.txt alla fine di sneakers.txt.

13.9.2. Accodare 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, ma altrove.

Tuttavia, quando utilizzate >>, state aggiungendo delle informazioni, invece di sostituire completamente il contenuto di un file.

Per chiarire questo concetto vi illustriamo un esempio pratico: prendete due file già creati (sneakers.txt e home.txt) e uniteli usando il simbolo di accodamento output. Per aggiungere le informazioni contenute in home.txt a quelle presenti in sneakers.txt digitate:

cat home.txt >> sneakers.txt

Ora controllate il file utilizzando il comando cat sneakers.txt. L'output finale visualizza il contenuto di home.txt alla fine del file.

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!

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

Aggiungendo l'output direttamente, avete risparmiato del tempo (e un po' di spazio sul disco) utilizzando file esistenti, piuttosto che crearne uno nuovo.

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

cat sneakers.txt; cat saturday.txt

Il contenuto di entrambi i file verrà visualizzato, prima sneakers.txt e poi saturday (come mostrato nella Figura 13-8).

Figura 13-8. Comandi stringa e file di confronto

13.9.3. Ridirezionamento dell'input standard

Non solo potete ridirezionare l'output standard, ma potete anche ridirezionare l'input standard.

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 minore-di (<) per separare il comando cat dal file, l'output di sneakers.txt viene letto da cat.

Figura 13-9. Ridirezionamento dell'input standard