Alla ricerca della funzione…



Quante volte vi siete trovati davanti ad una funzione domandandovi: “ma dov’è definita? cosa fa esattamente?”
Non vi siete posti questa domanda? Allora questo post non è per voi!😀

Lo script che vi presento oggi, serve proprio a questo, cercare la definizione di una funzione e visualizzarne l’implementazione
Per prima cosa occorre installare il pacchetto exuberant-ctags, quindi come di consueto:
sudo apt-get install exuberant-ctags
quindi aprite l’editor che preferite ed inserite questo codice:
#! /bin/bash
TMPFILE=/tmp/$$
ctags -R -x 2>/dev/null | grep "^${1} *function " > $TMPFILE
if [ ! -s $TMPFILE ]
then
echo "Funzione ${1} non trovata"
exit 1
fi
SZ=$(wc -l $TMPFILE|cut -d " " -f 1)
if [ ! ${SZ} -eq 1 ]
then
echo "Funzione rilevata più volte"
cat $TMPFILE
else
FILE=$(cat $TMPFILE|awk '{ print $4 }')
LINE=$(cat $TMPFILE|awk '{ print $3 }')
echo "Apertura $FILE posizione $LINE ..."
vim +${LINE} $FILE
fi
rm -f $TMPFILE

Attenzione! L’apice non viene scritto correttamente nel codice sopra riportato, quindi sostituite ` (apice inverso) con un (apice normale)

Salviamo il file (ad esempio come cercaFunzione) e impostiamo i permessi necessari:
chmod +x cercaFunzione
Ora per ricercare una funzione (ad esempio myFunction), andiamo nella cartella dei sorgenti e digitiamo:
/path/dello/script/cercaFunzione myFunction
(invece di /path/dello/script/ dovete inserire il path dove avete salvato lo script) automaticamente verrà aperto VIm e sarà posizionato esattamente dove si trova la funzione myFunction😉

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...