Linux / Comando alias: criar atalhos no Bash
alias é o comando interno do Bash que cria ou consulta atalhos de texto para comandos. Por exemplo, alias ll='ls -alF' permite usar ll com essas opções em um shell interativo. A definição vale no shell atual; para usá-la em novos terminais, salve-a no arquivo de inicialização adequado.
Um alias, ou apelido de comando, substitui texto quando o shell — o interpretador de comandos — lê a linha. Ele não é uma função do shell nem um programa separado. Para escolher argumentos por posição ou executar várias etapas com validação, prefira uma função.
O que é o comando alias?
O Bash verifica se uma palavra sem aspas, em uma posição de nome de comando, corresponde a um alias e a substitui pelo texto definido. Assim, se ll vale ls -alF, ll /var/log usa essas opções para listar /var/log, quando esse diretório existe. Não confunda expansão de texto com a busca por funções, comandos internos e arquivos executáveis.
alias pertence ao próprio Bash. Os exemplos abaixo usam Bash e, quando indicadas opções específicas, ferramentas GNU; Zsh e outros shells podem ter regras e arquivos de configuração diferentes. A referência de comandos Linux em português ajuda a consultar os comandos usados nos atalhos.
Sintaxe básica
alias [-p] [nome[=valor] ...]
O bloco anterior é um esquema de sintaxe, não uma linha para executar literalmente. Sem argumentos, alias lista as definições atuais. Com um nome, consulta esse alias; com nome=valor, cria ou substitui a definição. No bloco abaixo, alias ll pode falhar se ll ainda não existir; a última linha o define.
alias
alias ll
alias ll='ls -alF'
Consultar aliases atuais
Listar todos os aliases
alias
A saída usa uma forma reutilizável, como alias nome='valor'. alias -p também lista as definições. Uma listagem vazia significa que não há aliases definidos nesse processo, e não que o recurso esteja ausente.
Consultar um alias específico
alias ls
alias grep
Se o alias não existir, a consulta imprime um diagnóstico e retorna estado diferente de zero. Para distinguir alias, função, comando interno e arquivo externo, use type no Bash, por exemplo type ls.
Criar um alias
Aspas simples preservam os espaços e os caracteres especiais do texto durante a definição. A expansão do alias será interpretada quando ele for usado. As linhas abaixo apenas definem atalhos: não executam ls, grep, cd nem journalctl nesse momento.
alias ll='ls -alF'
alias grep='grep --color=auto'
alias ..='cd ..'
alias logs='journalctl -xe'
Não coloque espaços em torno de =: alias ll = 'ls -alF' é uma consulta com argumentos separados, não a definição pretendida. Para testar, execute ll em outra linha e confira a listagem. grep --color=auto pressupõe uma versão com essa opção; logs exige journalctl e acesso ao diário do systemd. O Bash não expande recursivamente a mesma palavra de um alias como grep='grep --color=auto'.
Salvar aliases para novos terminais
Uma definição na linha de comando não é herdada automaticamente por outro Bash. Para persistir, primeiro confira a definição atual com alias ll e guarde uma cópia do arquivo de configuração antes de editá-lo. Acrescente uma definição por linha ao arquivo que seu Bash realmente carrega, usando um editor; não substitua todo o conteúdo existente.
alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'
O Bash interativo que não é de login lê ~/.bashrc. Um Bash de login lê /etc/profile e depois o primeiro arquivo legível entre ~/.bash_profile, ~/.bash_login e ~/.profile; esse arquivo pode carregar ~/.bashrc. ~/.bash_aliases só é carregado se a configuração incluir essa leitura. Confira as regras dos arquivos de inicialização do Bash.
O alias update acima é um exemplo para sistemas com APT, como Debian e Ubuntu; não se aplica ao DNF do Rocky Linux. Defini-lo não atualiza nada, mas invocá-lo usa sudo, pode acessar a rede e altera pacotes. Depois de revisar suas alterações, abra um novo Bash apropriado ou use a linha abaixo para executar novamente todo o conteúdo de ~/.bashrc no shell atual, não apenas os novos aliases.
source ~/.bashrc
Confirme com alias ll e type ll. Para desfazer, remova ou comente só a definição acrescentada no arquivo e use unalias ll no shell atual, se ela não existia antes. Recarregar o arquivo após apagar uma linha não remove automaticamente um alias já definido; se havia uma definição anterior, restaure-a a partir da cópia.
Exemplos práticos de aliases
| Exemplo | Propósito |
|---|---|
alias la='ls -A' |
Exibe arquivos ocultos, excluindo as entradas . e ... |
alias c='clear' |
Limpa a tela do terminal com um comando curto. |
alias gs='git status' |
Verifica rapidamente o status de uma árvore de trabalho do Git. |
alias dfh='df -h' |
Exibe o uso do sistema de arquivos em unidades legíveis por humanos. |
alias mkdir='mkdir -p' |
Cria todos os diretórios pai necessários. Tenha cuidado em um ambiente de equipe, pois isso altera o comportamento do comando existente. |
Executar sem aplicar um alias
No exemplo abaixo, a barra invertida impede a expansão do alias ls. Isso ainda permite uma função com o mesmo nome; se a resolução chegar ao ls padrão, ele listará o diretório atual.
\ls
command ignora a busca por funções de mesmo nome e ainda permite comandos internos ou arquivos de PATH. Normalmente, command ls também deixa ls fora da posição de expansão de alias; personalizações do próprio command, incluindo aliases terminados em espaço, podem mudar esse contexto. Para executar um arquivo específico, confirme o caminho com type -P ls antes de usar algo como /usr/bin/ls.
Usar uma função quando houver argumentos
Um alias não recebe parâmetros próprios para inserir $1 no lugar desejado. A função mkcd abaixo recebe um caminho, cria os diretórios necessários e entra nele somente se a criação tiver sucesso. Cole a definição no Bash atual; executá-la apenas em um script separado não mudará o diretório do terminal pai. Verifique antes com type mkcd se já existe uma função a preservar.
mkcd() {
if [ "$#" -ne 1 ] || [ -z "$1" ]; then
printf '%s\n' 'Uso: mkcd caminho' >&2
return 2
fi
local target=$1
case $target in
/*) ;;
*) target=./$target ;;
esac
command mkdir -p -- "$target" && builtin cd -- "$target"
}
Use mkcd "projeto teste" com um nome novo e confira com pwd que entrou nessa pasta. O exemplo requer Bash e mkdir com -p e --; aspas preservam espaços. O prefixo ./ para nomes relativos evita que - signifique o diretório anterior ou que CDPATH selecione outra pasta. Sem argumento, com argumento vazio ou com mais de um, retorna 2. Uma falha em mkdir impede a troca de diretório.
Para sair da pasta de teste, use cd .. quando ela for filha direta do diretório inicial. Se você acabou de criá-la e ela estiver vazia, rmdir -- "projeto teste" no diretório pai remove somente essa pasta vazia. unset -f mkcd remove a função de teste do shell atual; não o use para apagar uma definição que já existia sem antes preservá-la.
Argumentos digitados depois de um alias seguem no final do comando expandido. Esse atalho funciona bem para opções padrão; funções são mais adequadas quando é preciso validar argumentos, usar condições ou executar várias etapas.
Quando um alias não é expandido
Shells não interativos e scripts
Por padrão, um script Bash não expande aliases. shopt -s expand_aliases ativa a expansão no processo atual, mas não importa as definições locais do terminal pai. Defina explicitamente os comandos ou as funções de que o script precisa; não dependa de um alias pessoal.
Definir e executar na mesma linha
O Bash expande aliases durante a leitura. Com a expansão ativa e sem um alias ou comando hi anterior, a linha abaixo define o alias, mas a chamada hi na mesma linha ainda falha. Ela é um exemplo do problema, não o formato recomendado para criar e usar o atalho.
alias hi='printf "hello\n"'; hi
Coloque a definição e o uso em linhas separadas: primeiro alias hi='printf "hello\n"', pressione Enter e só depois digite hi. A saída esperada é hello. A mesma restrição de leitura vale para definições dentro de um comando composto. Para desfazer o exemplo, use unalias hi se esse alias tiver sido criado apenas para o teste.
Critérios para uso seguro
- Evite aliases que escondam operações perigosas, como exclusão ou sobrescrita.
- Ao usar nomes de comandos que já existem, considere a mudança de comportamento.
- Certifique-se de que os procedimentos de operação do servidor ou scripts compartilhados não dependam de aliases pessoais.
- Use funções quando forem necessários o tratamento complexo de aspas, pipelines e processamento de argumentos.
- Verifique a definição real de um alias com
alias nomeoutype nome.
Comparar alias, função e script
| Método | Usos adequados | Cuidados |
|---|---|---|
alias |
Adicione nomes curtos ou opções padrão em um shell interativo | É difícil lidar diretamente com argumentos posicionais e lógica complexa. |
| Funções de shell | Argumentos, instruções condicionais e tarefas repetitivas que requerem múltiplos comandos | A definição precisa estar carregada em um shell compatível. |
| Script de execução | Tarefas reutilizáveis entre usuários e sistemas com o interpretador e as dependências necessários | Requer arquivo, interpretador compatível e dependências; execução direta também depende das permissões e de PATH. |
Perguntas frequentes
Por que o alias desaparece em outro terminal?
O novo terminal inicia outro processo, sem os aliases locais do anterior. Salve a definição no arquivo apropriado ao modo de inicialização do Bash e confirme que ele realmente o carrega; ~/.bash_aliases não é lido automaticamente pelo Bash por seu nome.
Um alias aceita argumentos por posição?
Os argumentos inseridos após um alias são adicionados ao final da expansão, mas você não pode especificar sua posição como em $1. Se precisar especificar a posição do argumento ou realizar validações, use uma função shell.
Como remover um alias?
Use unalias nome, por exemplo unalias ll, no shell atual. Se a definição estiver em um arquivo de inicialização, remova ou comente também essa linha para que o alias não seja recriado. Isso não altera aliases já carregados em outros terminais.




