5.7 Visualizzazione del contenuto di un file
Il contenuto di un file di testo può essere visualizzato sia con il comando cat (man page
cat(1)) che per mezzo di appositi programmi, i text viewer (visualizzatori di testo), i
quali suppongono che il file sia in formato testo, ovvero che non abbia alcun tipo di
formattazione.
____________________________________________________________________
Comando: cat
Path: /bin/cat
SINTASSI
$ cat [option] [file]
DESCRIZIONE
-
option indica le opzioni di funzionamento di cat. Può assumere i seguenti valori:
-
-A | --show-all
come -vET;
-
-b | --number-nonblank
numera le righe non vuote visualizzate sullo schermo;
-
-e come -vE;
-
-E | --show-ends
visualizza il carattere ‘$’ alla fine di ogni riga;
-
-n | --number
numera le righe visualizzate sullo schermo;
-
-s | --squeeze-blank
raggruppa le righe vuote consecutive in un’unica riga;
-
-t come -vT;
-
-T | --show-tabs
visualizza il carattere TAB come ‘^I’;
-
-v | --show-nonprinting
visualizza i caratteri non stampabili con la notazione ^ (tranne per i
caratteri LF e TAB);
-
--help visualizza un aiuto sommario di cat;
- --version
visualizza la versione di cat;
-
file specifica il file da visualizzare;
Se non viene specificato nessun file o file è costituito dal carattere ‘-’, viene considerato lo
standard input._______________________________________________________________________________________________
Ad esempio, il seguente comando
$ cat ~/.bashrc
visualizza il contenuto del file ~/.bashrc, che può essere, ad esempio, quello riportato di
seguito.
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Anche i comandi head (man page head(1)) e tail (man page tail(1)) permettono di
visualizzare le prime o ultime n righe di un file.
____________________________________________________________________
Comando: head
Path: /usr/bin/head
SINTASSI
$ head [option] [file]
DESCRIZIONE
-
option indica le opzioni di funzionamento di head. Può assumere i seguenti valori:
-
-c size | --bytes=size
indica di visualizzare i primi size byte del file (il valore size è
numerico, ma può essere seguito da una lettera che moltiplica il valore
che la precede: b 521, k 1 024, m 1 048 576);
-
-n num | --lines=num
indica di visualizzare le prime num righe del file (default 10);
-
-q | --quiet | --silent
indica di non visualizzare le intestazioni;
-
-v | --verbose
indica di visualizzare le intestazioni;
-
--help visualizza un aiuto sommario di head;
- --version
visualizza la versione di head;
-
file specifica il nome del file di cui visualizzare le prime righe (se omesso viene
considerato lo standard input);
____________________________________________________________________
___________________________________________________________________________________________________________
Comando: tail
Path: /usr/bin/tail
SINTASSI
$ tail [option] [file]
DESCRIZIONE
-
option indica le opzioni di funzionamento di tail. Può assumere i seguenti valori:
- --retry
indica di riprovare automaticamente ad aprire il file se ci sono
problemi al primo accesso (v. opzione -f);
-
-c size | --bytes=size
indica di visualizzare gli ultimi size byte del file (il valore size è
numerico, ma può essere seguito da una lettera che moltiplica il valore
che la precede: b 521, k 1 024, m 1 048 576). Se il primo carattere di
size è + viene visualizzato il contenuto del file a partire dal size-esimo
byte;
-
-f | --follow[={name|descriptor}]
indica di visualizzare aggiornandole continuamente le righe finali del
file man mano che esso cresce. Per default tail non riapre ogni
volta il file, ma utilizza il suo descrittore (--follow=descriptor).
Per effettuare una riapertura del file ad ogni iterazione è necessario
specificare --follow=name;
-
-F come --follow=name --retry;
-
-n num | --lines=num
indica di visualizzare le ultime num righe del file (default 10);
- --max-unchanged-stats=num
con l’opzione --follow=name indica di riaprire il file se esso non è
variato dopo num iterazioni (default 5) per controllare se esso è stato
cancellato o rinominato (utile nei file di log ciclici);
-
--pid=PID
con l’opzione -f indica di terminare l’esecuzione quando termina il
processo identificato da PID;
-
-q | --quiet | --silent
indica di non visualizzare le intestazioni;
-
-s sec | --sleep-interval=sec
specifica il numero di secondi (sec) tra le iterazioni (default 1);
-
-v | --verbose
indica di visualizzare le intestazioni;
-
--help visualizza un aiuto sommario di tail;
- --version
visualizza la versione di tail;
-
filecon l’opzione -f specifica il nome del file di cui visualizzare le ultime righe (se omesso
viene considerato lo standard input);
________________________________________________________________________
I text viewer più utilizzati sui sistemi Unix-like sono more e less. Questi permettono la
visualizzazione di file in formato testo, e forniscono all’utente gli strumenti per poter scrorrere
il contenuto del file e soffermarsi sulla parte che interessa.
__________________________________________________________________________________________________________
Comando: more
Path: /bin/more
SINTASSI
$ more [option] file
DESCRIZIONE
-
option indica le opzioni di funzionamento di more. Può assumere i seguenti valori:
-
-num indica il numero di linee (num) dello schermo;
-
-d visualizza dei messaggi
di aiuto tipo ‘Premere spazio per continuare, q per uscire’ e
‘Premere h per le istruzioni’ anziché avvertire l’utente con un
segnale acustico in caso di comando non riconosciuto;
-
-l annulla il comportamento di default che fa fermare la visualizzazione
al carattere ASCII FF (salto pagina);
-
-f abilita il conteggio delle linee logiche anziché quelle relative allo
schermo (le righe che contengono più di 80 caratteri non vengono
considerate come righe separate);
-
-p indica di non effettuare lo scroll del testo, ma di cancellare lo schermo
e mostrare quindi nuovamente il contenuto del testo;
-
-c indica di non effettuare lo scroll del testo, ma di riscrivere il contenuto
dello schermo a partire sempre dalla prima riga;
-
-s raggruppa le linee vuote consecutive in una sola riga vuota;
-
-u annulla la sottolineatura del testo;
-
+/string
specifica la ricerca della stringa string all’interno del testo prima di
visualizzarlo;
-
+/num inizia la visualizzazione dalla riga indicata dal numero num;
-
file è il file (comprensivo eventualmente di path relativo o assoluto) da visualizzare.
_____________
Il comando more è dotato anche di comandi interattivi che vengono impartiti per mezzo
dell’ultima riga dello schermo che non viene utilizzata per visualizzare il testo del file
specificato. I comandi interattivi si basano su quelli di vi (v. più avanti) e sono riportati nella
tab. 5.5.
| Tabella 5.5: | Comandi di more. |
|
Ad esempio, il comando
$ more ~/.bashrc
visualizzerà una schermata analoga a quella seguente
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
BLACK="\[\033[0;30m\]"
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"
BROWN="\[\033[0;33m\]"
BLUE="\[\033[0;34m\]"
PURPLE="\[\033[0;35m\]"
CYAN="\[\033[0;36m\]"
LIGHTGRAY="\[\033[0;37m\]"
DARKGRAY="\[\033[1;30m\]"
LIGHTRED="\[\033[1;31m\]"
LIGHTGREEN="\[\033[1;32m\]"
YELLOW="\[\033[1;33m\]"
--More--(62%)
in cui è visualizzato il contenuto del file .bashrc presente nella home directory di ogni
utente.
Il file .bashrc qui presentato è stato opportunamente modificato per
aumentarne il numero di righe in modo tale da oltrepassare il numero di righe
dello schermo, altrimenti more terminerebbe subito dopo averlo visualizzato (e non
apparirebbe nessuna indicazione della percentuale di visualizzazione del file).
|
Per uscire da more si può premere il tasto
.
Il comando less (man page less(1)) nasce come contrapposizione a more e ne estende
notevolmente le funzionalità.
____________________________________________________________________
Comando: less
Path: /usr/bin/less
SINTASSI
$ less [option] file
DESCRIZIONE
-
option indica le opzioni di funzionamento di less. Può assumere i seguenti valori:
-
-? | --help
visualizza un aiuto sintetico del comando less;
-
-a | --search-skip-screen
fa in modo che le ricerche vengano effettuate dopo l’ultima riga
visualizzata sullo schermo;
-
-bn | --buffers=n
specifica il numero di buffer che less deve utilizzare per visualizzare
ogni file (i buffer sono della dimensione di 1 KB e per default vengono
utilizzati 10 buffer per file);
-
-B | --auto-buffers
per default, quando i dati da visualizzare sono letti da una pipe,
i buffer vengono allocati automaticamente (per quanto ce n’è bisogno).
Questa opzione disabilita l’allocazione automatica in modo tale che
vengano allocati soltanto quelli specificati dall’opzione -b.
-
-c | --clear-screen
disabilita lo scroll delle righe, ovvero fa in modo che lo schermo venga
riscritto a partire dalla prima linea quando la visualizzazione dei dati
deve essere aggiornata;
-
-C | --CLEAR-SCREEN
come -c con la differenza che lo schermo viene cancellato prima di
essere riscritto;
-
-d | --dumb
non fa mostrare il messaggio di errore nel caso in cui il terminale non
possieda dei requisiti fondamentali per il funzionamento di less;
-
-e | --quit-at-eof
indica a less di terminare la seconda volta che incontra la fine del
file (EOF: end of file) (per default si può uscire da less soltanto
premendo i tasto
);
-
-E | --QUIT-AT-EOF
indica a less di terminare la prima volta che incontra la fine del file
(EOF: end of file);
-
-f | --force
indica a less di aprire un file non di testo e non fa visualizzare il
messaggio di avvertimento del fatto che il file che si sta per aprire
non è un file di testo;
-
-F | --quit-if-one-screen
indica a less di terminare se l’intero file può essere visualizzato in
una riga dello schermo;
-
-g | --hilite-search
per default less evidenzia (highlight) tutte le stringhe trovate
nell’ultima ricerca effettuata. Con questa opzioni viene evidenziato
soltanto la stringa corrente;
-
-G | --HILITE-SEARCH
indica a less di non evidenziare nessuna delle stringhe trovate
nell’ultima ricerca effettuata;
-
-hn | --max-back-scroll=n
specifica il numero massimo di linee di scroll all’indietro. Se di deve
scorrere all’indietro più di n linee viene effettuato uno scroll in avanti;
-
-i | --ignore-case
indica a less di non fare differenza tra maiuscole e minuscole nelle
ricerche (questa direttiva viene ignorata se nel pattern di ricerca sono
state specificate delle lettere maiuscole);
-
-I | --IGNORE-CASE
come -i ma non fa differenza tra maiuscole e minuscole neanche se
nel pattern ci sono delle lettere maiuscole;
-
-jn | --jump-target=n
specifica una linea dello schermo dove deve essere posizionata la linea
“bersaglio”. La linea bersaglio indica che le operazioni di ricerca o
salti alle linee sono riferite a partire da questa.
-
-J | --status-column
visualizza una colonna di stato al bordo sinistro dello schermo (solo
se utilizzata in contemporanea a -w o -W).
-
-kfilename | --lesskey-file=filename
indica a less di leggere ed interpretare il file filename come se fosse
un file di lesskey;
-
-Kcharset
indica a less di utilizzare il set di caratteri specificato da charset
invece di quello definito nelle variabili di ambiente JLESSCHARSET o
LESSCHARSET;
-
-m | --long-prompt
indica a less di utilizzare un prompt che indica la percentuale del
file visualizzato (il prompt di default di less è il carattere ‘:’);
-
-M | --LONG-PROMPT
come -m ma ancora più verboso;
-
-n | --line-numbers
indica a less di non visualizzare i numeri di riga;
-
-N | --LINE-NUMBERS
indica a less di visualizzare i numeri di riga all’inizio di ogni riga;
-
-ofilename | --log-file=filename
indica a less di copiare il suo input nel file filename (solo se l’input
proviene da una pipe). Se filename esiste chiede conferma per la
sovrascrittura;
-
-Ofilename | --LOG-FILE=filename
come -o ma non chiede conferma;
-
-ppattern | --pattern=pattern
indica a less di iniziare la visualizzazione a partire dalla prima
occorrenza di pattern all’interno del file;
-
-Pprompt | --prompt=prompt
imposta i vari prompt di less secondo il seguente schema:
-
-Psstring
imposta il prompt di default (short prompt) con la stringa
string;
-
-Pmstring
imposta il medium prompt con la stringa string;
-
-PMstring
imposta il long prompt con la stringa string;
-
-Phstring
imposta il prompt della schermata di aiuto con la stringa
string;
-
-P=string
imposta il messaggio visualizzato col comando =, con la
stringa string;
-
-q | --quiet | --silent
indica a less di operare in modo silenzioso (non viene emesso
nessun segnale acustico a meno che non si digiti un comando
errato);
-
-Q | --QUIET | --SILENT
indica a less di operare in modo totalmente silenzioso (non viene emesso
nessun segnale acustico);
-
-r | --raw-control-chars
indica a less di visualizzare i caratteri di controllo (non visualizzabili)
utilizzando la caret notation, per esempio il carattere ASCII 01H (ottenibile
con i tasti
) è visualizzato come ^A;
-
-R | --RAW-CONTROL-CHARS
come -r ma tenta di tener conto della visualizzazione dei caratteri di
controllo per quanto sia possibile;
-
-s | --squeeze-blank-lines
indica a less di raggruppare le linee vuote consecutive in un’unica linea
vuota;
-
-S | --chop-long-lines
indica a less di tagliare le linee alla larghezza dello schermo, anziché
visualizzare il resto di una linea su quella successiva;
-
-ttag | --tag=tag
indica a less di “editare” il file (aprirlo in modifica) contenente
il tag specificato. A tale scopo deve esserci un file tags nella
working directory creato per mezzo del comando ctags (man page
ctags(1));
-
-Ttagsfile | --tag-file=tagsfile
indica a less di utilizzare il file tagsfile anziché il file tags;
-
-u | --underline-special
indica a less di visualizzare i caratteri ASCII BS e CR;
-
-U | --UNDERLINE-SPECIAL
indica a less di visualizzare i caratteri ASCII BS, TAB e CR;
-
-V | --version
indica a less di visualizzare il numero di versione;
-
-w | --hilite-unread
indica a less di evidenziare temporaneamente le nuova linea
visualizzata sullo schermo per effetto di uno scroll in avanti.
L’evidenziazione viene eliminata al successivo comando impartito
dall’utente;
-
-W | --HILITE-UNREAD
indica a less di evidenziare temporaneamente le nuove linee visualizzate
sullo schermo.
-
-XXX indica a less di utilizzare i caratteri di marcatura per rappresentare i
caratteri non riconosciuti (per default i caratteri non riconosciuti sono
visualizzati col loro valore binario).
-
-xn | --tabs=n
indica a less di considerare il carattere TAB come n spazi (per default n è
8);
-
-X | --no-init
disabilita l’invio delle stringhe di inizializzazione al terminale;
-
-yn | --max-forw-scroll=n
imposta il numero massimo di linee di scroll in avanti al valore n. Se si
avanza per più di n righe, al posto dello scroll viene riscritto interamente
l’intero schermo;
-
-zn | --window=n
imposta la dimensione dell’area “scrollabile” a n righe (per default l’area
scrollabile è tutto lo schermo);
-
-Z dà la precedenza alla codifica giapponese SJIS rispetto alla UJIS (per
default viene data precedenza alla codifica UJIS);
-
-"cc | --quotes=cc
cambia il carattere di quoting (delimitatori) dei nomi dei
file;
-
-~ | --tilde
per default less visualizza le linee oltre la fine del file con il simbolo ~,
ma con questa indicazione tali linee saranno semplicemente
vuote;
-
-#n | --shift=n
specifica il numero di default delle posizioni di cui effettuare lo scroll
laterale (nel caso in cui n sia 0, lo scroll laterale viene effettuato con la
metà della larghezza dell’intero schermo);
-
-- specifica la fine delle opzioni sulla riga di comando: gli argomenti specificati
di seguito vengono interpretati come nomi di file;
-
+string la stringa string è interpretata come comando interattivo per
less;
-
fileindica il file (eventualmente comprensivo di path) da visualizzare;
__________________
Come more, anche less è dotato di comandi interattivi che vengono impartiti per mezzo
dell’ultima riga dello schermo che non viene utilizzata per visualizzare il testo del file
specificato. I comandi interattivi si basano su quelli di vi (v. più avanti) e sono riportati nella
tab. 5.6.
| Tabella 5.6: | Comandi di less (I parte). |
|
| Tabella 5.7: | Comandi di less (II parte). |
|
| Tabella 5.8: | Caratteri particolari all’inizio del pattern di ricerca. |
|
Una volta lanciato less, viene visualizzato il contenuto del file specificato. L’ultima riga
dello schermo viene utilizzata per impartire i comandi e l’utente può utilizzare su questa le
combinazioni di tasti riportate nella tab. 5.9.
| Tabella 5.9: | Combinazioni dei tasti sulla riga di comando di less. |
|
Ad esempio, il comando
$ less ~/.bashrc
visualizzerà una schermata analoga a quella seguente
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
/home/daniele/.bashrc (END)
in cui è visualizzato il contenuto del file .bashrc (standard) presente nella home directory di
ogni utente.
Per uscire da less si può premere il tasto
.
Per una spiegazione più dettagliata si consiglia comunque di consultare la relativa man
page.
Un file non testo (binario) può essere visualizzato con i comandi od (man page od(1)) e
hexdump (man page hexdump(1)) ed un altro comando utile per visualizzare i caratteri
testuali contenuti in un file binario è strings (man page strings(1)).
____________________________________________________________________
Comando: od
Path: /usr/bin/od
SINTASSI
$ od [option] file
$ od --traditional file [[+]offset [[+]label]]
DESCRIZIONE
-
option indica le opzioni di funzionamento di od. Può assumere i seguenti valori:
-
-A radix | --address-radix=radix
indica la base con la quale deve essere visualizzato l’output
(v. tab. 5.10);
| Tabella 5.10: | Possibili basi per la visualizzazione con od. |
|
-
-j n | --skip-bytes=n
indica di iniziare la visualizzazione a partire dal n-esimo byte;
-
-N n | --read-bytes=n
indica di visualizzare soltanto n byte;
-
-s [n] | --strings=[n]
indica di visualizzare le stringhe di almeno n byte (default 3);
-
-t type | --format=type
specifica il formato di visualizzazione (v. tab. 5.11);
| Tabella 5.11: | Possibili formati di output di od. |
|
size è un valore numerico, ma per il tipo di visualizzazione d, o. u e x può
essere anche C (sizeof(char)), S (sizeof(short)), I (sizeof(int)) o L
(sizeof(long)). Nel caso in cui il tipo di visualizzazione sia f, size può
anche essere F (sizeof(float)), D (sizeof(double)) o L (sizeof(long
double)).
-
-v | --output-duplicates
indica di visualizzare le linee anche se duplicate, al posto del simbolo
*;
-
-w [n] | --width=[n]
indica di visualizzare n byte per ogni riga (se non indicato n è 32 - default
16);
-
--traditional
indica di accettare le opzioni in forma tradizionale, ovvero
-
-a (come -t a) visualizza il nome dei caratteri;
-
-b (come -t oC) visualizza il valore dei byte in ottale;
-
-c (come -t c) visualizza il valore dei byte in ASCII o come
sequenza di escape;
-
--help visualizza un aiuto sommario di od;
-
--version
visualizza la versione di od;
-
filenome del file da visualizzare;
-
offset equivalente a -j offset (il prefisso 0x indica un valore esadecimale, il suffisso .
indica un valore ottale, mentre il suffisso b indica un multiplo di 512
byte);
-
label indica l’indirizzo del primo byte visualizzato (il prefisso 0x indica un valore
esadecimale, il suffisso . indica un valore ottale, mentre il suffisso b indica un
multiplo di 512 byte);
I valori che si riferiscono a numeri di byte possono essere preceduti da 0x che indica un
valore esadecimale, o seguiti da lettere che fungono da moltiplicatori: b (512), k (1 024), m
(1 048 576).
______________________________________________________
___________________________________________________________________________________________________________
Comando: hexdump
Path: /usr/bin/hexdump
SINTASSI
$ hexdump [option] file
DESCRIZIONE
-
option indica le opzioni di funzionamento di hexdump. Può assumere i seguenti
valori:
-
-b visualizza il valore dei byte contenuti nel file file utilizzando il sistema
di numerazione ottale;
-
-c visualizza il valore dei byte contenuti nel file file utilizzando la
codifica ASCII;
-
-d visualizza il valore dei byte contenuti nel file file utilizzando il sistema
di numerazione decimale;
-
-e format
specifica il formato da utilizzare per la visualizzazione del contenuto
del file secono quanto indicato da format;
-
-f format_file
specifica il file (format_file) dal quale leggere il formato da utilizzare
per la visualizzazione del contenuto del file file;
-
-n length
specifica il massimo numero di byte da visualizzare;
-
-o visualizza il valore dei byte contenuti nel file file a coppie, utilizzando
il sistema di numerazione ottale;
-
-s offset
specifica di non visualizzare i primi offset byte del file file
(v. tab. 5.12);
| Tabella 5.12: | Possibili valori di offset per hexdump. |
|
-
-v indica di visualizzare esplicitamente il valore di tutti i byte contenuti nel file
file (altrimenti le righe che contengono gli stessi dati di quelle precedenti
sono visualizzate con dei caratteri ‘*’);
-
-x visualizza il valore dei byte contenuti nel file file a coppie, utilizzando il
sistema di numerazione esadecimale;
-
filespecifica il nome del file da visualizzare;
______________________________________
Il contenuto dei file oggetto
(il risultato della compilazione di un file) può essere visualizzato con il comandi nm (man page
nm(1)) e objdump (man page objdump(1)).