11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

84 CAPITOLO 2. LA SHELL E I COMANDIcomandi precedenti; basterà tagliare prima la coda del file con head e poi la testa con tail,costruendo una linea di comando del tipo: 45head -n M file | tail -n $((M-N))Vale la pena poi menzionare esplicitamente l’opzione -f di tail che quando usata fa si cheil comando non esca e continui a stampare ogni eventuale altro dato aggiunto in coda al file,permettendo così di seguire la crescita di quest’ultimo. Questa è una opzione molto utile pertenere sotto controllo i file di log, ed in generale tutti i file in cui altri programmi scrivono incoda i loro dati.Come contraltare di cat (che si ricordi serve a concatenare il contenuto dei file) si può usaresplit, che viene usato per tagliare a fette un file. Il comando prende come argomento il file daaffettare, e lo suddivide in tanti file di dimensione uguale che chiama progressivamente xaa, xab,xac, ecc. Se non specifica un argomento al solito split legge dallo standard input, consentendocosì ad esempio di creare un file con un comando e suddividerlo al volo con una pipe). Dato cheil comando crea le sue fette in ordine alfabetico, per ricomporre il file originario basterà usareun comando del tipo cat x* > file.Aggiungendo un secondo argomento dopo il nome del file da suddividere si può specificare unprefisso diverso da x come intestazione dei nuovi file creati dal comando. La dimensione dei fileviene specificata con l’opzione -C se le si vuole in linee o con -b se la si vuole in byte, quest’ultimasupporta anche un valore del parametro con i suffissi m e k per indicare rispettivamente megabytee kilobyte. Infine se due lettere non bastano per indicizzare i file che si generano si può usarel’opzione -a per specificarne un numero diverso. Per tutti i dettagli si faccia al solito riferimentoalla pagina di manuale.Se si vuole tagliare un file per colonne invece che per righe si può usare il comando cut.Il comando opera sul file passato come argomento (o sullo standard input, rendendo di nuovopossibile operazioni complesse e filtri ricorsivi), stampando le colonne selezionate sullo standardoutput. Con l’opzione -c si può creare la colonna selezionando i caratteri in base alla loroposizione rispetto all’inizio della riga. L’opzione prende una lista dei caratteri, separata davirgole, e supporta la presenza di intervalli, indicati con un -, così se si vuole ottenere la stringadei permessi dall’output di ls -l basterà fare:piccardi@anarres:~/Truelite/documentazione/corso$ ls -l *.tex | cut -c 1-10-rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r---rw-r--r--L’utilità del comando è che oltre alle posizioni assolute, permette di effettuare la selezione intermini di campi delimitati da un carattere qualunque che può essere specificato con l’opzione-d (di default il comando usa come separatore il tabulatore), in tal caso si effettuerà la selezionedi quali campi stampare con l’opzione -f, che indica la posizione in maniera analoga a -c. Cosìsi potrà ad esempio stampare il proprio user ID con:piccardi@anarres:~/Truelite$ cat /etc/passwd | grep piccardi | cut -d: -f 3100045 dove si è usata la arithmetic expansion brevemente descritta in sez. 2.1.4.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!