find -name "* *" -type d | rename 's/ /_/g'
find -name "* *" -type f | rename 's/ /_/g'
oppure
find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
Visualizzazione post con etichetta bash. Mostra tutti i post
Visualizzazione post con etichetta bash. Mostra tutti i post
mercoledì 9 aprile 2014
bash: convertire in minuscolo le estensioni dei file
find . -name '*.*' -exec sh -c '
a=$(echo {} | sed -r "s/([^.]*)\$/\L\1/");
[ "$a" != "{}" ] && mv "{}" "$a" ' \;
a=$(echo {} | sed -r "s/([^.]*)\$/\L\1/");
[ "$a" != "{}" ] && mv "{}" "$a" ' \;
Etichette:
bash,
conversione,
convertire,
estensioni file,
find,
linux,
minuscolo,
shell
mercoledì 16 ottobre 2013
Linux: quanti IP stanno visualizzando il mio sito?
Per visualizzare gli IP address di chi sta guardando i siti del nostro server possiamo lanciare il seguente comando:
netstat -napt | grep :80\ | awk '{print $5}' | cut -d: -f1 | sort -u
Invece per contare i diversi IP address possiamo usare:
netstat -napt | grep :80\ | awk '{print $5}' | cut -d: -f1 | sort -u | wc -l
mercoledì 2 ottobre 2013
ImageMagick: generare file .csv con informazioni su immagini di un folder
identify *jpg| sed 's/[ x]/,/g' > listabu_`basename $PWD`.csv
Etichette:
bash,
identify,
imagemagick,
linux,
script
domenica 11 settembre 2011
Natty: la bash completion si e' rrrrotta!!!
Dopo l'upgrade a Natty Narwhal ha smesso di funzionare correttamente la bash completion, ovvero quella feature della shell per cui premendo il tasto tab, viene completato (in assenza di ambiguita') il path che si e' iniziato a digitare.
Normalmente se scriviamo qualcosa del tipo:
Dopo l'upgrade a Natty, riprendiamo l'esempio precedente, se scriviamo
Per fortuna la soluzione esiste, e' sufficiente reinstallare il pacchetto bash-completion con i due comandi seguenti:
Normalmente se scriviamo qualcosa del tipo:
cd /ete premiamo il tasto TAB, automaticamente il nostro comando viene completato in:
cd /etc/In questo modo se volevamo spostarci, ad esempio, in /etc/spamassassin, sarebbe bastato digitare "sp" e premere nuovamente il tasto tab per trovarci il comando completo:
cd /etc/spamassassin
Dopo l'upgrade a Natty, riprendiamo l'esempio precedente, se scriviamo
cd /ete premiamo il tasto TAB, automaticamente il nostro comando viene completato in:
cd /etc (seguito da uno spazio)Per cui se noi volessimo andare in qualche sottodirectory di /etc dovremmo tornare indietro con backspace, digitare lo slash mancante e inserire il nome della sottodirectory.
Per fortuna la soluzione esiste, e' sufficiente reinstallare il pacchetto bash-completion con i due comandi seguenti:
sudo apt-get purge bash-completion
sudo apt-get install bash-completion
lunedì 26 aprile 2010
Mantenere un programma in esecuzione
Capita che dobbiate utilizzare un programma 24 ore su 24 ma che questo, per qualche motivo, ogni tanto si chiuda. Potete usare supervise, una utility contenuta nei daemontools (vedremo come in un altro post), ma vediamo che e' possibile anche con un semplice script (in questo esempio proccheck.sh) in cui dovete sostituire nome_servizio con il nome del processo da controllare:
progname=nome_servizioSe il processo e' in esecuzione viene visualizzato un messaggio tranquillizzante, altrimenti viene fatto partire. Per essere veramente efficace, lo script deve essere lanciato da crontab con la seguente linea:
if [ "$(/sbin/pidof $progname)" = "" ]
then
/etc/init.d/nome_servizio start
else
echo nome_servizio is running OK
fi
*/15 * * * * /usr/local/bin/proccheck.sh 2>&1 > /dev/null
giovedì 18 marzo 2010
Unire file PDF in uno solo da linea di comando.
gs -q -sPAPERSIZE=A4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...
Parametri da personalizzare:
PAPERSIZE = formato foglio: letter, a4, ...
OutputFile = nome file di destinazione
in1.pdf, in2.pdf, in3.pdf.... = elenco file da unire
sabato 5 dicembre 2009
Chmod ricorsivo selettivo: file o directory
Capita di dover sistemare i permessi di un albero di directory, i piu' faciloni vi diranno di lanciare un bel:
che sistema tutto.
Sarebbe meglio fare un uso piu' attento dei permessi e correggere separatamente quelli delle directory:
e quelli dei file
ATTENZIONE!!!
chmod -R 777 *
che sistema tutto.
Sarebbe meglio fare un uso piu' attento dei permessi e correggere separatamente quelli delle directory:
find . -type d -exec chmod 755 {} \;
e quelli dei file
find . -type f -exec chmod 644 {} \;
ATTENZIONE!!!
- La correzione verra' fatta a partira dalla directory da cui lanciate il comando.
- Aggiustate le permissions (755 e 644 sono solo un esempio) secondo il vostro bisogno.
giovedì 26 novembre 2009
Trovare i file che contengono due parole.
Metodi scaturiti da un thread su Erlug.
o meglio
oppure
Note:
Il parametro -l del comando grep nasconde il normale output e visualizza solo il nome dei che contengono il pattern ricercato.
Il parametro -Z del comando grep inserisce un carattere NULL come carattere conclusivo di ogni nome file da visualizzare: viene usato in caso l'output di grep debba essere passato a qualche altro comando (nell'esempio xargs)
Il comando comm confronta due file ordinati linea per linea.
Il parametro -1 del comando comm esclude dall'output le linee uniche del primo file
Il parametro -2 del comando comm esclude dall'output le linee uniche del secondo file
BASH
grep -l stringa1 * | xargs grep -l stringa2
o meglio
grep -lZ stringa1 * | xargs -0 grep -l stringa2 )
oppure
comm -1 -2 <(grep -wl stringa1 * | sort) < (grep -wl stringa2 * | sort)
Note:
Il parametro -l del comando grep nasconde il normale output e visualizza solo il nome dei che contengono il pattern ricercato.
Il parametro -Z del comando grep inserisce un carattere NULL come carattere conclusivo di ogni nome file da visualizzare: viene usato in caso l'output di grep debba essere passato a qualche altro comando (nell'esempio xargs)
Il comando comm confronta due file ordinati linea per linea.
Il parametro -1 del comando comm esclude dall'output le linee uniche del primo file
Il parametro -2 del comando comm esclude dall'output le linee uniche del secondo file
PERL
perl -n0e 'if(/stringa1/&&/stringa2/){print "$ARGV\n"}' *
AWK
awk 'FNR==1{stringa1=0;stringa2=0}
/stringa1/{stringa1=1}
/stringa2/{stringa2=1}
stringa1 && stringa2 {print FILENAME; nextfile}' *
domenica 20 settembre 2009
Esecuzione automatica di script contenenti comandi zenity
Avete uno script che utilizza zenity ma se lo inserite nei programmi avviati da Gnome in automatico non riesce a visualizzare nulla?
Utilizzate questa sintassi come linea di comando:
Premuratevi anche di lanciare il comando:
e di aggiungere questa linea:
Completiamo il tutto inserendo nelle prime linee dello script:
Utilizzate questa sintassi come linea di comando:
sudo -s -u $USER NOME_DELLO_SCRIPT
Premuratevi anche di lanciare il comando:
visudo
e di aggiungere questa linea:
username ALL=(ALL) NOPASSWD:NOME_DELLO_SCRIPT
Completiamo il tutto inserendo nelle prime linee dello script:
xhost local:$USER
Etichette:
automatica,
autostart,
bash,
esecuzione,
gnome,
linux,
sessions,
shell,
zenity
venerdì 28 agosto 2009
bash: eliminare il carriage return da una stringa

Puo' capitare, ad esempio leggendo file di testo da ambienti Microsoft, di leggere una stringa ma di trovarvi poi alla fine un carattere "carriage return", o return, o \r (insomma ci siamo capiti).
Se per qualunque motivo quel caratteri vi desse fastidio (a voi personalmente o alla vostra procedura) provate a mandare la vostra stringa in pipe al comando:
tr -d '\r'
Gnome: cambiare wallpaper da linea di comando

wp=/path/assoluto/del/file/immagine/da/usare/come/wallpaper
gconftool-2 -s /desktop/gnome/background/picture_filename "$wp" -t string
ATTENZIONE!!!
Se invece del wallpaper vi appare il desktop in tinta unita avete sbagliato nome del file o avete dimenticato di inserirlo con il path assoluto.
martedì 10 febbraio 2009
Pulire la cache dei path della shell
Problema: eseguendo un comando da shell ricevete un misterioso errore.
$ foo
-bash: /usr/local/bin/foo: No such file or directory
$
In entrambi i casi viene ripulita la cache che consente alla shell di velocizzare la ricerca dei comandi piu' usati all'interno del PATH di sistema.
E voi lo sapete bene che il comando foo non si trova in /usr/local/bin: come
convincere anche il vostro sistema di cio'?
E' sufficiente lanciare il comando:hash -r
Questo se utilizzate la shell bash. Un metodo piu' generale, valido anche per
le altre shell, e' il comando seguente:PATH=$PATH
giovedì 27 dicembre 2007
MYKARMA: visualizza il tuo karma di Launchpad

Volete sapere al volo a quanto e' arrivato il vostro Karma? Lo volete inserire nella vostra home page? nel vostro Blog? nella signature della vostra posta elettronica?
Ebbene ho pubblicato su sourceforge un piccolo script bash (mykarma) che scrive il vostro karma su standard output (o, se volete fare gli sburooooooooooooooooni..., in una notification dialog di Zenity)
Un requisito fondamentale: dovete avere wget installato sul vostro sistema (e zenity se volete attivare la versione GUI)
Lo potete trovare ovviamente su http://sourceforge.net/projects/mykarma/
Iscriviti a:
Post (Atom)