Bí danh có nghĩa là dành cho bí danh tên lệnh. Bất cứ điều gì ngoài đó nên được thực hiện với các chức năng.
alias ll='ls -l' # The ll command is an alias for ls -l
Bí danh là tên vẫn được liên kết với tên gốc. ll
chỉ là một loại hơi cụ thể của ls
.
d() {
if exists colordiff; then
colordiff -ur "[email protected]"
elif exists diff; then
diff -ur "[email protected]"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Hàm là một lệnh mới có logic nội bộ. Nó không chỉ đơn giản là đổi tên lệnh khác. Nó hoạt động nội bộ.
Về mặt kỹ thuật, các bí danh trong ngôn ngữ trình bao Bash rất hạn chế về khả năng chúng vô cùng phù hợp với bất kỳ thứ gì liên quan đến nhiều hơn một lệnh đơn. Sử dụng chúng để tạo ra một đột biến nhỏ của một lệnh duy nhất, không có gì hơn.
Kể từ khi ý định là để tạo ra một lệnh mới mà thực hiện một hoạt động mà trong nội bộ sẽ giải quyết trong các lệnh khác, câu trả lời đúng duy nhất là sử dụng một chức năng ở đây:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Sử dụng bí danh trong một kịch bản như điều này xảy ra rất nhiều vấn đề. Trái ngược với các hàm, được thực hiện dưới dạng các lệnh, các bí danh được mở rộng thành lệnh hiện tại, điều này sẽ dẫn đến các vấn đề rất bất ngờ khi kết hợp bí danh "lệnh" này với các lệnh khác. Chúng cũng không hoạt động trong các tập lệnh.
không nên đó là "khóa function() {} blah" ? – emeraldjava
Tôi sử dụng cú pháp 'sh', cũng hoạt động với' bash'. – mouviciel
Làm cách nào để vượt qua đối số? Biến Nesting 'msg' bên trong 'lock()' dấu ngoặc đơn cho lỗi 'lỗi cú pháp gần mã thông báo không mong muốn' msg'' .. – geotheory