DataOnline sẽ hướng dẫn bạn cách xử lý nhập liệu từ người dùng trong Bash – từ việc hiển thị thông báo “nhấn Enter để tiếp tục” cho đến cách ghi nhận chuỗi dữ liệu người dùng nhập và lưu vào biến để sử dụng trong các quy trình xử lý sau.
Ngoài ra, bài viết cũng cung cấp phương pháp tìm tài liệu hướng dẫn (manpage) dành cho các lệnh tích hợp sẵn (built-in) trong Bash – những lệnh mà bạn có thể tưởng như không có tài liệu chính thức, nhưng thực chất lại có thể truy cập đầy đủ nếu biết cách tra cứu đúng.
Trong hướng dẫn này, bạn sẽ học được:
- Các mẹo, thủ thuật và phương pháp hữu ích khi làm việc với dòng lệnh Bash
- Cách tương tác nâng cao với Bash Shell
- Cách cải thiện kỹ năng Bash toàn diện và trở thành một người dùng Bash thành thạo hơn
Yêu cầu phần mềm và quy ước sử dụng
Danh mục | Yêu cầu, quy ước hoặc phần mềm được sử dụng |
---|---|
Hệ thống | Linux – không phụ thuộc vào bản phân phối |
Phần mềm | Dòng lệnh Bash, hệ điều hành dựa trên Linux |
Khác | Các tiện ích không có sẵn trong Bash có thể được cài đặt bằng sudo apt-get install utility-name (hoặc yum install trên các hệ thống RedHat) |
Quy ước
#
– các lệnh yêu cầu thực thi với quyền root (trực tiếp hoặc dùngsudo
)$
– các lệnh thực thi với quyền người dùng không đặc quyền
Ví dụ 1: Yêu cầu người dùng nhấn Enter để tiếp tục
Bạn đã bao giờ viết một script mà muốn hiện ra dòng “nhấn phím bất kỳ để tiếp tục” chưa? Mặc dù việc yêu cầu “nhấn phím bất kỳ” có thể rủi ro (ai đó lỡ nhấn nút nguồn thì sao ), thì yêu cầu “nhấn Enter để tiếp tục” lại rất dễ thực hiện trong script Bash:
$ cat test.sh #!/bin/bash read -p 'Press enter to continue...' echo 'Thank you for pressing enter... Please come again...'
Thử chạy nhé:
$ ./test.sh Press enter to continue... Thank you for pressing enter... Please come again...
Chúng tôi đã nhấn Enter sau dòng “Press enter to continue…” và script chạy đúng như mong đợi!
Tùy chọn -p
(prompt) của lệnh read
sẽ giúp hiển thị thông báo nhắc người dùng nhập liệu.
Ví dụ 2: Đọc dữ liệu người dùng nhập từ script
Giờ hãy nâng cấp ví dụ 1 một chút và thực sự đọc một chuỗi mà người dùng nhập vào, sau đó lưu vào biến:
$ cat test.sh #!/bin/bash read -p 'Your input: ' VAR1 echo "Input given: ${VAR1}"
Lại thử chạy nào:
$ ./test.sh Your input: I am typing here Input given: I am typing here
Script hoạt động hoàn hảo. Bạn có thể dùng read --help
để xem thêm tùy chọn hỗ trợ. Lưu ý: nếu bạn thử man read
, nó sẽ đưa bạn tới tài liệu của hàm đọc file trong Linux – chứ không phải read
trong Bash!
Việc đọc tài liệu read
trong Bash rất nên làm, vì mặc định read
có thể gây ra hiện tượng tách từ tự động.
Trong ví dụ trên thì không vấn đề vì chúng ta chỉ dùng một biến duy nhất để lưu input. Tuy nhiên nếu bạn dùng nhiều biến, bạn sẽ cần hiểu thêm về biến môi trường IFS (Internal Field Separator) – một công cụ mạnh mẽ giúp Bash xác định dấu phân cách giữa các trường.
Ví dụ 3: Tài liệu lệnh đâu mất rồi?
Như bạn đã thấy trong ví dụ 2, đôi khi việc tra tài liệu bằng man
có thể dẫn đến kết quả không như mong đợi – ví dụ như man read
đưa ta đến tài liệu cho thao tác đọc file, thay vì lệnh read
trong Bash.
Tuy nhiên, thực ra tài liệu vẫn có, nhưng vì đây là lệnh tích hợp (built-in command) nên cần tra cứu khác một chút:
Thay vào đó, bạn có thể sử dụng lệnh man builtins
để truy cập tài liệu hướng dẫn (manual) dành cho tất cả các lệnh tích hợp sẵn trong Bash.
Lệnh này sẽ đưa bạn đến trang tài liệu của tất cả các lệnh tích hợp sẵn trong Bash. Sau đó bạn có thể tìm từ khóa read
, hoặc bất kỳ lệnh built-in nào khác để tra cứu.
Nếu bạn muốn tìm hiểu thêm về Bash nói chung, hãy tham khảo loạt bài Các mẹo và thủ thuật dòng lệnh Bash hữu ích nơi tổng hợp những hướng dẫn thực tế và mẹo hữu ích dành cho người dùng Bash ở mọi cấp độ.
Kết luận
Trong bài viết này, chúng ta đã cùng nhau khám phá cách xử lý nhập liệu trong dòng lệnh Bash một cách hiệu quả. Bạn đã học được cách hiển thị prompt để yêu cầu người dùng nhấn Enter, cách đọc và lưu chuỗi dữ liệu nhập từ người dùng vào biến, cũng như hiểu thêm về sức mạnh của lệnh read
, biến môi trường IFS và cách thao tác với nhiều biến cùng lúc. Không chỉ vậy, bạn còn nắm được cách tra cứu tài liệu chính thức cho các lệnh tích hợp sẵn trong Bash thông qua man builtins
. Hy vọng những kiến thức này sẽ giúp bạn làm chủ Bash tốt hơn và tiếp tục tận hưởng hành trình khám phá thế giới dòng lệnh đầy thú vị!
Các ví dụ về mẹo và thủ thuật dòng lệnh Bash hữu ích – Phần 1
Các ví dụ về mẹo và thủ thuật dòng lệnh Bash hữu ích – Phần 2
Các ví dụ về mẹo và thủ thuật dòng lệnh Bash hữu ích – Phần 3
Các ví dụ về mẹo và thủ thuật dòng lệnh Bash hữu ích – Phần 4
Các ví dụ về mẹo và thủ thuật dòng lệnh Bash hữu ích – Phần 5