back

È anche possibile predisporre gli alias ad accettare input ($1) da parte dell'utente mediante l'utilizzo di variabili come ad esempio una ricerca da effettuare in questo caso all'interno del file .bash_history che contiene un elenco di comandi utilizzati nel terminale

#cerca qualcosa nella history bash
alias his='history|grep $1'

o anche in molti altri casi

#cerca chiave gpg
gpg --list-keys|grep -B 1 $1
#cerca nei pacchetti installati
#es: pkg mplayer
alias pkg='dpkg -l|grep $1'
#varie utility per cercare o controllare nei repository
#es: cache mplayer
alias cache='apt-cache search $1'
alias show='aptitude show $1'
alias policy='apt-cache policy $1'
alias dep='apt-cache depends $1'
alias rdep='apt-cache rdepends $1'
#why È un'opzione di aptitude che spiega il motivo per cui un 
#pacchetto È installato, guardando le dipendenze piu' prossime
alias why='aptitude why $1'

Continuando sui possibili utilizzi degli alias si nota come questi possano via via diventare più completi ed efficaci in diverse situazioni di utilizzo con l'aumentare delle conoscenze del linguaggio bash ed un conseguente aumento dell'utilizzo di variabili. Un caso concreto può essere ad esempio rappresentato dal comando rm sul quale abbiamo precedentemente illustrato un alias per chiedere conferma della rimozione di un file

alias rm="rm -i"  # chiedi conferma prima di eliminare

è possibile infatti replicare il comportamento di un ambiente desktop semplicemente predisponendo una directory che funge da cestino ed un alias per il comando rm che diventa un semplice mv, cioè lo spostamento del file nella target directory,

#cestino, anzichÈ cancellare sposta in una directory
alias rm='mv "$@" --target-directory=$HOME/cestino'

allo stesso modo è possibile impostare lo svuotamento del cestino magari aggiungendo anche lo svuotamento di altre directory

#svuota il cestino piu' la cache di anteprima delle immagini
alias emptrash='/bin/rm -f $HOME/.thumbnails/normal/*;/bin/rm -rf $HOME/cestino/*'

Si può far rientrare nella categoria degli alias la costruzione di vere e proprie funzioni che si possono inserire nel nostro .bash_aliases e di cui possiamo vedere di seguito una piccola carrellata con tanto di spiegazione della funzione svolta

#estrae un pacchetto .deb ricreando
#la directory col nome dello stesso
jexdeb() {
dpkg -x "$@" $PWD/$(echo $@|sed 's/.deb//')
}
#crea il file LISTA-$DIR con un listato di tutti
#i file contenuti nel path in cui lo si usa
jmkls() {
ls -aR > $PWD/LISTA-$(basename $PWD)
}
back