Ví dụ, tôi đã git
cài đặt trên hệ thống của mình. Nhưng tôi không nhớ nơi tôi đã cài đặt nó, vậy lệnh nào phù hợp để tìm ra điều này?
Ví dụ, tôi đã git
cài đặt trên hệ thống của mình. Nhưng tôi không nhớ nơi tôi đã cài đặt nó, vậy lệnh nào phù hợp để tìm ra điều này?
Câu trả lời:
Nếu nó nằm trong đường dẫn của bạn, thì bạn có thể chạy type git
hoặc which git
. Các which
lệnh đã có vấn đề nhận được con đường đúng đắn (sự nhầm lẫn giữa môi trường và các tập tin dot). Đối với type
, bạn có thể chỉ nhận được đường dẫn với -p
đối số.
Nếu nó không nằm trong đường dẫn của bạn, thì tốt nhất bạn nên tìm nó với locate -b git
Nó sẽ tìm thấy bất cứ thứ gì có tên 'git'. Nó sẽ là một danh sách dài, vì vậy có thể tốt để đủ điều kiện với nó locate -b git | fgrep -w bin
.
locate
vô tận (nó rất nhanh), nhưng đối với những người không biết về nó, locate
chỉ cập nhật như bản cập nhật cơ sở dữ liệu gần đây nhất của nó, được tự động chạy hàng ngày trên Ubuntu của tôi. Lệnh refresh là sudo updatedb
... Cũng locate
có khả năng regex tích hợp, vì vậy các lệnh như thế này hoạt động: locate -br "^git$"
... -b` có nghĩa là hạn chế tìm kiếm chỉ tên cơ sở ... hoặc không có -b
, nó tìm kiếm tên đường dẫn đầy đủ .. Ngoài ra , nó chỉ tìm kiếm các đường dẫn mà bạn đã cấu hình nó để tìm kiếm .. không có điều khiển dòng lệnh nào ngoài bộ lọc regex của bạn.
type
là một phần mềm dựng sẵn cho tôi biết bí danh và như vậy, và which
là một chương trình bên ngoài chỉ cho tôi đường dẫn đến một thực thi ... mặc dù nếu có một phần mềm được tích hợp vào cách mà thực thi sẽ không được gọi.
which
là nó không biết về các hàm và hàm dựng sẵn (có liên quan khi bạn tự hỏi việc gõ lệnh sẽ làm gì) và nó sử dụng khác nhau $PATH
trên một số hệ thống.
Cách tiêu chuẩn POSIX để làm điều này là command -v git
. Tất cả các hệ thống giống như UNIX nên hỗ trợ này.
whereis git
và bạn có được đường dẫn đến lệnh.
đó chỉ là nếu git nằm trong biến PATH của bạn, trong trường hợp bạn đã cài đặt nó không thông qua trình quản lý gói của bạn, nó phức tạp hơn và bạn nên sử dụng các lệnh find
hoặc locate
.
which
cũng được khuyến khích.
Những câu trả lời khác ở đây dường như chủ yếu hướng tới các phiên bản hiện đại của Linux, vì vậy nếu bạn xảy ra để sử dụng git
trên một hệ điều hành mà không có locate
, whereis
, which
, hoặc apropos
(như Solaris, HPUX, vv), sau đó luôn luôn là chế độ chờ cũ find
.
find / -name git
Một số phiên bản cũ hơn của các hệ thống được liệt kê ở trên, bạn có thể cần một -print
tùy chọn được cung cấp cho find
.
find / -name git -print
Và nếu bạn sử dụng locate
, hãy chắc chắn rằng bạn chạy updatedb
định kỳ. ( locate.updatedb
trên một số dẫn xuất BSD)
type
; nó đáng tin cậy và di động (ngoại trừ các hệ thống 30 năm tuổi).
type
. :) Đó chắc chắn sẽ đi vào tiết mục!
find
một tìm kiếm sâu đầu tiên của hệ thống tệp bắt đầu từ bất cứ nơi nào bạn root nó. Vì vậy, find / -name git
sẽ đi qua toàn bộ hệ thống của bạn. Nếu bạn biết rằng chương trình nằm trên con đường của bạn, bạn thường có thể làm IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done
, mặc dù các hệ thống tập tin Unix đủ cho phép để điều này có thể phá vỡ theo nhiều cách khác nhau nếu có các ký tự lạ trong bạn PATH
.
PATH
, điều chính xác (với cùng cảnh báo như trước) là IFS=":"; for dir in $PATH; do find "$dir" -name git; done
. Ngoài ra, để nhắc lại, câu trả lời này chỉ nên được sử dụng bởi những người không có quyền truy cập vào type
hoặc which
hoặc locate
, tức là, hầu như không ai. Câu trả lời của @ Arcege là chính xác.
Để có được đường dẫn đến chương trình đã cài đặt, bạn có thể sử dụng whereis
hoặc which
. Nếu bạn quên tên của nó, bạn có thể sử dụng apropos
với một từ đồng nghĩa hoặc mô tả về tiện ích của bạn, ví dụ như apropos "version control"
sẽ tìm thấy git
. Theo sau đó tất nhiên là whatis
lệnh tóm tắt ngắn gọn chức năng của một chương trình. Tuy nhiên, điều này không áp dụng cho tất cả các chương trình và chức năng trên hệ thống của bạn. Hãy thử ví dụ whatis "the meaning of life, universe and everything"
.
which
mệnh lệnh" thực sự :)