Một trong những tính năng hay của Linux là dễ dàng tạo script tự động hóa và đơn giản hóa task. Hữu ích khi xử lý nhóm file lớn, như log file nếu bạn là Systems Administrator hoặc CSV/TXT nếu làm research. Tuy nhiên, có một tập ký tự rất cụ thể bạn phải hiểu để làm scripting – Shebang hoặc #!. Bài viết trả lời mọi thắc mắc về Shebang, hướng dẫn dùng character set này trong Linux.
Shebang là gì?
Shebang, hay #!, là character set dùng để chỉ dẫn hệ thống interpreter nào sẽ dùng. Nếu không quen interpreter là gì, nó cơ bản là chương trình đọc lệnh bạn nhập vào terminal Linux. Bạn biết nó là Bash, nhưng cũng có thể dùng Fsh, Zsh, Ksh.
Đây là binary program đọc lệnh bạn đưa vào, như ls hoặc xargs, và quyết định làm gì với chúng. Full path thường là /bin/bash hoặc tương tự. Xem hướng dẫn virtual directory structure Linux nếu bối rối.
#! dùng trong file text nào đó để load interpreter phù hợp cho code phía dưới file đó. Có thể viết script như hình sau.
Và chạy như hình này.
Sẽ chạy được cho bạn, nhưng có thể phiền sau thời gian. Cách tốt hơn có thể như hình này.
Và chạy như này.
Tại sao Shebang được phát minh?
Mặc dù dùng Shebang tốn thêm bước khi tạo script, nhưng khả năng dùng ./ hoặc "dot-slash" chạy script sẽ dễ dàng hơn về sau. Script lo việc pass lệnh cho interpreter nào, nghĩa là bạn không cần nhớ. Tuyệt vời nếu schedule as cron job hoặc execute script từ trong script khác.
Làm system đơn giản hơn administer vì bất kể bạn muốn Bash, Zsh, hay Python interpret nội dung file, có dòng đầu tiên đó trong script sẽ làm cho nó drop-dead simple.
Cách dùng Shebang?
Rất đơn giản: gõ nó ở dòng đầu tiên file script cùng với absolute path đến interpreter bạn muốn pass lệnh. Ví dụ:
#!/bin/bash #!/bin/zsh #!/usr/bin/env python3
Khi đã có dòng đó, bắt đầu gõ bên dưới. Xong, save file và làm cho executable bằng một trong các lệnh:
chmod 755 SCRIPT-NAME chmod a+x SCRIPT-NAME
Cả hai đạt cùng kết quả. Từ đó, chỉ cần chạy script như sau:
./SCRIPT_NAME
Xong! Đơn giản vậy.
Nếu thích hướng dẫn Shebang, hãy xem thêm các how-to Linux khác của chúng tôi, như fix lỗi "No space left on device" và sửa USB drive hỏng.