Hack per la shell

Da Wiki di NetBSD Italia.

(Differenze fra le revisioni)
(aggiungo pkggrep())
m (''Greppare'' i Makefile pkgsrc: tolgo quella redirezione a /dev/null utilizzo invece ``-s'' (e' POSIX))
Riga 36: Riga 36:
  $ pkggrep() { for i in `find /usr/pkgsrc/ -mindepth 1 -maxdepth 1 -type d`; \
  $ pkggrep() { for i in `find /usr/pkgsrc/ -mindepth 1 -maxdepth 1 -type d`; \
-
  { grep $* ${i}/*/Makefile 2>/dev/null ; } }
+
  { grep -s $* ${i}/*/Makefile ; } }
Possiamo utilizzarlo in molti ambiti, ad esempio se vogliamo trovare tutti i pacchetti mantenuti da un certo maintainer:
Possiamo utilizzarlo in molti ambiti, ad esempio se vogliamo trovare tutti i pacchetti mantenuti da un certo maintainer:

Versione delle 08:23, 22 mar 2008

Raccolta di hack, fantasie e virtusismi per la shell :-) Tutti i membri della comunità sono invitati a contribuire all'evoluzione di questa pagina lasciando, come una firma digitale personalizzata dallo stile e dall'originalità, il proprio script.

Indice

Micro-pause

Questo comando riproduce, ogni 10 minuti, 5 beep a distanza di 1 secondo ciascuno utilizzando la campanella di sistema.

$ while true ; do sleep 600 ; for i in $(seq 1 5) ; do \
printf '\a' ; sleep 1 ; done ; done

L'obiettivo è ricordarsi di effettuare delle micro-pause periodiche per allentare le tensioni muscolari. Un vero software indicato per questo genere di attività è wip/workrave.

Trovare un pacchetto

Piccolo accorgimento che emula la funzione di ricerca base del famigerato pkgfind(1). Le uniche differenze significative sono il fatto che quest'ultimo, oltre ad essere decisamente piu' lento (dato che effettua una "vera" ricerca, anziche' sfruttare il meccanismo di globbing) non mostra i cosiddetti distfiles contenuti nella directory pkgsrc/distfiles. A suo favore, invece, c'e' la capacita' di distinguere fra maiuscole e minuscole (al prezzo dell'installazione di un pacchetto, pkgtools/pkgfind, appunto). Di seguito sono riportate le versioni per le shell piu' diffuse le quali di norma vanno inserite nel relativo file di inizializzazione dell'interprete:

  • sh(1) (e shell Bourne in generale)
$ pkgdir() { ls -1d /usr/pkgsrc/*/*$1* |cut -d'/' -f 4-; }
% alias pkgdir 'ls -1d /usr/pkgsrc/*/*\!^* |cut -d'/' -f 4-'

NOTA: csh e' l'unica shell che supporta gli argomenti per gli alias, motivo per cui, al fine di ottenere lo stesso comportamento, l'unica soluzione e' quella di utilizzare le funzioni.

Installare un pacchetto in modalità silenziosa

Questo semplice comando consente di installare un pacchetto visualizzando su schermo solo i messaggi dell'infrastruttura di pkgsrc escludendo tutti quelli legati alla compilazione del pacchetto o al fetching dei sorgenti. Per eventuali errori o altro è possibile consultare l'output completo del processo di installazione all'interno del file full.out, creato all'interno della directory corrente.

$ make 2>&1 | tee full.out |grep ^=

Per sopprimere totalmente l'output usare invece il seguente comando:

$ make 2>&1 > full.out

Greppare i Makefile pkgsrc

Con la seguente funzione è possibile utilizzare grep(1) (e le sue opzioni) su tutti i Makefile di pkgsrc. Risulta piuttosto utile sia per maintainer che vogliono curiosare qualche variabile che per utenti:

$ pkggrep() { for i in `find /usr/pkgsrc/ -mindepth 1 -maxdepth 1 -type d`; \
{ grep -s $* ${i}/*/Makefile ; } }

Possiamo utilizzarlo in molti ambiti, ad esempio se vogliamo trovare tutti i pacchetti mantenuti da un certo maintainer:

$ pkggrep -lE "MAINTAINER.+hubertf"
/usr/pkgsrc/audio/cam/Makefile
/usr/pkgsrc/audio/gqmpeg-skins/Makefile
/usr/pkgsrc/net/hf6to4/Makefile
[...]
Strumenti personali