Dica: fazendo alias aceitarem tab no Bash

No Bash, diferente do Zsh, criar um alias para um comando não faz ele aceitar as compleções com Tab do comando original (ele completa com os arquivos da pasta, como se fosse um comando genérico).

No entanto, dá para corrigir isso com a seguinte função:

alias_complete() {
	local A
	_completion_loader "$1"
	A="$(complete -p "$1")" || return 1
	eval "${A%$1}${2@Q}"
}

Daí é possível usar:

alias p=pacman
alias_complete pacman p

OBS: Minha dica não vai funcionar para aliases que incluem coisas além da primeira parte do comando, como alias aU='apt update' – só pega se seu alias for um “comando simples”, digamos, como alias a=apt. Se quiser algo projetado para esse cenário, há funções mais complexas justamente para isso, e algumas delas estão na minha fonte.

Baseado nessa reposta do Stack Exchange.

5 curtidas

Ótima dica! Já pensou em inserir em Artigos da Comunidade?