Aliasy służą do aliasingu nazw poleceń. Cokolwiek poza tym powinno być zrobione z funkcjami.
alias ll='ls -l' # The ll command is an alias for ls -l
Aliasy to nazwy, które są nadal powiązane z pierwotną nazwą. ll
jest tylko nieco specyficznym rodzajem ls
.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Funkcja to nowe polecenie o wewnętrznej logice. To nie jest po prostu zmiana nazwy innego polecenia. Wykonuje operacje wewnętrzne.
Technicznie aliasy w języku powłoki Bash mają tak ograniczone możliwości, że są wyjątkowo nieodpowiednie dla wszystkiego, co wymaga więcej niż jednego polecenia . Użyj ich do stworzenia małej mutacji pojedynczego polecenia, nic więcej.
Ponieważ intencją jest utworzenie nowego polecenia, które wykona operację, która wewnętrznie rozwiąże inne polecenia, jedyną prawidłową odpowiedzią jest użycie funkcji tutaj:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Użycie aliasów w takim scenariuszu napotyka wiele problemów. W przeciwieństwie do funkcji wykonywanych jako polecenia, aliasy są rozszerzane na bieżące polecenie, co doprowadzi do bardzo nieoczekiwanych problemów podczas łączenia tego polecenia „alias” z innymi poleceniami. Nie działają również w skryptach.