Можно использовать "$@"
для передачи всех аргументов функции, как они к фактической команде:
$ verbose_ls() { echo "running ls with args '$@'"; \ls "$@"; }
$ alias ls=verbose_ls
$ ls -l -a /
running ls with args '-l -a /'
...
Отметьте обратную косую черту \
перед ls
в функции. Это сохранит bash
от расширения ls
псевдоним, так как Вы хотите вызвать /bin/ls
, не псевдоним Вы определили рекурсивно.
Если Вы на самом деле хотите получить доступ к конкретному аргументу в функции, все еще сохранение способности передает произвольные переключатели опции фактической команде, Вы, вероятно, не можете постараться не реализовывать некоторую логику синтаксического анализа аргумента в саму функцию.
Это не может быть сделано с псевдонимом: http://mywiki.wooledge.org/BashFAQ/080
Можно использовать:
ls() {
echo "printing ${1}"
command ls "${1}"
}