Hack per la shell

Da Wiki di NetBSD Italia.

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.

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 modalita' 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 e' 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
Strumenti personali