mou: non funziona, non so il perché e allora la faccio funzionare; senza sapere il perché

art-ma-3

Tutto parte da questo tweet che rimanda a questo post.

Uh! semplice, non so se possa servire ma è sexy lo provo:

$ history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n | tail | sort -nr
    103 spo
    100 mtw
     94 stw
     53 history
     47 _j
     46 _e
     42 sx
     39 cd
     33 bash
     29 gen
$

OK! ma mica devo scrivere ogni volta tutto questo; lo meto in uno script ed ecco:

$ cat m0
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n | tail | sort -nr
$ bash m0
$

OOPS! NO! non va.

Qui –no, non so spiegarmi il perché– ho dato la colpa a awk e l’ho sostituito con sed. sed è più semplice, o ci sono più abituato, anche se quando sono finito su Unix mi sono procurato subito le fotocopie della shell (di SisV), di vi (un articolo scritto da Bill Joy per Hewlett-Packard) e awk (sì perché sembrava intrigante, assay.

La mia versione:

$ history | sed 's/[ 0-9]*//' | sed 's/[ ].*//' | sort | uniq -c | sort -n | tail | sort -nr
    103 spo
     98 mtw
     93 stw
     54 history
     47 _j
     46 _e
     42 sx
     39 cd
     34 bash
     30 gen
$

OK! sì lo so che si potrebbe approfittare che history scrive il nome del programma sepre in colonna 7 ma già vengo spesso accusato di fortranismo residuo…

Provo a scriptarlo e

$ cat m1
history | sed 's/[ 0-9]*//' | sed 's/[ ].*//' | sort | uniq -c | sort -n | tail | sort -nr
$ bash m1
$

NO! come prima. Ho sentito Stack Overflow,  googlato  duck-duck-go-ato; visto che anche altri chiede a riguardo per operazioni simili riguardanti history ma senza risultati. Allora ho cancellato tutto, in fondo a chi interessa una cosa così.

Poi capita che di notte, avete presente (sensa comparision (pron. sensa cumparisiun) dicono qui in Piemonte) Srinivasa Ramanujan e la dea Lakshmi di Namagiri? Ecco a me lo stesso ma seguo la Vera Fede e allora vengo ispirato da Sua Pastosità il Prodigioso FSM –sempre sia condito, RAmen– subito nella prima notte utile.

Fortuna che quando cancelli il ‘puter sa che gli umani a volte non sanno quello che fanno o poi cambiano idea e allora si può ripristinare il cancellato.

Se il problema è history lo si può tener fuori dallo script e eseguire con una pipe. (Nota OT, qui: non so mai che genere usare, mi manca il neutro). Lo script (mou-r) diventa:

#!/bin/bash
sed 's/[ 0-9]*//' | sed 's/[ ].*//' | sort | uniq -c | sort -n | tail | sort -nr

che abilitato e copiato in ~/bin produce

$ history | mou-r
    102 spo
     98 mtw
     93 stw
     57 history
     46 _j
     46 _e
     42 sx
     39 cd
     35 bash
     30 gen
$

OK, ma è troppo lungo, creo un alias

$ alias mou='history | mou-r'
$ mou
    102 spo
     98 mtw
     92 stw
     57 history
     46 _j
     46 _e
     42 sx
     39 cd
     35 bash
     30 gen
$

Perfetto. L’alias ovviamente va messo in ~/.bash_aliases (o qualche altro file eseguito al boot. Ah! mou sta per most used. Resta il mistero di history ma frankly, my dear, I don’t give a damn (cit.) 🧐

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

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

Logo di WordPress.com

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

Google photo

Stai commentando usando il tuo account Google. 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 )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: