Per un sistemista Linux è importantissimo sapere usare la Shell ed i suoi comandi come sed e awk. Scriverò un piccola introduzione con esempi per farvi capire le potenzialità di questi comandi.
Il comando sed
sed è un editor di flusso: opera sui dati in modo seriale come li leggerebbe una persona. Semplificando si può pensare a sed come un modo automatico per cercare e sostituire delle parole con altre. Per esempio, questo comando sostituisce tutte le istanze di “marco” con “bruni” all’interno del file di testo prova.txt:
sed -e 's/marco/bruni/g' prova.txt
Chiunque abbia usato le espressioni regolari all’interno di un editor di testo o linguaggio di programmazione troverà sed facile da afferrare.
Il comando awk
Awk è un pò più ostico e ci vuole più tempo per impararlo. E’ un comando orientato ai record cioè awk è lo strumento giusto da utilizzare quando i dati contengono campi delimitati che si desidera manipolare.
Considerate questo elenco di nomi in un file persone.txt .
Marco Bruni
Mario Rossi
Marco Verdi
Giovanni Neri
per estrarre solo il nome, possiamo usare questo comando:
awk '{print $1}' persone.txt
Marco
Mario
Marco
Giovanni
oppure possiamo cercare solo le persone che si chiamano Marco
awk '$1 ~ /Marco/ {print}' persone.txt
Marco Bruni
Marco Verdi
Awk può fare molto di più, e dispone di nozioni di programmazione come variabili, condizionali e cicli. Ma anche solo una conoscenza di base di come abbinare ed estrarre campi ti porterà lontano. Se volete approfondire l’argomento vi consiglio di leggere questo manuale: Guida a a Sed e Awk
Voi cosa ne pensate?
La via classica per scaricare files dalla rete è utilizzare wget nel seguente modo: $ wget URL
Dove al posto di “URL”, andrà inserito l indirizzo corretto.
Ma se volessimo scaricare dei files multipli?
La procedura sarebbe questa:
1. Aprite Gedit, o il vostro editor di testi favorito, ed inserite gli indirizzi dei files da scaricare scrivendo un indirizzo per ogni riga
2. Salvate il file, dandogli un nome, ad esempio: Downloads
3. Utilizzate il file come input per wget: $ wget -i Downloads
Buon download.
Fonte: http://liberamente-kayowas.blogspot.com/2010/01/come-scaricare-files-multipli-con-wget.html
ls è uno dei comandi base di UNIX, e quindi anche per GNU/Linux, con esso è possibile controllare directories, files, permessi, ecc., il suo output è dettagliato e ben strutturato, ma può anche essere migliorato.
Come?
Provate a mandare in esecuzione:
$ (printf “PERMESSI LINKS PROPRIETARIO GRUPPO DIMENSIONE MESE GIORNO HH:MM PROGRAMMA” ; ls -l | sed 1d) | column -t
Articoli correlati:
http://www.marcobruni.info/it/category/linux
http://www.marcobruni.info/it/category/shell
Spesso le foto scaricate dalla fotocamera digitale, hanno estensione .JPG, anziche .jpg, per ovviare al “problema”, basterà eseguire il comando seguente dalla shell:
find /percorso/delle/immagini -name *.JPG -exec rename “s/.JPG/.jpg/g” {} ;
Continuiamo ad esplorare il fantastico mondo di Gnu/Linux.
Il comando di oggi, non fa altro che comprimere la directory di lavoro al volo, evidenziando i progressi, e spostandola nella posizione voluta.
tar -cf – . | pv -s $(du -sb . | awk ‘{print $1}’) | gzip > out.tgz
Ciò che accade è che indichiamo a tar di creare “-c”, un archivio di tutti i file nella directory corrente “.” (ricorsivamente), stampando l output dei dati verso lo stdout “-f -”, poi andiamo a specificare la dimensione “-s” di tutti i file nella directory corrente, per il comando “pv”, il prossimo passo: du “-sb. | awk? (Print $ 1)?” restituisce il numero di byte della directory corrente, poi zippiamo tutto il contenuto ed inviamo l outpup verso il file “out.tgz”
Articoli correlati:
Linux shell: Scompattare dalla rete
Linux, il meglio degli ultimi 10 anni secondo IBM developerWorks
Da oggi comincio a pubblicare degli articoli che riguardano GNU/Linux che è un sistema operativo libero di tipo Unix ed in particolare la shell che non è l’ascella
ma è un programma che permette agli utenti di comunicare con il sistema e di avviare altri programmi.
Pubblicherò periodicamente questi consigli per diventare un ottimo amministratore di sistemi GNU/Linux
Perchè non provare a spacchettare un tarball direttamente dalla rete, senza salvare il paccheto localmente?
Proviamoci:
Usando wget digitate ed esguite questo comando: wget -O – http://IndirizzoWeb/a.gz | tar xz
Oppure Curl digitate ed esguite questo comando: curl http://IndirizzoWeb/a.gz | tar xz
Se l’archivio è compresso con bzip2 utilizzare “xj” come opzioni a tar cioè tar xj.
Commenti recenti