Archivio

Archivio per la categoria ‘shell’

Linux: l’importanza di conoscere i comandi sed e awk

11 dicembre 2010 Nessun commento

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?

Come scaricare files multipli con il comando wget di linux

3 agosto 2010 Nessun commento

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

Categorie:linux, shell Tag:

Linux Shell: Integrare l’ output di ls

2 marzo 2010 Nessun commento

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

Categorie:linux, shell Tag: ,

Linux Shell: Cambiare estensione ricorsivamente

30 gennaio 2010 Nessun commento

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” {} ;

Categorie:linux, shell Tag: ,

Linux Shell: Zippare e spostare

14 gennaio 2010 Nessun commento

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

Categorie:linux, shell Tag: ,

Linux shell: Scompattare dalla rete

30 dicembre 2009 Nessun commento

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.

Categorie:linux, shell Tag: ,