Ví dụ, tôi đã gitcà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 đã gitcà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 githoặc which git. Các whichlệ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.
locatevô tận (nó rất nhanh), nhưng đối với những người không biết về nó, locatechỉ 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 locatecó 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.
typelà một phần mềm dựng sẵn cho tôi biết bí danh và như vậy, và whichlà 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.
whichlà 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 $PATHtrê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 findhoặc locate.
whichcũ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 gittrê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 -printtù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.updatedbtrê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!
findmộ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 gitsẽ đ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 typehoặ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 whereishoặc which. Nếu bạn quên tên của nó, bạn có thể sử dụng aproposvớ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à whatislệ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".
whichmệnh lệnh" thực sự :)