24 giugno, 2019

ghis - grep | history non mi funziona da script e allora alias


OOPS! 😶 ho già scritto tutto nel titolo, posso lasciare vuoto il post! Ma non si usa e allora racconto.

Mi capita spesso di richiamare comandi; per questo c'è history e il file ~/.bash_history e i tasti freccia su e giù e altro ancora (chi ha detto fc?) ma alle volte --sapete la memoria, la mia-- devo scorrere e --ma c'è grep!

$ history | grep chmod
 1021  chmod +x meter
 1214  chmod +x pter
 1673  chmod +x cdl-ck-1
 1674  chmod +x cdl-ck-2
 1871  chmod +x ptw0
 1927  history | grep chmod


ah! ecco, il nome era cdl-ck-2, mnemonico (kwasy). In questo caso non serve ma lo so anch'io (quindi presumibilmente tutti) che per ri-eseguire un comando si può usare !N dove N è il numero indicato, per esempio !1927 ripete history | grep chmod.

Comodo, se un comando lo ripeti due volte lo ripeterai ancora e allora conviene farci lo script (cit. riportata male ma la sostanza è quella). Solo che non funziona. Ultimamente ci abbiamo provato, PLG, EL, BA, io e altri ancora che adesso dimentico di citare. Inizialmente avevamo pensato (PLG e me) che l'indagine classica --googlare Stack Overflow e il web tutto-- ci avrebbe rivelato cosa non andava e come fare ma niente, qualcuno riporta varianti del nostro script:

#!/bin/bash

echo 'cerco per' $1
history | grep $1


ma eseguito (notare l'echo per il debug) non è come si sperava:

$ bash ghis chmod
cerco per chmod
$


🤢 Panico? no, nope! 💥 si può fare l'alias:

$ alias ghis
alias ghis='history | grep'
$


sì, l'avevo già fatto prima di scrivere queste note, messo nel file ~/.bash_aliases ed è già attivo (altrimenti per vedere subito le modifiche inserite in ~/.bash_aliases occorrerebbe attivarlo con source ~/.bash_aliases, risaputo vero?). Funziona:

$ ghis chmod
 2006  history chmod | grep
 2007  history | grep chmod
 2008  history | grep chmod 10
 2009  history 10 | grep chmod
 2011  bash ghis chmod
 2016  ghis chmod
$


Sì nel frattempo ho eseguito diversi altri comandi; e sto barando, riporto solo la parte finale dell'output di ghis. Un ulteriore suggerimento (lo so che lo sapete ma se del caso...) trovo molto comodo aliasare anche grep:

$ alias grep
alias grep='grep --color=auto'
$


così l'espressione cercata sarà colorata (rosso per me).

🔴

Nessun commento:

Posta un commento