Inserisci Infobox

Leggere e visualizzare file

Comandi per visualizzare e leggere file: cat, less, more, tail, info, strings.

Visualizzare file
Autore: al - Ultimo Aggiornamento: 2009-01-28 18:08:40 - Data di creazione: 2009-01-28 18:05:47
Tipo Infobox: SLIDE - Skill: 1- NOVICE

Tramite la shell di Linux si possno utilizzare svariati comandi per visualizzare il contenuto di un file.

Principali comandi di visualizzazione file
cat - Visualizza il contenuto di un file di testo
less - Visualizza il contenuto di un file testo, pagina per pagina
tail - Visualizza l'ultima parte di un file di testo
head - Visualizza la prima parte di un file di testo
file - Analizza e mostra il tipo di un file
strings - Visualizza stringhe di testo all'interno di un file binario

Combinazioni di comandi utili
tail -f /var/log/messages - Visualizza il contenuto di un file di log mentre cresce. Fondamentale in attività di troubleshooting.
cat -v /tmp/testo.txt - Visualizza i contenuto di un file mostrando anche i caratteri nascosti (come gli a capo in formato MSDOS)
file /tmp/file  - Mostra di che tipo è il file specificato (testo Ascii, file audio o video, binario, documento word, immagine ecc.)

Comandi per visualizzare il contenuto di file
Autore: al - Ultimo Aggiornamento: 2003-11-27 17:49:06 - Data di creazione: 2003-11-27 17:49:06
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Su Unix sono disponibili svariati comandi che permettono la visualizzazione del contenuto di file di testo o binari.
Fare pratica con i principali è fondamentale per la normale attività sistemistica.
Tutti questi comandi hanno svariate opzioni e possibilità di eseguire operazioni anche complesse.
In genere si suggerisce di fare pratica con le funzionalità di base ed eventualmente usare le opzioni più evolute o rare in script shell o casi particolari.

cat Visualizza il contenuto di un file di testo
tac Fa esattamente la stessa cosa di cat, ma al contrario, visualizzando per prime le utile righe di un testo.
less Visualizza il contenuto di un file testo, pagina per pagina
more Come less, ma con meno funzioni
tail Visualizza l'ultima parte di un file di testo
head Visualizza la prima parte di un file di testo
file Analizza e mostra il tipo di un file
strings Visualizza stringhe di testo all'interno di un file binario

cat
Autore: al - Ultimo Aggiornamento: 2003-11-27 12:53:00 - Data di creazione: 2003-11-27 12:53:00
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Legge uno o più file e li scrive sullo standard output.
E' il comando Unix più comune per visualizzare un file ASCII senza interruzioni o particolari filtri.

cat [opzioni] [file]
-v (--show-nonprinting) Visualizza caratteri di controlli e non stampabili (ad eccezione dei LINEFEED e TAB).
-T (--show-tabs) Visualizza i caratteri TAB come ^I
-E (--show-ends) Visualizza $ alla fine di ogni riga (dove c'è un LINEFEED)
-A (--show-all) Corrisponde a -vET
-n (--number) Numera tutte le righe in output, iniziando da 1.

Esempi
cat -A file.dos Visualizza il contenuto di file.dos evidenziando la presenza di eventuali caratteri non stampabili (se il file è stato copiato o salvato da Windows avrà dei caratteri di fine riga, non necessari su Linux/Unix che possono creare problemi. Per rimuoverli usare il comando dos2unix)

more
Autore: al - Ultimo Aggiornamento: 2003-11-27 17:50:07 - Data di creazione: 2003-11-27 17:50:07
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza i file specificati una pagina alla volta.
E' comune in tutti gli Unix, ma in molti OS basati su utility GNU viene spesso sostituito o affiancato dall'analogo e più flessibile "less".
Con "SPAZIO" si scrolla l'output di una pagina, con "q" si torna alla shell.

more [opzioni] [file]
-r Visualizza caratteri speciali e di controllo
+ #numero Inizia a visualizzare dalla riga numero specificato
-num #numero Imposta le dimensioni dello schermo a #numero righe
-p Ripulisce ogni volta le pagine e non le scrolla. E' utile, con terminali che presentano problemi di visualizzazione, per rendere più leggibile l'output.

Una volta eseguito more si entra in modalità visualizzazione, in cui è possibile dare diversi comandi:
SPAZIO Visualizza la schermata di testo successiva
INVIO Visualizza la riga di testo successiva
q Esce da more e torna alla shell
/pattern Cerca il pattern indicato all'interno del testo
n Cerca l'occorrenza successiva dell'ultimo pattern cercato
!comando invoca la shell ed esegue il comando scritto
:n Salta al file successivo (quando si visualizzano più file
:p Salta al file precedente

less
Autore: al - Ultimo Aggiornamento: 2004-05-23 15:45:57 - Data di creazione: 2004-05-23 15:45:57
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza il contenuto di un file pagina per pagina, permettendo di scrollare al suo interno.
E' una versione più evoluta e recente di "more".
E' comune in tutti gli Unix che utilizzano utility GPL, Linux fra questi.

less [opzioni] [file]
-j #numero Inizia a visualizzare dalla riga numero specificato
- #numero Imposta il valore di default di linee scrollate (se non specificato è lo schermo intero)
-C Ripulisce ogni volta le pagine e non le scrolla. E' utile, con terminali che presentano problemi di visualizzazione, per rendere più leggibile l'output.
-o file Copia l'output sul file specificato nel caso in cui l'input provenga da una pipe.
-p pattern All'apertura del file visualizza la prima occorrenza del pattern specificato.

Una volta eseguito less si entra in modalità visualizzazione, in cui è possibile dare diversi comandi:
SPAZIO Visualizza la schermata di testo successiva (o avanza del numero di righe specificate con l'opzione - )
INVIO Visualizza la riga di testo successiva
FRECCIA SU-GIU Scrolla verso l'alto o verso il basso l'output
q Esce da less e torna alla shell
/pattern Cerca il pattern indicato all'interno del testo
n Cerca l'occorrenza successiva dell'ultimo pattern cercato
!comando invoca la shell ed esegue il comando scritto
:n Salta al file successivo (quando si visualizzano più file)
:p Salta al file precedente

tail
Autore: al - Ultimo Aggiornamento: 2003-11-27 17:54:29 - Data di creazione: 2003-11-27 17:54:29
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza le ultime righe (di default 10) di un file.
E' un comando Unix comune.
Con l'opzione -f visualizza il file continuamente, senza tornare alla shell: opzione molto utile per tenere sotto controllo dei log.

tail [opzioni] [file]
-f Non esce alla fine del file ma continua a visualizzarlo mentre cresce. Premere CTRL+C per tornare alla shell
- #numero Visualizza le ultime #numero righe del file specificato

Esempi
tail -f /var/log/maillog Visualizza l'ultima parte del file /var/log/maillog, continuando a scorrere il testo mano a mano che nuove righe si aggiungono al log. Questa funzionalità è molto comoda per diagnosticare problemi vari visualizzando in tempo reale file di log o debug.
tail -10 codice.txt Visualizza le ultime 10 righe del file codice.txt presente nella directory corrente.

file
Autore: al - Ultimo Aggiornamento: 2003-11-27 18:01:14 - Data di creazione: 2003-11-27 18:01:14
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Comando utile per capire la natura di un file che non si conosce. Identifica il tipo di file specificato sulla base di pattern definiti nel file di definizioni /etc/magic  (o /usr/share/magic )

file [opzioni] file
-s Controlla anche i file speciali a blocchi o a caratteri (tipicamente quelli in /dev )
-z Scomprime e prova a verificare il formato di file compressi

Esempi
file /bin/vi Mostra che tipo di file è /bin/vi
file -s /dev/hda1 Fornisce informazioni utili sulla partizione /dev/hda1

head
Autore: al - Ultimo Aggiornamento: 2004-05-23 15:46:23 - Data di creazione: 2004-05-23 15:46:23
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza le prime righe (di default 10) di un file.
E' un comando Unix comune.

head [opzioni] [file]
-#numero Visualizza le prime #numero righe del file specificato
-c #numero Stampa i primi #num byte

Esempi
head -5 /etc/group Visualizza le prime cinque righe di /etc/group
head -c5 /etc/group Visualizza i primi 5 caratteri di /etc/group

strings
Autore: al - Ultimo Aggiornamento: 2003-11-27 18:05:36 - Data di creazione: 2003-11-27 18:05:36
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza i caratteri stampabili all'interno di un file binario.
Comando comune in Unix, è comodo per verificare la presenza di stringhe di testo all'interno di un file binario compilato (il cui output tipicamente è un insieme di caratteri senza senso).
Precisamente visualizza, per il file specificato, qualunque stringa lunga almeno 4 caratteri stampabili e seguita da un carattere non stampabile.
E' utile per avere un'idea dei messaggi di testo utilizzati in un dato programma.

strings [opzioni] file
-a Scandisce l'intero file e non solo alcune parti
-n #numero  Imposta a #numero la lunghezza minima della stringhe da visualizzare (di default è 4)

Esempi
strings /usr/bin/passwd Visualizza tutte le stringe di caratteri stampabili (e quindi di testo) all'interno del file binario /usr/bin/passwd.

cat -v nomefile
Autore: al - Ultimo Aggiornamento: 2005-06-18 10:00:42 - Data di creazione: 2002-08-20 12:46:10
Tipo Infobox: BOFH - Skill: 3- INTERMEDIATE

Visualizza il contenuto di un file con i caratteri solitamente non visualizzati (ad esempio ^M che rappresenta un Carriage Return (CR) di troppo).
Utile per individuare caratteri estranei in file di testo (tipicamente importati da DOS) che ne compromettono la funzionalità.

Per convertire file ascii da DOS a Unix e viceversa esistono le utility dos2unix e unix2dos.
Su un testo DOS l'"a capo" viene fatto con due caratteri ASCII: CR (carriage return) e LF (line feed).
Su un testo Unix è sufficiente LF. Su un testo Mac, si usa CR.

Alcune opzioni di cat
Autore: fra - Ultimo Aggiornamento: 2005-08-16 13:40:10 - Data di creazione: 2005-07-07 15:07:48
Tipo Infobox: TIPS - Skill: 2- JUNIOR

cat -v nomefile
Visualizza il contenuto di un file con i caratteri solitamente non visualizzati. Utile per individuare caratteri estranei in file di testo.
cat >> [nomefile]
Usare cat come semplice editor di testo.
cat /dev/null > [nomefile]
Comando che ricorre nel frasario del sistemista Unix. Svuota il contenuto di un file, rendendolo di dimensioni 0.

Comandi per visualizzare il contenuto di un file
Autore: fra - Ultimo Aggiornamento: 2005-07-07 14:58:48 - Data di creazione: 2005-07-07 14:32:41
Tipo Infobox: SLIDE - Skill:

cat: Legge uno o più file e li scrive sullo standard output.
E' il comando Unix più comune per visualizzare un file ASCII senza interruzioni o particolari filtri.
more : Visualizza i file specificati una pagina alla volta.
less Visualizza il contenuto di un file pagina per pagina, permettendo di scrollare al suo interno. E' una versione più evoluta e recente di "more".
tail: Visualizza le ultime righe (di default 10) di un file.
head: Visualizza le prime dieci righe di un file.
file: Comando utile per capire la natura di un file che non si conosce. Identifica il tipo di file specificato sulla base di pattern definiti.
tac: esegue le stesse operazioni del comando cat ma alla rovescia,  ovvero la prima riga visualizzata sarà l'ultima contenuta del file.
string: Visualizza i caratteri stampabili all'interno di un file binario.

more `grep -l [pattern] [file]`
Autore: homer - Ultimo Aggiornamento: 2005-06-14 13:57:05 - Data di creazione: 2005-06-14 13:51:43
Tipo Infobox: BOFH - Skill: 2- JUNIOR

Visualizza, suddiviso per pagina con intestazione, il contenuto dei file trovati corrispondenti al criterio di ricerca.

Qualora sia necessario visualizzare il contenuto completo di un file, in relazione alla ricerca di un contenuto presente suo interno, è possibile utilizzare in combinazione il comando grep per la ricerca e more, che ne consente la visualizzazione pagina per pagina.

Supponendo di voler ricercare il pattern OpenSkills all'interno di tutti i file .txt presenti nelle directory corrente:
[azitti@pegasus azitti]$ more `grep -l OpenSkills *.txt`
::::::::::::::
prova.txt
::::::::::::::
Test txt file
for OpenSkills
::::::::::::::
test.txt
::::::::::::::
YATF = This is Yet Another Test File for OpenSkills
L'output di grep, ovvero il nome di ogni file (opzione -l) che corrisponde alla ricerca,  verrà passato in pasto a more

cat >> [nomefile]
Autore: homer - Ultimo Aggiornamento: 2008-02-18 23:50:52 - Data di creazione: 2005-03-28 11:29:08
Tipo Infobox: BOFH - Skill: 2- JUNIOR

Usare cat come semplice editor di testo.

Il comando cat, se utilizzato senza argomenti utilizza lo standard input, come input. Tramite l'uso dell'operatore di redirezione >> può essre utilizzato come una sorta di semplice editor multilinea.

root@Joker:~# cat >> /etc/hosts
192.168.0.15 ftp.joker.net
192.168.0.20 ftp.enigma.net
^D

Due nuove linee vengono accodate al file hosts, terminando l'input con control+D

tail -f [nomefile] | grep [pattern]
Autore: homer - Ultimo Aggiornamento: 2004-11-12 17:56:42 - Data di creazione: 2004-11-12 17:56:42
Tipo Infobox: BOFH - Skill: 2- JUNIOR

Visualizzare le ultime righe di un file, che soddisfano un determinato pattern di ricerca.

Usato tipicamente per tenere sotto controllo un file di log, è possibile raffinare ulteriormente la ricerca combinando il comando tai con grep in modo da visualizzare solo determinate informazioni.

Esempio:
root@enigma:/var/log/apache# tail -f access_log | grep 192.168.0.97
192.168.0.97 - - [23/Oct/2004:12:52:27 +0200] "GET / HTTP/1.1" 200 5703
192.168.0.97 - - [23/Oct/2004:12:52:28 +0200] "GET /style-enigma.css HTTP/1.1" 200 742
192.168.0.97 - - [23/Oct/2004:12:52:28 +0200] "GET /enigma.jpg HTTP/1.1" 200 21432
192.168.0.97 - - [23/Oct/2004:14:42:43 +0200] "GET / HTTP/1.1" 200 5703

Esempio di tail per visualizzare solo le richieste ad al Web Server apache dalla macchina 192.168.0.97

cat /dev/null > [nomefile]
Autore: homer - ( Revisione: al ) - Ultimo Aggiornamento: 2003-06-14 20:48:05 - Data di creazione: 2003-06-14 20:48:05
Tipo Infobox: BOFH - Skill: 2- JUNIOR

Comando che ricorre nel frasario del sistemista Unix.

Svuota il contenuto di un file, rendendolo di dimensioni 0.
E' un utilizzo particolare del comando cat, in quanto non è usato per visualizzare bensì per cancellare.

$ ls -la
[...] -rwxrwxrwx    1 al    None         4386 Feb 26 21:33 NetDiag.log

$ cat /dev/null > NetDiag.log
$ ls -la
[...] -rwxrwxrwx    1 al    None            0 Jun 14 15:41 NetDiag.log

tac
Autore: neo - Ultimo Aggiornamento: 2004-05-23 15:47:02 - Data di creazione: 2004-05-23 15:47:02
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Come si può immaginare dal nome del comando, esegue le stesse operazioni del comando cat ma alla rovescia,  ovvero la prima riga visualizzata sarà l'ultima contenuta del file.

tac [opzioni] [file]
-s STRINGS Utilizza un separatore prima di visualizzare una nuova linea
-r Interpreta il separatore come una regular expression

Privacy Policy