Um alias não deve efetivamente (em geral) fazer mais do que alterar as opções padrão de um comando. Não é nada mais que simples substituição de texto no nome do comando. Não pode fazer nada com argumentos, mas passá-los para o comando que ele realmente executa. Então, se você simplesmente precisar adicionar um argumento na frente de um único comando, um alias funcionará. Exemplos comuns são
# Make ls output in color by default.
alias ls="ls --color=auto"
# make mv ask before overwriting a file by default
alias mv="mv -i"
Uma função deve ser usada quando você precisa fazer algo mais complexo do que um alias, mas isso não seria útil por si só. Por exemplo, responda a esta resposta em uma pergunta que fiz sobre a alteração do comportamento padrão de grep
, dependendo de como é em um pipeline:
grep() {
if [[ -t 1 ]]; then
command grep -n "$@"
else
command grep "$@"
fi
}
É um exemplo perfeito de uma função porque é muito complexa para um alias (exigindo padrões diferentes com base em uma condição), mas não é algo que você precisará em um script não interativo.
Se você obtiver muitas funções ou funções muito grandes, coloque-as em arquivos separados em um diretório oculto e as atribua em ~/.bashrc
:
if [ -d ~/.bash_functions ]; then
for file in ~/.bash_functions/*; do
. "$file"
done
fi
Um script deve ficar por conta própria. Deve ter valor como algo que pode ser reutilizado ou usado para mais de um propósito.