Press "Enter" to skip to content

Alias bash – creare alias in bashrc su ubuntu linux

Vi capita spesso di eseguire un comando particolarmente lungo nel terminale? O anche di tornare a ricercare nella history un comando già eseguito? Se mi capita di frequente di trovarvi in almeno una di queste situazioni, allora è probabile che gli alias bash vi faranno comodo!

Cosa sono gli alias bash

Gli alias bash sono fondamentalmente delle scorciatoie, di solito brevi e facilmente memorizzabili, che potrete utilizzare nel terminale per richiamare comandi più complessi.

In questo modo potremo quindi creare dei comandi brevi che poi verranno sostituiti con un comando più lungo e magari più difficile da ricordare. Un primo esempio potrebbe essere il comando tar -xvf molto utile per decomprimere i file tar.gz, ma di cui potrebbe essere poco intuitivo ricordare tutte le opzioni.

Potremmo quindi creare un alias, ad esempio tgz, che sarà più veloce da digitare e più facile da ricordare. Una volta creato l’alias in bashrc, basterà digitare tgz, e il terminale si occuperà di sostituirlo con tar -xvf quando eseguiremo il comando.

In bash è possibile creare alias in modo temporaneo, ovvero validi solamente per la sessione del terminale corrente, oppure renderli persistenti inserendoli nel bashrc o nel bash profile per averli a disposizione ad ogni avvio della linea di comando.

Creare alias bash temporanei

Creare alias temporanei è un’operazione semplice e veloce, e permette di creare una scorciatoia per un comando che useremo molto spesso nella sessione corrente ma che non vale la pena di memorizzare per future sessioni. Riprendendo l’esempio del paragrafo precedente potremmo quindi creare un alias temporaneo tgz se abbiamo tanti file tar.gz da decomprimere tutti insieme, ma non è un’operazione che svolgiamo abitualmente.

La sintassi per dichiarare un alias temporaneo, come abbiamo detto, è abbastanza semplice:

alias <nome_alias>="<comando>"

La dichiarazione inizia con la parola chiave alias, a cui segue il nome dell’alias, il segno uguale, e il comando da eseguire quando scriviamo l’alias. Il comando dovrà essere racchiuso fra virgolette e non ci dovranno essere spazi prima e dopo il segno uguale.

Nell’esempio dell’alias tgz avremo quindi:

alias tgz="tar -xvf"

Una volta eseguita questa linea, avremo “creato” il nuovo comando tgz equivalente al comando tar -xvf.

Trattandosi di un alias di sessione, sarà valido solamente nel terminale in cui lo eseguiamo, non sarà utilizzabile in altri terminali che abbiamo aperti e, alla chiusura del terminale in cui è stato dichiarato, non sarà più utilizzabile (a meno di non dichiararlo di nuovo ovviamente).

Creare alias bash permanenti tramite bashrc o bash_profile

Ci sono alcuni comandi che, per chi utilizza il terminale spesso, sono particolarmente ricorrenti. Ogni utente ha sicuramente i suoi preferiti, o quelli che gli capita di utilizzare più spesso in base all’attività svolta prevalentemente sul terminale.

Un comando che però possiamo considerare universalmente come uno dei più frequenti è sicuramente il comando ls utilizzato per listare il contenuto di una directory.

In molti casi utilizzare ls da solo non è abbastanza, ogni utente ha spesso la propria combinazione di opzioni che ogni volta aggiunge al comando per avere una visualizzazione personalizzata in base alle proprie esigenze o ai propri gusti.

Alcune distribuzioni linux forniscono alcuni alias di ls già configurati di default, con alcune delle opzioni più comuni. Il comando ls è però un ottimo candidato per provare a creare un alias in bashrc personalizzato secondo le nostre esigenze.

Per verificare quali alias sono attivi, è possibile eseguire il comando alias senza alcun argomento. Se proviamo a eseguirlo su un terminale di Ubuntu senza configurazioni personalizzate è probabile che otterremo un risultato simile:

Alias predefiniti in ubuntu
Alias predefiniti in ubuntu

Possiamo quindi notare che, nella configurazione predefinita del sistema operativo sono presenti già alcuni alias per il comando grep e per il comando ls. Se osserviamo attentamente, noteremo che anche grep e ls sono alias di loro stessi. Ad entrambi viene infatti aggiunta l’opzione --color=auto per abilitare i colori.

Per quanto riguarda ls vengono aggiunti gli alias l, la, ll che richiamano ls con alcune opzioni aggiuntive.

Per soddisfare le nostre esigenze, creeremo un nuovo alias, chiamato lah, corrispondente al comando ls -lah aggiungeremo quindi le 3 opzioni lah.

  • l: Per ottenere il formato “long list”, comprendente una lista più dettagliata degli attributi di ciascun file/cartella.
  • a: Per ottenere “all files”, ovvero tutti i file compresi quelli nascosti (quelli che iniziano con un .)
  • h: Con questa opzione otterremo le dimensioni dei file in un formato “human readable”, ovvero in Kb, Mb, Gb e non in byte come prevede l’impostazione predefinita di -l.

Per farlo dobbiamo seguire questa semplice procedura:

  • Aprire un terminale.
  • Modificare il file ~/.bashrc
nano ~/.bashrc
  • In ubuntu possiamo trovare la sezione in cui ci sono gli alias di ls che abbiamo visto prima, a cui possiamo aggiungere il nuovo alias.
Aggiunta del nuovo alias in .bashrc
Aggiunta del nuovo alias in .bashrc
  • Una volta terminato possiamo salvare il file e uscire dall’editor.
  • A questo punto avremo aggiunto il nuovo alias, ma non sarà subito attivo, dovremo riavviare una nuova sessione del terminale oppure far rileggere il bashrc tramite il comando source.
source ~/.bashrc

Finita questa procedura, il nuovo alias sarà disponibile ogni volta che apriremo una nuova sessione del terminale.

Procedura completa per aggiungere un nuovo alias bash nel bashrc
Procedura completa per aggiungere un nuovo alias bash nel bashrc

Creare alias bash con argomenti (funzioni bash)

Nel bashrc possiamo definire tutti gli alias che vogliamo, ma c’è anche un’altra comoda funzionalità che possiamo utilizzare, ovvero la definizione di alias con degli argomenti, detti più propriamente funzioni bash.

In questo modo possiamo creare delle strutture più complesse di quanto possiamo fare tramite i semplici alias. Proviamo a fare un esempio pratico.

Una cosa che spesso capita di fare è creare una cartella e poi subito dopo entrarci dentro. Questo solitamente avviene eseguendo due diversi comandi:

mkdir testDir
cd testDir

Con l’utilizzo di una funzione bash, possiamo semplificare quest’operazione e creare un comando singolo che faccia entrambe le cose.

Per farlo dovremo:

  • Aprire un terminale.
  • Modificare il file ~/.bashrc
nano ~/.bashrc
  • Aggiungere, per semplicità in fondo al file, la nuova funzione:
mkcd ()
{
  mkdir -p -- "$1" && cd -P -- "$1"
}
  • Una volta terminato possiamo salvare il file e uscire dall’editor.
  • A questo punto avremo aggiunto il nuovo alias, ma non sarà subito attivo, dovremo riavviare una nuova sessione del terminale oppure far rileggere il bashrc tramite il comando source.
source ~/.bashrc

Cosa abbiamo fatto?

Abbiamo definito una nuova funzione mkcd, che sarà disponibile come un normale comando nel terminale, che richiede un parametro ($1), e che esegue prima il comando mkdir e poi, se questo va a buon fine, il comando cd.

Quando definiamo una funzione bash, possiamo accedere agli eventuali parametri con cui viene invocato il comando attraverso i segnaposti $1, $2, $3 ecc… che conterranno i parametri nell’ordine in cui sono stati scritti nel terminale.

La coppia di comandi che abbiamo visto prima potrà quindi essere sostituita dal semplice comando

mkcd testDir

Se vi state chiedendo cosa significhino && e -- cercheremo di spiegarlo brevemente.

  • &&: Questo operatore assicura che il secondo comando sarà eseguito solamente se il primo andrà a buon fine.
  • --: In questo caso ci assicuriamo che il contenuto della variabile $1 non venga interpretato come un ulteriore argomento (nel caso in cui inizi con un -).

Conclusioni

A questo punto abbiamo visto come creare alias temporanei nella shell e come renderli persistenti utilizzando il file bashrc.

Se avete qualche ulteriore domanda non esitate a lasciare un commento.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.