В этих случаях следует использовать функции оболочки вместо псевдонимов. Это немного больше для ввода, но это позволяет вам быть более гибким:
function rm {
if ! test -d "$HOME/zap"; then
echo "No zap in home" >&2
return 1
else
mv -f -- "$@" "$HOME/zap/"
fi
}
$ @
будет расширяться до аргументов, которые вы указываете rm
в командной строке. -
необходим для обозначения конца флагов командной строки (так что rm -f
, где -f
- файл, возможно, ] rm
и mv
в любом случае не имеют общих флагов командной строки).
Чтобы получить доступ к исходной команде rm
, используйте \ rm
или команду rm
.
Проверка существования $ HOME / zap
, вывод сообщения об ошибке в стандартную ошибку и выход с ненулевым статусом выхода в функции, просто чтобы показать, что вы можете делать все, что захотите » я хочу туда. Очевидно, вы могли бы сократить его до
function rm {
mv -f -- "$@" "$HOME/zap/"
}
. В руководстве bash
содержится утверждение:
Почти для всех целей псевдонимы заменяются функциями оболочки.
Псевдонимы действительно полезны, например, добавление ваших любимых флагов к ls
и тому подобное.