Alias dimaksudkan untuk alias nama perintah. Apa pun di luar itu harus dilakukan dengan fungsi.
alias ll='ls -l' # The ll command is an alias for ls -l
Alias adalah nama yang masih dikaitkan dengan nama asli. ll
hanya jenis yang agak spesifik ls
.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Fungsi adalah perintah baru yang memiliki logika internal. Itu bukan hanya mengubah nama perintah lain. Itu operasi internal.
Secara teknis, alias dalam bahasa shell Bash sangat terbatas dalam kemampuan sehingga mereka sangat tidak cocok untuk apa pun yang melibatkan lebih dari satu perintah . Gunakan mereka untuk membuat mutasi kecil dari satu perintah, tidak lebih.
Karena tujuannya adalah untuk membuat perintah baru yang melakukan operasi yang akan diselesaikan secara internal pada perintah lain, satu-satunya jawaban yang benar adalah dengan menggunakan fungsi di sini:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Penggunaan alias dalam skenario seperti ini mengalami banyak masalah. Berlawanan dengan fungsi, yang dieksekusi sebagai perintah, alias diperluas ke perintah saat ini, yang akan menyebabkan masalah yang sangat tidak terduga saat menggabungkan alias "perintah" ini dengan perintah lain. Mereka juga tidak bekerja dalam skrip.