TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Rendiamo più semplici i download dalla shell
Download facili dalla riga di comando? Vi mostreremo che è possibile ottenere anche questo rendendo wget interattivo e dotandolo di una pratica interfaccia gafica
(pagina 1 di 4)
Diciamoci la verità: usare wget ( www.gnu.org/software/wget), il potente download manager a riga di comando, non è la cosa più pratica e immediata che esista. Non a caso, nelle pagine di manuale, questo software è descritto come "The noninteractive network downloader" (lo “scaricatore” di rete non interattivo). In effetti, il programma non permette alcun tipo di interazione con l'utente e le numerose opzioni disponibili non sono facilmente gestibili, caratteristiche queste che, il più delle volte, lo rendono idoneo solo per il download di singoli file o interi siti web che non richiedono scelte interattive da parte dell'utente. Ebbene, gli script che proponiamo in questo numero, hanno l'obiettivo di semplificare l'utilizzo del programma, riducendo il numero di opzioni al minimo indispensabile per un uso “normale”, senza però impedire agli utenti più esperti di sfruttarne tutte le potenzialità. In particolare, con il primo script presentiamo una nostra “interpretazione” di wget, sempre a riga di comando, mentre con il secondo ci appoggeremo a Zenity (http://directory.fsf.org/project/zenity) per dotarlo di una, seppur minimale, interfaccia grafica. In entrambi i casi analizzeremo la situazione in cui è necessario scaricare interi siti, stabilendone il livello di profondità. Per il resto, non occorre nulla: wget è presente di default su ogni distribuzione.

Un “Interprete” per la riga di comando

Lo script easyget.sh rende interattivo l'uso di wget


Quando si crea uno script shell, è molto importante prevedere una serie di opzioni da passare sulla riga di comando, in modo dare all'utente la possibilità di modificare il comportamento del programma in relazione a ciò che vuole ottenere. Per interpretare in modo semplice queste opzioni, che possono anche essere molto numerose, in genere si utilizza il comando getopts (presente come predefinito in tutte le distribuzioni), derivato dall'omonima funzione della libreria standard C. Questo comando ha un funzionamento piuttosto sofisticato, per cui ci limiteremo al suo uso di base. In pratica, getopts opera nel modo seguente: ogni volta che viene invocato analizza una delle opzioni passate sulla riga di comando nel formato -opt (con opt pari ad una lettera) e la pone in una variabile predefinita; la variabile OPTIND tiene traccia della posizione dell'opzione successiva e viene, quindi, incrementata ad ogni chiamata. La sintassi di base di getopts è la seguente:
while getopts "abcdef" opt
do
case $opt in
a function1 ;;
b function2 ;;
c function3 ;;
d function4 ;;
e function5 ;;
f function6 ;;
esac
done
In questo caso la funzione analizza la riga di comando ed il ciclo case viene eseguito per ogni opzione trovata: le opzioni cercate sono quelle elencate dopo getopts, ovvero “-a”, “-b”, “-c”, ecc. Ad ogni esecuzione il valore della variabile $opt viene posto pari alla lettera trovata (rimuovendo il carattere “-”), e il comando case seleziona la funzione da eseguire o l'insieme di comandi desiderato. Ad esempio se la riga di comando presentasse le opzioni “-a -d -f” verrebbero eseguite in sequenza le funzioni function1(), function4() e function6(). È importante notare che la variabile OPTIND viene incrementata ad ogni esecuzione di getopts, e pertanto alla fine del ciclo riportato sopra avrebbe valore pari a 7. Nel caso fosse necessario processare più volte la riga di comando, con diversi cicli while, è fondamentale impostare nuovamente ad 1 il valore di OPTIND prima di ogni ciclo (all'inizio del programma tale variabile è automaticamente impostata ad 1).
Semplifica l'uso di Wget
Easyget.Sh
Pagina 1/4
Lascia un commento
Tag: Download, Shell, wget, download manager
Condividi