Visualizzazione post con etichetta bash. Mostra tutti i post
Visualizzazione post con etichetta bash. Mostra tutti i post

mercoledì 9 aprile 2014

bash: rimuovere gli spazi da nomi file e directory

find -name "* *" -type d | rename 's/ /_/g'    
find -name "* *" -type f | rename 's/ /_/g'

oppure

find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;

bash: convertire in minuscolo le estensioni dei file

find . -name '*.*' -exec sh -c '
  a=$(echo {} | sed -r "s/([^.]*)\$/\L\1/");
  [ "$a" != "{}" ] && mv "{}" "$a" ' \;

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

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:
cd /et
e 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 /et
e 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_servizio
if [ "$(/sbin/pidof $progname)" = "" ]
then
  /etc/init.d/nome_servizio start
else
  echo nome_servizio is running OK
fi
Se 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:
*/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:
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.

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:
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

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
$

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

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.

giovedì 27 dicembre 2007

MYKARMA: visualizza il tuo karma di Launchpad

Chiunque partecipi alla vita pubblica di Ubuntu tramite il sito www.launchpad.net possiede (lo sapevate?) un karma personale, un numero che esprime il livello di partecipazione alle attivita' di Launchpad. Ci sono diverse leggende relative agli algoritmi di calcolo del Karma, ma di sicuro questo cresce nei giorni in cui partecipate inserendo bugs per esempio, o rispondendo alle domande poste da utenti Ubuntu di tutto il mondo. Cala invece nei giorni in cui non partecipate.

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/