Il primo comando di questo tipo è cat, In tale occasione abbiamo anche accennato come in realtà l’uso principale di questo comando sia quello di permettere la concatenazione del contenuto di piu file, e che se lo scopo è solo quello della visualizzazione del contenuto di un file esistono alternative migliori; adesso tratteremo proprio queste.
Il problema maggiore dell’uso di cat come visualizzatore e che questo scrive tutto sul ter-minale, senza possibilita di mostrare il contenuto del file un po’ alla volta. Per questo sono stati allora creati tutta una serie di programmi studiati per mostrare il contenuto dei file una pagina alla volta (dove per pagina si intende la schermata del terminale), che per questo sono detti pager.
Ad essi e dedicata anche una variabile di ambiente, PAGER, usata dai programmi che necessitano di visualizzare il contenuto di un file, per scegliere quale fra i vari comandi di visualizzazione deve essere utilizzato.
Il primo programma realizzato per la visualizzazione di interi file è more, il quale prende come argomento una lista di file da leggere di cui stampa il contenuto sul terminale una pagina alla volta, attendendo che l’utente invii dei comandi da tastiera. Al solito la pagina di manuale riporta l’elenco completo delle opzioni ed i vari comandi usati per controllare il comportamento del programma.
Ad esempio con -num si puo specificare un parametro che indica il numero di linee che devono essere stampate sullo schermo (utile solo quando il comando non riesce a determinarlo da solo). Rimandiamo ad essa per le informazioni complete, qui faremo solo una breve panoramica sui principali comandi che si possono dare durante la visualizzazione, il cui elenco comunque puo essere ottenuto direttamente durante l’uso del programma premendo i tasti ? o h. Una volta stampata una pagina more consente di passare a quella successiva con la pressione dello spazio, mentre l’uso del ritorno a capo permette di avanzare lo scorrimento di una riga alla volta. Si puo interrompere la visualizzazione con q, mentre con b si puo tornare una pagina indietro. Se si sono indicati piu le con :n si puo passare alla visualizzazione del successivo mentre con p tornare al precedente. Con il tasto / si fa apparire un prompt dove inserire una stringa da ricercare all’interno del file. In realtà la stringa viene interpretata come una espressione regolare quindi si possono e ettuare anche ricerche molto complesse. Infine con v si puo lanciare l’editor impostato con la variabile di ambiente EDITOR per modificare il contenuto del file quello usato di default è vi).
Il comando more e stato creato fin dagli albori di Unix, e la sua sintassi risente anche del fatto che i primi terminali erano delle telescriventi, su cui il testo veniva stampato, per cui non supporta ad esempio l’uso dei tasti di freccia avanti e indietro ed i vari tasti di spostamento presenti nelle tastiere moderne. Dato che ben presto tutti i terminali iniziarono a supportare la riscrittura dello schermo, e tutte le tastiere iniziarono ad avere i tasti di spostamento, venne creato less come evoluzione di more.
Le funzionalità di less sono sostanzialmente identiche a quelle di more, e supporta anche tutti i comandi da tastiera illustrati in precedenza, ma il programma consente degli spostamenti piu comodi, potendo navigare il contenuto del le avanti ed indietro con i tasti di freccia, pagina su e giu, ecc. Il comando poi supporta funzionalità avanzate come la possibilita di ridefinire dei keybinding, di lanciare dei programmi per pre-processare dei dati (ad esempio decomprimere al volo dei le compressi), ecc. Per i dettagli si faccia al solito riferimento alla pagina di manuale.
Un altro programma di visualizzazione, piu utile in caso di le binari, è od, (da octal dump) che permette di stampare il contenuto di un file in forma numerica, usando vari formati: decimale, ottale (il default), esadecimale e pure direttamente in semplice ASCII. La modalità in cui viene stampato il contenuto e controllata dall’opzione -t, che prende come parametro una stringa indicante il formato, il cui primo carattere indica il tipo di rappresentazione scelta. Nel caso si sia usata una forma numerica, si puo utilizzare un secondo carattere per indicare la dimensione in byte del numero in questione.
Carattere | Formato |
a | caratteri ASCII, coi caratteri non stampabili riportati tramite |
un nome simbolico. | |
c | carattere ASCII, coi caratteri non stampabili riportati in |
forma numerica preceduta dalla barra rovescia. | |
d | decimale. |
f | virgola mobile. |
o | ottale. |
u | decimale senza segno. |
x | esadecimale. |
Una seconda opzione che permette di modificare il formato di stampa di od e -A, che stabilisce come deve essere stampato il numero progressivo che indica la posizione nel file; l’opzione prende come parametro uno dei caratteri d, o, x, o n dove i primi tre hanno lo stesso significato mentre n indica che non deve essere stampato nulla. Altre due opzioni utili sono -j che permette di iniziare la stampa a partire da una certa posizione all’interno del le e prende come parametro il numero di byte da saltare, e -N che permette di speci care, passandolo come parametro, il numero di byte da stampare, altrimenti il comando stampa tutto il contenuto del file.
Del tutto analogo ad od per funzionalit e utilizzo e il comando hexdump che esegue le stesse operazioni ma che, nascendo come hexadecimal dump, di default stampa il risultato in formato esadecimale anziche ottale. Come il precedente il comando, che puo essere invocato anche come hd, prende una serie di opzioni che consentono di controllare la visualizzazione,
Opzione | Signi cato |
-n N | stampa solo il numero di caratteri indicato come parametro |
(il default e stampare no alla ne del le). | |
-s N | inizia a stampare dal numero di caratteri indicato come |
parametro rispetto all’inizio del le. | |
-e str | indica una stringa di formattazione per l’uscita del comando |
(per il formato si consulti la pagina di manuale). | |
-v | stampa il contenuto completo (in caso di righe consecutive |
identiche di default queste vengono sostituite con una riga di | |
asterischi). | |
-c | stampa il contenuto in caratteri ASCII, coi caratteri non stam- |
pabili riportati in forma numerica (o simbolica) preceduti dalla | |
barra rovescia. | |
-d | stampa il contenuto in forma decimale intera (usando due byte |
alla volta) con 8 valori per riga. | |
-b | stampa il contenuto in forma ottale (con ciascun byte indicato |
da tre cifre separate da spazi) con 16 valori per riga. | |
-x | stampa il contenuto in forma esadecimale (usando due byte |
alla volta) con 8 valori per riga. | |
-C | stampa il contenuto con una combinazione di esadecimale e |
ASCII. |
Oltre a quelle di visualizzazione altre opzioni signi cative sono -s e -n che consentono di indicare rispettivamente posizione di partenza e numero di byte da stampare. Inoltre rispetto ad od il comando consente di controllare il formato di stampa in maniera molto dettagliata, in particolare l’opzione -e che consente di indicare una stringa di formattazione. Un’altra particolare forma di visualizzazione del contenuto di un file viene eseguita dal co-mando tac, che serve a stampare il contenuto di un file alla rovescia, cioe a partire dall’ultima riga verso la prima. Il comando in realtà divide un file in campi separati da un carattere, che di default è il ritorno a capo per cui i campi vengono a coincidere con le righe; con l’opzione -s pero si puo passare come parametro un diverso separatore, mentre con-r si puo usare comeseparatore una espressione regolare
Un’ultima forma particolare di visualizzazione del contenuto di un le e quella ottenibile con il comando wc, (da word count) che viene usato per contare linee, parole e caratteri contenuti in un le. Il comando prende come argomento una lista di le (se non se ne speci cano al solito viene usato lo standard input) per ciascuno dei quali stampa il numero totale di linee, di parole e byte. In genere il comando stampa tutte queste informazioni insieme al nome del le, se ne sono speci cati piu di uno. Si puo far stampare solo il numero di linee, di parole o di byte rispettivamente con le opzioni -l, -w e -c. L’opzione -L invece stampa la lunghezza della linea piu lunga.