11
Dic
07

bash (lesson uan): scaricare con comodo e fare un unico manuale, da shell (ciclo for-do)

Ecco la prima guida sulla bash: il meraviglioso mondo del terminale per linux. Questa è stata presa e riadattata da un vecchio tips pubblicato su openskills, a cui avevo inviato le mie “genialate” diverso tempo fa.

Aprendo un terminale possiamo, con semplici passaggi, determinare variabili ed azioni anche ripetitive, includendo il lancio di programmi facenti parte della bash o comunque ad esso collegabili. E’ il caso di wget che permette di scaricarica file o addirittura interi siti web.

Se avessimo una serie una serie di documenti numerati da scaricare (le pagine di un libro su internet ad esempio) http://manuali/comefareilcaffe1.txt , http://manuali/comefareilcaffe2.txt .. sino a http://manuali/comefareilcaffe150 .txt [n.b. l’indirizzo e’ fasullo, non crederete mica che serva davvero un manuale per fare il caffe’?😉 ]

si potrebbe scaricare a mano ogni pagina dal browser, oppure dal terminale iniziando con:
wget http://manuali/comefareilcaffe1.txt
e via di seguito .. fino alla fatidica comefareilcaffe150.txt … praticamente un giorno passato a prendere informazione su qualcosa che a me non piace (il caffe’ appunto)😉
successivamente un bel copia/incolla di ogni pagina in un elaboratore testi per avere un testo unico, magari da stampare o portare con se (per tutti i maniaci del caffe’!).
la soluzione veloce e’ usare la bash ed il ciclo for-do, prima creiamo una directory con:
mkdir comefareilcaffe
ci andiamo con
cd comefareilcaffe
e lanciamo la sequenza

for n in `seq 1 150`; do wget http://manuali/comefareilcaffe$n.txt ; done

notate

1. tutto inizia con for che fa partire l’azione in cui viene specificata una variabile (n appunto) ed in (ossia variare la variabile n in conseguenza del comando che viene dopo in )
2. i termini della comando, in questo caso “sequenza”, vengono identificati fra i due ` (n.b. non ‘ .. quello e’ un altro simbolo), con seq (il comando vero e proprio) che indica con due numeri separati da uno spazio l’inizio e la fine (ovviamente il numero 1 ed il numero 150)
3. il ; divide la sequenza delle operazioni successive;
4. do impone di eseguire il comando wget che si preoccupa di scaricare tutto quello che trova nell’indirizzo indicato, ripetendo l’operazione tenendo presente che $n all’interno del nome del file così modificato e’ una variabile (ricordate .. la n
5. il done significa la fine del processo iniziale che ha un intervallo in precedenza definito fra 1 e 150.Possiamo così aspettare che il programma faccia il suo lavoro, mentre magari ci divertiamo altrove. Dopo un po avremo scaricato nella directory scelta tutte le pagine volute, a questo punto basta incollarle, riusando la solita sequenza ma utilizzando il comando cat (concatenare) e l’operatore >> che serve appunto ad unire i files in un unico documento in maniera ripetuta:

    for n in `seq 1 150`; do cat http://manuali/comefareilcaffe$n.txt >> manuale_fareilcaffe.txt ; done

ed il gioco e’ fatto!😉


11 Responses to “bash (lesson uan): scaricare con comodo e fare un unico manuale, da shell (ciclo for-do)”


  1. 2007 dicembre 11 alle 12:03 pm

    ulteriore ottimizzazione: basta mettere su un’unica riga il primo comando e il secondo comando separati da &&
    In questo modo possiamo dare un unico invio e, quando il primo comando è andato a buon fine (e solo se va a buon fine), viene eseguito il secondo comando. Così possiamo prendere… un caffè in più🙂

  2. 2 Dancus
    2007 dicembre 11 alle 1:07 pm

    E’ possibile anche usare curl. Per scaricare tutta la documentazione sul caffe’ basterebbe scrivere
    curl http://manuali/comefareilcaffe%5B1-10%5D.txt -o “caffe’-#1.txt”

    Ciao

  3. 2007 dicembre 11 alle 1:44 pm

    @ Dass
    emmm && volevo metterlo in lesson ciu ..😉

    @ Dancus
    si vero .. ma non impari la bash😉

  4. 4 evrix
    2007 dicembre 11 alle 7:14 pm

    nel secondo ciclo la redirezione dovrebbe essere fatta con “>>” e non con “>”
    con “>” ti ritrovi con manuale_fareilcaffe.txt che è paro paro a comefareilcaffe150.txt
    il “>” funge per *appendere* solo se il file di destinazione non esiste, cosa che, al secondo passaggio, non è più vera

  5. 5 stambec92
    2007 dicembre 11 alle 7:23 pm

    Ci terrei a dire che ` si fa con AltGr+’ (l’apostrofo)…magari a qualcuno serve😉

    Bella guida comunque. Conosci qualche guida all’uso della bash? magari in italiano…

  6. 2007 dicembre 11 alle 7:27 pm

    @ stambec92
    prima scrivo guide introduttive .. poi vi dico dove approfondire .. ahahahah😉

    MA NON SAI CHE C’E’ UNA BELLISSIMA GUIDA IN ITALIANO DEL PROGETTO PLUTO?
    http://www.pluto.it/ildp/guide/abs.html

    … ma vuoi mettere le mie lezioni che escono fuori ad ogni eclissi solare ? eh! .. LOL

    p.s.
    grazie per l’ALTGr ..😉

  7. 2007 dicembre 11 alle 7:35 pm

    @ evrix
    corretto grazie, non mi ero accorto perche’ la ridirezione la faccio con un solo input ..
    a conferma della bonta’ della tua osservazione:
    http://www.pluto.it/files/ildp/guide/abs/io-redirection.html#IOREDIRREF

  8. 2007 dicembre 12 alle 11:46 am

    è l’unica cosa che ho imparato sulla redirezione…
    ps: perché non correggi l’incipit del punto 5? testo nero su sfondo grigissimo non è il massimo della leggibilità🙂
    comunque complimenti per il grigio, finora è l’unico sfondo scuro che non mi fa bestemmiare i bulbi oculari, sarà anche per la dimensione umana del carattere…

  9. 2007 dicembre 12 alle 4:08 pm

    @ evrix
    sinceramente non so perche’ esce questo nero del punto 5 … riprovero’ a sistemarlo .. ma finora ha vinto lui .. glab …

    io amo il bianco/grigiochiaro in campo nero perchè dovrebbe essere quello che fa sforzare meno gli occhi (e non come si pensa il nero su bianco). Purtroppo la grandezza dei caratteri e’ davvero minimissima nella stragrande maggioranza dei temi, il precedente tema era scelto prioritariamente sulla grandezza “umana” dei caratteri … ho voluto provare una via di mezzo ..

  10. 2007 dicembre 12 alle 4:37 pm

    @kijio
    ecco perché no me gusta wordpress😀

    per i colori, je suis d’accord, anche se mi sa che la frequenza dell’accoppiata nero su bianco è dovuta più ad evidenti retaggi cartacei che a quello che pensa la gente, visto che ho svariati riscontri alla tesi secondo cui la gente ha smesso da tempo di pensare…😛

    mo’ smetto senno’ inquino il post co’ ‘ste caxxate

  11. 11 stambec92
    2007 dicembre 12 alle 8:49 pm

    @ Kijio: me ne sono accorto poco dopo aver commentato…ho scaricato il pdf della guida.
    Grazie comunque!


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: