Trong linux, tôi khởi chạy một phần mềm bằng cách gõ, ví dụ, liquidplot. Làm thế nào tôi có thể tìm thấy đường dẫn cài đặt cho phần mềm này?
Trong linux, tôi khởi chạy một phần mềm bằng cách gõ, ví dụ, liquidplot. Làm thế nào tôi có thể tìm thấy đường dẫn cài đặt cho phần mềm này?
Câu trả lời:
Bạn có thể dùng:
which fluidpoint
để xem nó đang thực thi từ đâu (nếu nó nằm trong $ PATH của bạn). Hoặc là:
find / -name fluidpoint 2> /dev/null
để tìm một tệp có tên fluipoint và chuyển hướng lỗi trên các hệ thống tệp ảo.
Thông thường họ đang ở /sbin
, /usr/sbin
, /usr/local/bin
hoặc ~
như một thư mục ẩn.
Từ hướng dẫn:
NAME
which - shows the full path of (shell) commands.
SYNOPSIS
which [options] [--] programname [...]
Hướng dẫn đầy đủ: https://linux.die.net/man/1/which
alias fluidpoint
,
which
(ví dụ: phiên bản tích hợp trong ZSH) sẽ làm điều đó cho bạn
/opt/*
hoặc /usr/local/bin
. ~
là thư mục nhà của bạn, tôi bối rối tại sao bạn gọi nó là "ẩn".
~/.dir
. Thư mục ẩn bên dưới thư mục chính. Và tôi hoàn toàn quên mất /usr/local/bin
dop.
Nếu bạn sử dụng phân phối dựa trên RPM (CentOS, RHEL, SUSE, openSUSE), bạn có thể sử dụng vòng / phút
Thí dụ:
rpm -ql findutils
/bin/find
/usr/bin/find
/usr/bin/xargs
/usr/share/doc/packages/findutils
/usr/share/doc/packages/findutils/AUTHORS
/usr/share/doc/packages/findutils/COPYING
/usr/share/doc/packages/findutils/NEWS
/usr/share/doc/packages/findutils/README
/usr/share/doc/packages/findutils/THANKS
/usr/share/doc/packages/findutils/TODO
/usr/share/info/find.info.gz
/usr/share/man/man1/find.1.gz
Mọi thứ không được cài đặt vào các vị trí trong thế giới Linux / UNIX giống như chúng ở trong thế giới Windows (và thậm chí là phần nào trong thế giới Mac). Chúng được phân phối nhiều hơn. Các nhị phân nằm trong /bin
hoặc /sbin
, các thư viện nằm trong /lib
, các biểu tượng / đồ họa / tài liệu nằm trong / chia sẻ, cấu hình nằm trong /etc
và dữ liệu chương trình nằm trong /var
.
Các /bin
, /lib
, /sbin
chứa các ứng dụng cốt lõi cần thiết để khởi động và /usr
chứa tất cả các ứng dụng người dùng và hệ thống khác.
Các whereis
lệnh nằm nhị phân, nguồn, và bằng tay-page file cho một lệnh, và các type
lệnh nói chính xác những gì shell thực hiện khi bạn chạy một lệnh nào đó.
Hãy thử whereis -l fluidplot
trong trường hợp của bạn.
Nếu nó chỉ trả về "liquidplot:", nhưng không có đường dẫn, điều đó có nghĩa là phần mềm chưa được cài đặt.
Lưu ý rằng điều này không bao gồm các tệp có thể bị ẩn trong thư mục chính bên dưới ~/.local/share/
(trong trường hợp của tôi).
Tìm thấy trên Linux Vít
Chỉ cần thêm một số điểm vào câu trả lời của @ djsumdog, nếu bạn đang sử dụng dist dựa trên DPKG, như Ubuntu, bạn có thể sử dụng
dpkg --status some_package
để kiểm tra xem nó nói về cái gì
dpkg --listfiles some_package
để kiểm tra những tập tin được bao gồm / có liên quan đến gói này. Đó là cho các gói không có nhị phân để chạy, như libnss3
. Và
dpkg --search some_file
để tìm gói nào bao gồm tập tin này.
Ví dụ: dpkg --listfiles libnss3
đưa cho tôi:
/.
/usr
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/libssl3.so
/usr/lib/i386-linux-gnu/nss
/usr/lib/i386-linux-gnu/nss/libsoftokn3.chk
/usr/lib/i386-linux-gnu/nss/libnssckbi.so
/usr/lib/i386-linux-gnu/nss/libnsssysinit.so
/usr/lib/i386-linux-gnu/nss/libfreebl3.chk
/usr/lib/i386-linux-gnu/nss/libnssdbm3.chk
/usr/lib/i386-linux-gnu/nss/libnssdbm3.so
/usr/lib/i386-linux-gnu/nss/libsoftokn3.so
/usr/lib/i386-linux-gnu/nss/libfreebl3.so
/usr/lib/i386-linux-gnu/libnssutil3.so
/usr/lib/i386-linux-gnu/libsmime3.so
/usr/lib/i386-linux-gnu/libnss3.so
/usr/share
/usr/share/doc
/usr/share/doc/libnss3
/usr/share/doc/libnss3/copyright
/usr/share/doc/libnss3/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libnss3
Lưu ý rằng các thư mục không chỉ được sở hữu bởi các gói này, mà còn bởi các gói khác. Chỉ cần kiểm tra các tập tin.
Và ngược lại, dpkg --search libnss3.so
cho tôi:
firefox: /usr/lib/firefox/libnss3.so
thunderbird: /usr/lib/thunderbird/libnss3.so
libnss3:i386: /usr/lib/i386-linux-gnu/libnss3.so
libnss3-1d:i386: /usr/lib/i386-linux-gnu/libnss3.so.1d
Thay vì sử dụng which
( có lẽ không phải là lựa chọn đúng trừ khi bạn sử dụng csh ), bạn có thể sử dụng command -v fluidplot
để lấy shell thành boune như shell để cho bạn biết nó sẽ làm gì nếu bạn yêu cầu nó chạy lệnh ( fluidplot
trong ví dụ này) .
Một số ví dụ cho tôi:
$ command -v ls
alias ls='ls --color=auto'
$ command -v cat
/bin/cat
$ test_func() {
> :
> }
$ command -v test_func
test_func
$ which test_func
/usr/bin/which: no test_func in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin)
$ if command -v noSuchFile; then echo "It exists"; else echo "does not exist"; fi
does not exist
vì vậy bạn cũng có thể sử dụng nó để kiểm tra nếu một lệnh thậm chí sẽ được tìm thấy và cố gắng chạy. Vì hầu hết chúng ta sử dụng các shell giống như Bourne (ví dụ: bash hoặc zsh), điều này thường được ưa thích hơnwhich