É melhor evitar aliases para algo diferente de substituições simples de comando único. Para usar argumentos, vários comandos, etc., você pode definir uma função , acessando parameters da mesma forma que você faria em um script:
foo() {
do_this
do_that "$1"
}
cat() { command cat "$@" && echo ""; }
(Normalmente, as funções substituem os executáveis, portanto command cat
é necessário se você quiser pular a função e executar diretamente o executável.)