Hướng dẫn này sẽ dạy bạn cách dùng lệnh which trong Linux với một số ví dụ đơn giản.
Lệnh which sẽ cho bạn biết đường dẫn đến tệp thực thi được dùng bởi một lệnh trên hệ thống nếu nó tồn tại.
Tại sao điều này hữu ích? Giả sử bạn có hai bản sao của tệp thực thi MySQL được cài trên hệ thống (cài đặt qua các phương pháp khác nhau), và bạn muốn biết cái nào thực sự đang được dùng để cái kia có thể được gỡ bỏ – lệnh which có thể cho bạn biết cái nào trong hai được gọi khi bạn thực thi MySQL trên dòng lệnh.
Cú Pháp Lệnh which Linux
Lệnh cho lệnh which như sau:
which OPTIONS COMMAND
Lưu ý rằng:
- OPTIONS là danh sách tùy chọn tùy ý từ bảng dưới đây có thể dùng để thay đổi hành vi mặc định của lệnh which
- COMMAND là tên của lệnh bạn muốn biết đường dẫn đến tệp thực thi cho
- COMMAND phải được cung cấp, nếu không which sẽ không có gì để tìm!
Các Tùy Chọn Của Lệnh
Dưới đây là các tùy chọn thường dùng nhất có thể truyền cho lệnh which:
| Tùy chọn | Mô tả |
|---|---|
| –all, -a | In tất cả tệp thực thi khớp trong PATH, không chỉ cái đầu tiên. |
| –read-alias, -i | Đọc alias từ stdin, báo cáo những cái khớp trên stdout. Hữu ích khi kết hợp với việc dùng alias cho which chính nó. |
| –skip-alias | Bỏ qua tùy chọn –read-alias, nếu có. Hữu ích để tìm kiếm rõ ràng các binary thông thường, trong khi dùng tùy chọn –read-alias trong alias hoặc hàm cho which. |
| –read-functions | Đọc định nghĩa hàm shell từ stdin, báo cáo những cái khớp trên stdout. Hữu ích khi kết hợp với việc dùng hàm shell cho which chính nó. |
| –skip-functions | Bỏ qua tùy chọn –read-functions, nếu có. Hữu ích để tìm kiếm rõ ràng các binary thông thường, trong khi dùng tùy chọn –read-functions trong alias hoặc hàm cho which. |
Như luôn, bạn có thể xem hướng dẫn sử dụng đầy đủ cho lệnh which bằng cách chạy:
man which
Ví Dụ Lệnh which
Dưới đây, chúng ta tìm đường dẫn cho tệp thực thi, được gọi khi nano chạy từ terminal:
which nano
Điều này sẽ trả về kiểu như sau nếu trình soạn thảo văn bản nano được cài trên hệ thống của bạn:
/usr/bin/nano
Nếu nano không được cài, bạn sẽ thấy:
nano not found
Điều này khiến lệnh which hữu ích cho cả việc kiểm tra vị trí tệp thực thi và xem một gói có được cài đặt/sẵn sàng hay không.
Nhiều tên tệp thực thi có thể được cung cấp nếu bạn muốn tra cứu nhiều lệnh cùng lúc:
which cat less
Sẽ trả về:
/bin/cat /usr/bin/less
Mã Trả Về
Nếu bạn dùng which trong Script Shell, bạn có thể dùng mã trạng thái được trả về bởi lệnh để xác định xem đường dẫn tệp thực thi có được tìm thấy hay không:
| Mã | Ý nghĩa |
|---|---|
| 0 | Tất cả các lệnh được chỉ định đều được tìm thấy và có thể thực thi. |
| 1 | Một hoặc nhiều lệnh được chỉ định không được tìm thấy hoặc không thể thực thi. |
| 2 | Tùy chọn hoặc cú pháp không hợp lệ đã được dùng. |
Điều này có thể siêu hữu ích nếu bạn muốn làm cho script shell của mình dễ di chuyển hơn – bạn có thể dùng lệnh which để kiểm tra xem một lệnh có sẵn sàng trước khi thực thi nó trong script, để đảm bảo người dùng cuối không nhận được bất kỳ lỗi nào nếu họ không có phần mềm yêu cầu cài đặt.