Псевдоніми призначені для зведення імен команд. Все, що перевищує це, слід робити за допомогою функцій.
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
}
Функція - це нова команда, яка має внутрішню логіку. Це не просто перейменування іншої команди. Він робить внутрішні операції.
Технічно псевдоніми в мові оболонки Баша настільки обмежені у можливостях, що вони надзвичайно погано підходять для всього, що передбачає більш ніж одну команду . Використовуйте їх для створення невеликої мутації однієї команди, не більше того.
Оскільки наміром є створення нової команди, яка виконує операцію, яка внутрішньо буде вирішуватися в інших командах, єдиний правильний відповідь - використовувати тут функцію:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Використання псевдонімів у подібному сценарії стикається з багатьма проблемами. На відміну від функцій, які виконуються як команди, псевдоніми розширюються в поточну команду, що призведе до дуже несподіваних проблем при поєднанні цього псевдоніма "команда" з іншими командами. Вони також не працюють в сценаріях.