Comando alias in Bash: creare e conservare scorciatoie
alias è un builtin di Bash, cioè un comando interno alla shell, che associa un nome a una sequenza di testo. Potete usarlo per abbreviare comandi frequenti, vedere le definizioni attive e aggiungere opzioni predefinite durante il lavoro nel terminale.
Un alias opera tramite sostituzione testuale quando Bash legge un comando. Per gestire argomenti in posizioni precise, condizioni o più operazioni, scegliete invece una funzione della shell: alias e funzioni sono meccanismi distinti.
Che cos’è un alias in Bash?
Se la prima parola non racchiusa tra apici di un comando semplice corrisponde a un alias, Bash la sostituisce con il testo associato. Per esempio, con alias ll='ls -alF', il comando ll /var/log diventa ls -alF /var/log. Il percorso viene passato al comando risultante.
Questa guida riguarda Bash. Altre shell, come Zsh, possono usare regole di espansione e file di avvio diversi. Un alias appena definito appartiene alla shell corrente e non viene automaticamente ereditato da un nuovo processo Bash.
Sintassi di base
alias [-p] [name[=value]...]
La sintassi usa i segnaposto name per il nome e value per il testo sostitutivo. Senza argomenti, alias elenca tutte le definizioni; con un nome mostra quella definizione; con name=value la crea o la sostituisce. Nell’esempio seguente, alias ll può segnalare un errore se ll non è ancora definito: l’ultima riga lo definisce.
alias
alias ll
alias ll='ls -alF'
Controllare gli alias correnti
Stampare tutti gli alias
alias
L’output usa una forma riutilizzabile, per esempio alias ll='ls -alF'. Anche alias -p elenca le definizioni in questa forma. In una shell senza alias l’elenco è vuoto.
Controllare un alias specifico
alias ls
alias grep
Se un nome non è definito come alias, Bash stampa un messaggio diagnostico e restituisce uno stato diverso da zero. Per distinguere alias, funzioni, builtin ed eseguibili usate type NOME, oppure type -a NOME per vedere più corrispondenze.
Creare un alias
Racchiudete il valore tra apici singoli per conservare spazi e metacaratteri ed evitare che variabili o sostituzioni di comando vengano espanse già durante la definizione. Queste righe registrano gli alias: non eseguono ancora ls, grep o journalctl.
alias ll='ls -alF'
alias grep='grep --color=auto'
alias ..='cd ..'
alias logs='journalctl -xe'
Non inserite spazi intorno a =: alias ll = 'ls -alF' non definisce l’alias voluto. Qui grep --color=auto presuppone GNU grep; logs richiede journalctl e un sistema che usi il journal di systemd. Dopo la definizione, eseguite ll su una nuova riga per vedere l’elenco dettagliato della directory corrente; .. porta alla directory superiore.
Conservare gli alias nelle nuove sessioni
Per ritrovare un alias nelle nuove sessioni, aggiungetene la definizione al file di avvio effettivamente letto da Bash. Prima di modificare un file esistente, conservatene una copia con il vostro editor e mantenete le altre impostazioni. Il blocco seguente mostra due possibili definizioni da inserire nel punto adatto del file.
alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'
Un Bash interattivo non di login legge ~/.bashrc. Un Bash di login legge invece il primo file disponibile tra ~/.bash_profile, ~/.bash_login e ~/.profile; spesso questo richiama ~/.bashrc, ma dovete verificarlo nella configurazione esistente. Bash non legge automaticamente ~/.bash_aliases: quel file funziona solo se un altro file di avvio lo carica.
L’alias update è adatto a sistemi con APT (Advanced Package Tool), come Debian e Ubuntu. Definirlo non aggiorna nulla; invocarlo esegue sudo apt update, che aggiorna le informazioni sui pacchetti, e, se riesce, sudo apt upgrade, che aggiorna i pacchetti installati. Consultate il manuale di apt prima di usarlo sul vostro sistema. Dopo aver salvato le definizioni, aprite una nuova sessione del tipo previsto e controllate alias ll. Potete caricare ~/.bashrc nella shell corrente con il comando seguente, dopo averne verificato il contenuto: riesegue tutto il file, non soltanto gli alias.
source ~/.bashrc
Esempi pratici di alias
| Esempio | Scopo |
|---|---|
alias la='ls -A' |
Mostra i file nascosti, esclusi . e ... |
alias c='clear' |
Pulisce lo schermo del terminale. |
alias gs='git status' |
Mostra lo stato di un albero di lavoro Git; richiede Git e una directory appropriata. |
alias dfh='df -h' |
Mostra l’uso dei file system con unità leggibili; richiede un df che supporti -h. |
alias mkdir='mkdir -p' |
Crea anche le directory genitrici mancanti e non segnala come errore una directory già esistente. Cambia il comportamento di mkdir digitato senza opzioni. |
Saltare un alias e distinguere le funzioni
Un backslash davanti al nome impedisce l’espansione di quell’alias. Per esempio, il comando seguente salta un eventuale alias chiamato ls:
\ls
\ls può comunque richiamare una funzione chiamata ls. Per saltare anche la ricerca delle funzioni usate command ls, che può scegliere un builtin o un programma esterno. Normalmente ls non è in posizione di alias dopo command; verificate però che command non sia stato ridefinito, per esempio da un alias che termina con uno spazio. Per scegliere un file preciso usate un percorso assoluto verificato sul vostro sistema, come /usr/bin/ls dove esiste.
Usare una funzione per gestire gli argomenti
Un alias non possiede propri parametri posizionali: un eventuale $1 nel testo riguarda il contesto della shell, non un argomento acquisito dall’alias. Per creare una directory e poi entrarvi, la funzione seguente accetta esattamente un percorso non vuoto e gestisce anche spazi nel nome. Provatela in una nuova sessione Bash, così non sostituite una funzione mkcd già presente.
mkcd() {
if [ "$#" -ne 1 ] || [ -z "$1" ]; then
printf '%s\n' 'Uso: mkcd PERCORSO' >&2
return 2
fi
command mkdir -p -- "$1" && builtin cd -- "$1"
}
Dopo la definizione, eseguite su una nuova riga mkcd 'cartella con spazi' e poi pwd: il percorso deve terminare con quel nome. La funzione entra nella directory solo se mkdir riesce; senza un argomento valido stampa l’uso sullo standard error e restituisce 2. Per concludere la prova, tornate alla directory iniziale con cd -, rimuovete la funzione con unset -f mkcd e, se la cartella era stata creata solo per il test ed è vuota, rimuovetela con rmdir -- 'cartella con spazi'. Per aggiungere soltanto opzioni predefinite, un alias rimane sufficiente.
Quando un alias non viene espanso
Shell non interattive e script
Per impostazione predefinita Bash non espande gli alias nelle shell non interattive, come quelle che eseguono uno script. shopt -s expand_aliases abilita l’espansione, ma non cambia il momento in cui avviene la lettura. Negli script preferite funzioni o comandi espliciti per rendere chiare dipendenze e argomenti.
Definire ed eseguire sulla stessa riga
Bash legge una riga completa, compresi gli eventuali comandi composti, prima di eseguirla. L’espansione degli alias avviene durante quella lettura. Nel seguente esempio volutamente problematico, se non esistono già un alias o un comando chiamato hi, la seconda istruzione produce «comando non trovato», anche con expand_aliases attivo.
alias hi='printf "hello\n"'; hi
Per ottenere hello, definite l’alias su una riga, premete Invio e richiamate hi su una nuova riga già separata dal comando composto. Anche una funzione viene letta per intero quando è definita: creare un alias al suo interno non lo rende disponibile alle istruzioni successive della stessa definizione. Per quella logica usate direttamente una funzione.
Criteri per un utilizzo sicuro
- Evitate alias che nascondono cancellazioni o sovrascritture; controllate le definizioni prima di operazioni importanti.
- Un alias con il nome di un comando esistente cambia ciò che digitate nel terminale: documentate le opzioni aggiunte.
- Gli alias personali non devono essere una dipendenza implicita di procedure del server o script condivisi.
- Per condizioni, cicli, apici complessi ed elaborazione degli argomenti usate una funzione.
- Controllate le definizioni con alias NOME o type NOME. Un alias non si riespande indefinitamente su sé stesso: alias ls='ls -F' non causa una ricorsione per quel primo ls. Se il valore termina con uno spazio, anche la parola successiva può essere controllata per l’espansione degli alias.
Confronto tra alias, funzione, script
| Metodo | Usi appropriati | Precauzioni |
|---|---|---|
| Alias | Nomi brevi e opzioni predefinite nella shell interattiva. | Sostituzione testuale senza propri parametri posizionali; attenzione al momento di lettura. |
| Funzione della shell | Argomenti, condizioni e operazioni composte nella shell. | Richiede una definizione caricata e una sintassi adatta alla shell scelta. |
| Script | Un’attività salvata in un file e richiamabile in sessioni diverse. | Richiede interprete e dipendenze compatibili. Per l’avvio diretto servono permessi e percorso corretti; bash file.sh usa esplicitamente Bash. |
Domande frequenti
Perché un alias scompare nel nuovo terminale?
Le definizioni della shell corrente non passano automaticamente a una nuova shell. Salvatele nel file di avvio effettivamente letto: ~/.bashrc per Bash interattivo non di login, oppure un file caricato dalla configurazione di login. Controllate anche che la nuova sessione usi Bash.
Un alias può ricevere argomenti?
Potete aggiungere argomenti dopo il nome, come in ll /var/log. L’alias non ha però un proprio $1 per riposizionarli: per quel compito e per validarli serve una funzione della shell.
Come si elimina un alias?
Usate unalias NOME nella shell corrente, per esempio unalias ll. Rimuovete o commentate anche la corrispondente definizione nel file di avvio, altrimenti verrà ricreata nelle nuove sessioni.




