Unnikked - Esperienze personali in campo informatico

8 utili alias per bash

Una caratteristica che ho sempre apprezzato dei sistemi GNU/Linux è la grande personalizzazione che è possibile effettuare ad esso.

Durante la giornata utilizzo molto spesso l’interprete dei comandi bash, una caratteristica degli interpreti dei comandi è quello di poter personalizzare l’ambiente con alias personalizzati per aumentare la produttività.

In un precedente articolo parlai del servizio alias.sh, ora invece voglio proporvi una serie di alias da me utilizzati.

Ricaricare l’interprete dei comandi

Quando si modificano gli appositi file per personalizzare la propria console dei comandi, ad ogni modifica dobbiamo ricaricare tali file per applicare le modifiche, il comando classico è

source ~/.bashrc

Potrebbe risultare tedioso riscrivere sempre lo stesso comando (anche se bash supporta l’attraversamento della storia tramite le freccette direzionali) potremmo utilizzare invece il seguente alias:

alias rebash='source ~/.bashrc'

Ottenere il timestamp

Il timestamp è il numero di secondi trascorsi dal 1 Gennaio 1970 (l’anno 0 di Unix), può essere utile ottenere tale numero negli script bash, per poterlo ottenere facilmente ho creato quest’alias:

alias timestamp="date +'%s'"

Cat con evidenziazione di sintassi

Cat è uno tra i comandi più utilizzati, sebbene il suo scopo originario è quello di concatenare più file esso viene spesso utilizzato per visualizzare il contenuto di un file sullo standard output dell’interprete, tuttavia se si sta cercando di visualizzare un codice di un file sorgente di un programma esso non risulterà colorato come spesso accade negli editor di testo specializzati o IDE.

Tramite il modulo python pygmentize possiamo colorare l’output di questo comando:

alias cat='pygmentize -O style=monokai -f console256 -g'

Poiché utilizza pygmentize dobbiamo installare la dipendenza sulla propria macchina, per una distribuzione Ubuntu o derivata basta digitare:

sudo apt-get install python-pygments

Ecco un esempio del risultato prodotto:

Python Pygmentize

Trimming di una stringa

A volte è utile effettuare il trimming di una stringa per eliminare eventuali spazi presenti a fine e/o inizio stringa:

alias trim="sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*\$//g'"

Per utilizzare l’alias bisogna passare tramite pipe l’output di una variabile contenente la stringa, per esempio:

echo "   visita unnikked.tk   " | trim

Encoding e decoding di URL

A volte può capitare di avere la necessità di codificare e decodificare le URL questi due alias sfruttano la libreria url presente in python

alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'
alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'

per esempio:

urlencode http://unnikked.tk

Produrrà in output

http%3A%2F%2Funnikked.tk

Cosa produrrà invece

urldecode $(urlencode http://unnikked.tk)

?

Generazione di una password casuale

Una buona norma durante la registrazione ad un sito web è di utilizzare un password diversa rispetto ad altri siti web cui si ha già una registrazione, invece di utilizzare generatori di password online potrete utilizzare il seguente alias:

alias randap="< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;"

Server HTTP

Siete in una LAN privata e avete la necessità di condividere al volo un file presente in una cartella ? O semplicemente volete vedere sul vostro tablet un film che avete sul vostro hard disk ? Invece di installare Apache e configurare un Virtual Host apposito è possibile sfruttare un modulo di python :

ret=$(python -c 'import sys; print("%i" % (sys.hexversion<0x03000000))')
if [ $ret -eq 0 ]; then 
    alias pyhttp='python -m http.server 8765'
else 
    alias pyhttp='python -m SimpleHTTPServer 8765'
fi

questo script crea un alias a seconda della propria versione di python installata, rendendolo compatibile sia con python 3 che con versioni inferiori.

Ottenere l’ip pubblico

Può capitare di avere la necessità di conoscere l’indirizzo IP pubblico associato alla macchina, invece di visitare un sito ad hoc è possibile interrogare direttamente un server DNS che vi restituirà il vostro indirizzo IP pubblico:

alias myip='dig +short myip.opendns.com @resolver1.opendns.com'