Псевдонимы предназначены для псевдонимов имен команд. Все, что за этим следует делать с функциями.
alias ll='ls -l' # The ll command is an alias for ls -l
Псевдонимы - это имена, которые по-прежнему связаны с исходным именем. ll
это просто немного специфический вид ls
.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Функция - это новая команда с внутренней логикой. Это не просто переименование другой команды. Это делает внутренние операции.
Технически, псевдонимы в языке оболочки Bash настолько ограничены в возможностях, что крайне плохо подходят для всего, что включает в себя более одной команды . Используйте их для создания небольшой мутации одной команды, не более того.
Поскольку намерение состоит в том, чтобы создать новую команду, которая выполняет операцию, которая будет внутренне разрешаться в других командах, единственный правильный ответ - использовать здесь функцию:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Использование псевдонимов в подобном сценарии сталкивается с множеством проблем. В отличие от функций, которые выполняются как команды, псевдонимы расширяются до текущей команды, что приведет к очень неожиданным проблемам при объединении этого псевдонима «команда» с другими командами. Они также не работают в сценариях.