Phân biệt lệnh tìm đường dẫn tuyệt đối “whereis” và “which” trên Linux

352
27-03-2018
Phân biệt lệnh tìm đường dẫn tuyệt đối “whereis” và “which” trên Linux

Which là một lệnh rất hữu ích được sử dụng để tìm vị trí của tệp thực thi nằm trong đường dẫn của bạn. Hãy tìm hiểu thông tin cùng Bizfly Cloud dưới bài viết này nhé!

# which yacc

/usr/bin/yacc

Lệnh whereis cũng tương tự như vậy:

# whereis yacc

yacc: /usr/bin/yacc /usr/share/man/man1p/yacc.1p.gz

Nó không chỉ trả về vị trí của tệp thực thi mà còn trả về các tệp nguồn và các trang của người dùng. Một sự khác biệt khác là nó không tìm kiếm đường dẫn được cấu hình mà nó sẽ tìm được một danh sách nội bộ của các đường dẫn Unix phổ biến.

Vì vậy, điều này về cơ bản có nghĩa là có thực thi sẽ được tìm thấy bởi which, không phải bởi whereis, lý do là vì chúng đang ở trong một non-standard directory mà là trong đường dẫn. Mặt khác, whereis sẽ tìm thấy các tệp thực thi khác không được tìm thấy bởi which nếu một số thư mục chuẩn không nằm trong đường dẫn.

Vì vậy, nếu bạn không tìm được  tập tin thực thi với một trong hai lệnh, bạn nên thử lệnh còn lại.

Which vẫn là lệnh khá được ưa thích so với whereis bởi vì nó chỉ trả lại một đường dẫn đầy đủ mà không cần bất kỳ thứ gì khác, giúp dễ dàng kết hợp nó với các lệnh khác, ví dụ:

# cat `which yacc`

#! /bin/sh

exec /usr/bin/bison -y "$@"

Tất nhiên bạn cũng có thể sử dụng whereis để chỉ hiển thị binaries và sau đó sử dụng awk để có được output bạn cần:

# whereis -b yacc | awk '{ print $2; }'

/usr/bin/yacc

Vì vậy, kết hợp nó với cat:

# cat `whereis -b yacc | awk '{ print $2; }'`

#! /bin/sh

exec /usr/bin/bison -y "$@"

Thao tác này chắc chắn sẽ dài hơn và phức tạp hơn.

Dịch từ: benohead.com/linux-which-vs-whereis/

>> Có thể bạn quan tâm: Hướng dẫn chi tiết nhất cách kiểm tra số lượng file đang được mở bởi 1 tiến trình trên Solaris

TAGS: linux
SHARE