Caso de aliases
- Os aliases podem ser bastante úteis quando você deseja se referir a um comando extenso por um nome abreviado.
- Na ordem de precedência, os aliases são mais altos que as funções, portanto, caso você queira substituir algum nome existente para sua própria sessão , você usaria um alias.
Caso para funções
- Quando você tem um comando que exige que lida com aspas simples e duplas ao mesmo tempo , use as funções. Aqueles que lidam com
sed
ouawk
entendem muito. - Quando você quiser se referir a uma tarefa demorada que consiste em vários comandos interagindo com variáveis, use function. Em geral, eu pessoalmente sigo a regra de que, se houver mais de 3 comandos, é hora de usar uma função.
-
Aliases podem ser evitados anexando
\
. Isso é útil para administradores de sistema. Se você não quiser que seu usuário execute determinado comando, uma função terá precedência sobre. Exemplo:$ ls serg says this command is a no-no $ \ls serg says this command is a no-no
observe que o usuário ainda pode executar
/bin/ls
sem problemas, por isso não é realmente uma boa medida de segurança. Eu diria que o melhor uso seria como um wrapper para algum comando, onde você deseja adicionar um cabeçalho ou remover algumas informações. - Da página man do bash:
There is no mechanism for using arguments in the replacement text.If arguments are needed, a shell function should be used
. Assim, enquanto você pode fazer truques simples - algo comoalias e="echo"; e Hello
- você iria querer uma função quando você quer lidar extensivamente com argumentos de linha de comando.
Na minha experiência pessoal, encontrei-me usando funções muito mais do que aliases. Eles são como scripts, exceto que não é necessário criar arquivos externos - todos eles podem residir no meu ~/.bashrc
. As variáveis de cotação e de referência tornam-se um problema menor.