Bash: beginner readings vol. 1!

Inauguro un’ulteriore categoria: Mondobash! E’ ovviamente intesa per coloro che iniziano ad usare linux, non per i pro che mangiano script anche a colazione, la sezione conterrà una serie di articoletti per esplicare alcune cose basilari sull’uso della shell in linux, esaminando superficialmente singoli o coppie di comandi, spesso utilizzati od indicati sugli how-to, ma del quale si conosce ben poco e non si comprende a fondo il significato mancando le basi. Pertanto difficilmente troverrete spiegazioni viscerali sul COME funziona, ma si incentrerà sul cosa fa di base, per le funzioni avanzate c’è internet e man che non sono così ostici se si comprende a cosa serve un comando (e la diferenza tra quel che dovrebbe fare e l’uso comune).

DISCLAIMER

No, ciò che stà scritto sopra è una semplice introduzione, QUESTO PARAGRAFO è il disclaimer (ovvero non voglio responsabilità!). Ciò che verrà scritto in questo articolo NON è inteso a danneggiare il vostro sistema, e nel limite del possibile tenterò di fare esempi che anche comettendo errori di battitura non andiate a distruggere la vostra amata linux-box, MA nel caso succedesse, non mi ritengo responsabile, soprattuto per l’applicazione fantasiosa dei comandi in ambito diverso da quello descritto. Posso sbagliare, sono umano, pertanto verificate sempre ciò che scrivete e che IO SCRIVO, se trovate errori SEGNALATEMELO il più tempestivamente possibile; cercate di comprendere il comando e non di ottenere il risultato, specialmente se avete una distro diversa da Ubuntu (io uso quella), e al minimo dubbio cercate riscontro tramite altre fonti (IRC, libri, altri blog e che altro troviate sulla rete…). Io come buona abitudine mi tengo sempre a portata di mano un certo libro intitolato Linux in a Nutshell , per verificare e capire i comandi.

Intercettare un testo da file (o un output): GREP

Prima di piazzare i soliti comandi nella finestra del terminale comprendiamo cosa fà grep:
immaginate di avere in mano una lunga lista di nomi, diciamo una decina di pagine (cartacee) di persone, al nome e cognome di ogni persona nella stessa linea trovate anche il loro numero di telefono, un rubrica molto scomoda non trovate? se vi chiedono un numero di telefono voi cominciate a sfogliare e trovate il numero in base al nome o cognome che vi hanno indicato giusto? GREP fà la stessa cosa, la differenza è che l’elenco è per lui deve essere digitale come per esempio un file di testo. Di fatto nelle funzioni base si comporta come un essere umano, solo non sbaglia ^_^ , e gli si può indicare di contare il numero di righe che lui trova, o dirci in quale riga del documento lui ha trovato ciò che noi gli si è chiesto, tutto questo maneggiando con i flag corretti; accorciamo dicendo pure che l’uso comune che se ne fa è di cercare le occorenze di un testo in una riga e stamparci le righe nel quale le trova, sempre nelle opzioni avanzate gli si può sostituire il testo con un’espressione regolare, ma non è argomento di questo articolo.

Passiamo agli esempi:

<?xml version="1.0"?>
<smil xmlns:smil2="http://www.w3.org/2001/SMIL20/Language">
<seq>
<video src="/home/coort/capture001.dv" clipBegin="0" clipEnd="2053"/>
</seq>
<seq>
<video src="/home/coort/capture002.dv" clipBegin="0" clipEnd="725"/>
</seq>
<seq>
<video src="/home/coort/capture003.dv" clipBegin="0" clipEnd="3722"/>
</seq>
</smil>

Questo è il file test1 , presente sul mio desktop, è un file xml salvato da un applicativo, voi se volete potete creare un file con lo stesso nome e copiarvi il contenuto, vi assicuro NON farà male😀 ; l’immaginazione ci aiuterà a pensare questo file MOLTO più lungo, qualche migliaio di righe, ed un contenuto che per noi importante, e dobbiamo cercarvi delle righe all’interno in base ad alcune occorrenze di testo, usando grep.

La prima richiesta è ci cercare nel file tutte le righe che contengono “3” (senza le virgolette), il comando da digitare sarà quindi:

$ grep 3 ~/Desktop/test1

La risposta della shell sarà:

<smil xmlns:smil2="http://www.w3.org/2001/SMIL20/Language">
<video src="/home/coort/capture001.dv" clipBegin="0" clipEnd="2053"/>
<video src="/home/coort/capture003.dv" clipBegin="0" clipEnd="3722"/>

Come potete notare ha visualizzato ogni riga che contenesse almeno una volta il “3”, la successiva richiesta sarà di visualizzare ogni riga contenente “video”, il comando quindi da digitare sarà:

$ grep video ~/Desktop/test1

Ed il risultato sarà:

<video src="/home/coort/capture001.dv" clipBegin="0" clipEnd="2053"/>
<video src="/home/coort/capture002.dv" clipBegin="0" clipEnd="725"/>
<video src="/home/coort/capture003.dv" clipBegin="0" clipEnd="3722"/>

Vi invito a fare tutte le prove che volete con grep, fategli contare le righe, o stampare solo righe con più occorrenze di un testo e non solo una, oppure quelle dove NON trova ciò che gli dite di cercare, per tutto questo c’è man grep , ed internet pronti a farvi sbizzarrire. Seppure queste prove sembirno inutili esplicano il comportamento del comando e del fatto che noi in questo caso gli abbiamo fatto leggere dentro un file, ma in realtà potrebbe anche leggere dallo schermo (beh…quasi!) il che si rivela molto utile, ma nemmeno questo è argomento di questo articolo.

  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: