Os aliases destinam-se ao alias dos nomes de comando. Qualquer coisa além disso deve ser feita com funções.
alias ll='ls -l' # The ll command is an alias for ls -l
Aliases são nomes que ainda estão associados ao nome original. ll
é apenas um tipo ligeiramente específico de ls
.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Uma função é um novo comando que possui lógica interna. Não é simplesmente uma renomeação de outro comando. Faz operações internas.
Tecnicamente, os aliases na linguagem shell Bash são tão limitados em recursos que são extremamente inadequados para qualquer coisa que envolva mais do que um único comando . Use-os para fazer uma pequena mutação de um único comando, nada mais.
Como a intenção é criar um novo comando que execute uma operação que internamente resolverá em outros comandos, a única resposta correta é usar uma função aqui:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
O uso de aliases em um cenário como esse apresenta muitos problemas. Ao contrário das funções executadas como comandos, os alias são expandidos para o comando atual, o que levará a problemas muito inesperados ao combinar esse "comando" com outros comandos. Eles também não funcionam em scripts.