Linux tương đương với Tệp chương trình của Windows là gì?


179

Trong Windows, hầu hết các ứng dụng và dữ liệu ứng dụng được lưu trữ trong một thư mục đặc biệt được gọi là C:\Program Files(và đôi khi C:\Program Files (x86)). Ubuntu / Linux tương đương với đường dẫn này là gì? Thậm chí có một?


2
Nếu bạn muốn biết các tập tin của gói cụ thể ở đâu, bạn có thể sử dụng trình quản lý gói Synaptic. Chỉ cần tìm kiếm gói, và xem các tập tin cài đặt của nó.
Asmerito

6
Tôi nghĩ rằng câu hỏi này sẽ được cải thiện bởi một lý do muốn tương đương. Chẳng hạn, có một sự khác biệt giữa "hãy xem những gì tôi đã cài đặt và những gì tôi có thể chạy" và "Tôi đang cố gắng tìm trò chơi tiết kiệm của phần mềm này / phần mềm đó, vì vậy tôi có thể tìm hiểu về nó" và thậm chí có thể "Tôi nghi ngờ một số tệp cài đặt / tệp ini cho chương trình này mà tôi có thể điều chỉnh". Tất cả đều có thể là câu hỏi "Tệp chương trình", nhưng có câu trả lời khác nhau ở đây.
Nanne

4
Liên quan (nhưng có lẽ không nên được coi là trùng lặp): Làm thế nào để hiểu cách bố trí hệ thống tệp Ubuntu?
Eliah Kagan

Câu trả lời:


104

/bin/usr/binlà nơi các kịch bản bắt đầu các chương trình. Tương đương trực tiếp với "Tệp chương trình" có lẽ là /usr/share( xem Tiêu chuẩn phân cấp hệ thống tệp ). Thư mục đó chứa các tệp hỗ trợ khác nhau cho hầu hết các chương trình.

Nautilus hiển thị / usr / chia sẻ

Tuy nhiên, có lẽ không có tương đương trực tiếp, vì, ví dụ, các tệp thư viện được chia sẻ trên toàn hệ thống (trong /lib) và các tùy chọn được người dùng chỉ định (trong thư mục chính của người dùng) hoặc nằm ở vị trí phổ biến /etc.

Vì vậy, cài đặt chương trình thông qua tệp gỡ lỗi, kho lưu trữ hoặc bản dựng có thể sẽ đặt tệp vào tất cả các vị trí này.

[EDIT] Và như những người khác lưu ý, cũng có /sbin/usr/sbin. Cộng /usr/local/bin, /opt/binvà thậm chí /usr/games/. Vì vậy, chắc chắn không phải là một so sánh trực tiếp với c:\program files!


4
Thế còn /opt? Tôi đã thấy rằng giữ nhiều chương trình (thường là nguồn đóng hoặc dựa trên ứng dụng) trước đây theo cách tương tự Program Files.
Kupiakos

Có vẻ như đang đi theo hướng đó, với sự ra đời của Trung tâm phần mềm Ubuntu cung cấp các trò chơi của nó ở đó, chắc chắn. Nhưng ngay cả khi đó, hầu như không phải là một so sánh trực tiếp, thực sự, phải không? Có thể những điều gần nhất những ngày này mặc dù.
Scaine

Xem Askubfox.com/a/294492/41499 để biết /optthư mục này dùng để làm gì.
Burger Gerhard

/usr/local/binlà một vị trí bán chung cho phần mềm mà người dùng / công ty không sử dụng phổ biến.
Mark Stewart

Và hệ điều hành này tốt hơn Windows như thế nào? Tôi chuyển sang dùng thử nó là bette cho phát triển web. Nhưng tôi không thể hiểu những thứ bậc đó ... Tôi đã cài đặt PhpStorm và hiện đã có trong 1238128 thư mục ..
Toma Tomov

84

Trả lời muộn - Tôi đã tạo lộ trình cho người mới bắt đầu theo dõi. Nếu họ đang tìm kiếm một tệp nhưng không biết tìm ở đâu, họ có thể sử dụng bản đồ để điều hướng xung quanh. Bạn có thể tải xuống một PNG độ phân giải cao ở đây . Bạn có thể tìm thấy những bài liên quan ở đây . Tôi sẽ tiếp tục cập nhật cả tập tin và bài đăng khi thời gian cho phép, kết hợp những bình luận hữu ích.


6
Câu trả lời này được bỏ qua nó nên ở trên cùng.
voldemort

83

EDIT: Xem thêm câu trả lời của d4nyll dưới đây để có bản đồ xuất sắc và thân thiện với người mới bắt đầu!

Đọc câu trả lời của tôi dưới đây để biết thêm thông tin về PATHbiến môi trường là gì, .desktoptệp là gì và cách tìm một chương trình cụ thể bằng các lệnh linux khác nhau.

Câu trả lời gốc:


Không có câu trả lời dễ dàng.

/bin, /usr/bin/usr/share

Như đã đề cập trong các câu trả lời khác, bạn có thể tìm thấy hầu hết các tệp thực thi trong /binhoặc /usr/binvà các tệp hỗ trợ được cài đặt trong /usr/share.

/usr/local/opt

Tuy nhiên, có nhiều thư mục hơn trong đó Ubuntu cài đặt các ứng dụng. Các PATHbiến, trong đó xác định nơi để tìm kiếm một lệnh nhập vào, có thể cung cấp cho bạn một đầu mối, tôi trông giống như ( echo $PATHtrong một thiết bị đầu cuối):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Như bạn có thể thấy một số phần mềm được cài đặt /usr/localvà có thư mục riêng và bin. Một nơi khác có nhiều chương trình được cài đặt là /opt. Các thuộc tính của các vị trí này được giải thích theo Tiêu chuẩn phân cấp hệ thống tập tin , đây là một cách đọc rất tốt. Thật không may, sự khác biệt giữa /opt/usr/localkhông được giải thích rõ ràng, một người nào đó trên stackexchange unix đã có một lời giải thích phức tạp hơn:

  • /usr/locallà nơi để cài đặt các tệp được xây dựng bởi quản trị viên, thường bằng cách sử dụng lệnh make. Ý tưởng là để tránh xung đột với các tệp là một phần của hệ điều hành sẽ bị ghi đè hoặc ghi đè lên các tệp cục bộ nếu không. ví dụ. /usr/bin/foolà một phần của HĐH trong khi /usr/local/bin/foolà một thay thế cục bộ,
  • /optlà một thư mục để cài đặt các gói chưa được xử lý mỗi gói trong thư mục con riêng của chúng. Họ đã được xây dựng toàn bộ các gói được cung cấp bởi một nhà phân phối phần mềm độc lập của bên thứ ba. Ví dụ: someappsẽ được cài đặt /opt/someapp, một trong các lệnh của nó sẽ nằm trong /opt/someapp/bin/foo[và sau đó thường là một liên kết tượng trưng được tạo trong một trong các binthư mục trong PATHhoặc chương trình được gọi từ tệp trên máy tính để bàn (xem bên dưới)].

Tìm một chương trình hoặc lệnh cụ thể

.desktop các tập tin

Để tìm ra nơi một chương trình cụ thể được cài đặt, bạn có thể thực hiện một số bước. Đầu tiên bạn cần xác định vị trí .desktoptập tin của nó . Các tệp trên máy tính để bàn tương tự như các phím tắt trong Windows và đối với các ứng dụng hệ thống, chúng được đặt trong đó /usr/share/applications. Các tập tin máy tính để bàn cho các ứng dụng chỉ có sẵn cho người dùng hiện tại đang ở ~/.local/share/applications. Lấy ví dụ Google Chrome, có tệp máy tính để bàn /usr/share/applications/google-chrome.desktopvà tìm dòng bắt đầu bằng Exec=, điều này xác định cách khởi động Google Chrome. Nó nói rằng:

Exec=/opt/google/chrome/google-chrome

Vì vậy, bạn biết Google Chrome đang ở /opt.

Bây giờ cho Mozilla Firefox được đặt tại /usr/share/applications/firefox.desktop. Nó chỉ đơn giản nói

Exec=firefox %u

Lúc đầu, điều này dường như không giúp được gì nhiều, nhưng sau đó bạn nhận ra rằng nó firefoxphải nằm trong một thư mục nằm trong PATHbiến (rất có thể là a bin) và chúng ta có thể tra cứu nó (xem bên dưới).

Tra cứu lệnh

Để tra cứu lệnh bạn có thể sử dụng một hoặc nhiều điều sau đây: type, whichwhereis(tôi đã bao gồm một liên kết đến trang hướng dẫn trực tuyến của họ).

  • type : nó mô tả một lệnh và cho biết nó sẽ được hiểu như thế nào nếu được sử dụng làm tên lệnh. Các loại có thể cho một lệnh là:

    1. bí danh (bí danh vỏ)
    2. hàm (hàm shell)
    3. dựng sẵn (vỏ dựng)
    4. tập tin (tập tin đĩa)
    5. từ khóa (từ dành riêng shell)

    (loại chính nó là một vỏ dựng sẵn, hãy thử với type type: P)

    Thi công type firefoxcho chúng tôi

    firefox is /usr/bin/firefox
    

    đó là những gì chúng tôi muốn biết

Nếu một lệnh là một tệp (mà bạn đã kiểm tra type) thì bạn cũng có thể sử dụng:

  • trong đó : hiển thị đường dẫn đầy đủ của lệnh,

    Thi công which firefoxcho chúng tôi

     /usr/bin/firefox
    
  • Trong đó : định vị các tệp nhị phân, nguồn và trang thủ công cho một lệnh.

    Thi công whereis firefoxcho chúng tôi

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Thêm

Bạn có thể kiểm tra /usr/bin/firefoxgần hơn với ls -l /usr/bin/firefoxvà điều này mang lại:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Dường như đó /usr/bin/firefoxlà "chỉ" một liên kết tượng trưng cho kịch bản /usr/lib/firefox/firefox.sh. Nếu bạn kiểm tra tập lệnh, bạn phát hiện ra rằng tập lệnh gọi /usr/lib/firefox/firefox.
Bạn có thể yên nghỉ bây giờ :)


Câu trả lời khá tuyệt. Một câu hỏi, Liên kết tượng trưng là gì? Có phải Windows tương đương phím tắt?
Quazi Irfan

@iamcreasy cảm ơn! Vâng, chúng là một loại phím tắt, nhưng với mục đích chính là tránh các bản sao tệp. Các phím tắt windows là tương đương với. tập tin máy tính để bàn, có thể được sử dụng để tạo, ví dụ, các mục startmenu.
Burger Gerhard

Tại sao ai đó sẽ sử dụng tệp .desktop trên các liên kết tượng trưng và ngược lại?
Quazi Irfan

1
Trong @iamcreasy file .desktop bạn có thêm thông tin thêm, chẳng hạn như mô tả và một biểu tượng (xem ví dụ ở đây: standards.freedesktop.org/desktop-entry-spec/latest/apa.html ), đó là một tập tin 'thường xuyên' . Liên kết tượng trưng là một tệp 'đặc biệt' chỉ liên kết đến một tệp khác. Tôi thấy điều này khó giải thích chính xác nhưng có lẽ bạn có thể tìm thấy câu trả lời tốt hơn ở đây: superuser.com/questions/253935/ mẹo
Gerhard Burger

18

Không có thư mục duy nhất tương đương chính xác với thư mục Tệp chương trình . Cách Linux sắp xếp mọi thứ khác rất nhiều so với Windows.

Trong các cửa sổ, mọi chương trình chúng ta cài đặt đều có thư mục riêng trong thư mục Tệp chương trình. Trong thư mục đó, các thư mục con tiếp theo được tạo cho các loại tệp khác nhau. Không có cấu trúc cố định cho các thư mục con. Các chương trình tự quyết định những gì họ muốn gọi mỗi thư mục và nơi họ muốn đặt những gì.

Nhưng trong Linux khi một chương trình được cài đặt, các loại tệp khác nhau được sao chép vào các vị trí khác nhau. Các tệp thực thi được sao chép vào / usr / bin , các tệp thư viện vào / usr / lib , tài liệu tới một hoặc nhiều / usr / man , / usr / thông tin/ usr / doc . Nếu có file cấu hình, chúng thường trong thư mục chính của người dùng hoặc trong / etc .


Có bất kỳ lý do cho việc nhóm các tệp này dựa trên mục đích của chúng chứ không phải dựa trên ứng dụng mà các tệp thuộc về? Là "kiểu nhóm tập tin Unix" nói chung thuận tiện hơn từ góc độ quản trị viên hệ thống?
jojman

1
không thực sự Đó là một sự lựa chọn thiết kế mà họ làm tôi nghĩ. Mặc dù nó cho phép tạo các tiện ích như "người đàn ông", "thông tin" hoặc nhiều tiện ích khác phụ thuộc vào cấu trúc tệp này. Ví dụ: "man" biết nơi tìm tài liệu cho mỗi lệnh. Nếu không có vị trí chuẩn của tài liệu, con người không thể làm việc.
binW

10

Các C:\Program Filesthư mục sẽ /usr/bintrong Ubuntu. /bintrông giống như C:\windows.

Từ trang thủ công của hệ thống phân cấp tệp :

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu có cấu trúc khác với windows. Ubuntu đặt gần như tất cả các ứng dụng trong một thư mục /usr/bin. Windows sẽ tạo một thư mục mới, nói Mozilla Firefoxvà thêm cấu hình, tệp thực thi, DLL, hình ảnh, v.v. vào đó. Ubuntu tách chúng ra, thực thi đi vào /usr/bin, cấu hình toàn hệ thống /etc, các đối tượng được chia sẻ trong /usr/lib, hình ảnh trong /usr/share, ...


5

Linux 'Tệp chương trình' nằm trong toàn bộ phân cấp. Nó có thể là trên /usr/bin, /bin, /opt/..., hoặc trong các thư mục khác.

Tôi nghĩ rằng bạn sẽ tìm thấy một số tập tin liên quan đến ứng dụng của bạn. Sau đó, tôi có một ý tưởng về cách xem các tệp được cài đặt khi cài đặt chương trình.

  1. Cài đặt synapticbằng cách phát hành sudo apt-get install synaptictrên thiết bị đầu cuối.
  2. Tìm gói bạn muốn, tìm kiếm trên văn bản tìm kiếm.
  3. Nhấp chuột phải vào gói và chọn Properties.
  4. Di chuyển đến Installed Filetab. Kết quả giống như dpkg -L package_name.
  5. Ở đó bạn sẽ tìm thấy tất cả các tập tin được cài đặt cho gói.

Đó là bởi vì linux di chuyển tệp đã cài đặt vào các thư mục riêng dựa trên loại của chúng.

  • Thực thi đi đến /usr/binhoặc /bin.
  • Biểu tượng đi đến /usr/share/iconshoặc bật ~/.local/share/iconscho địa phương.
  • Toàn bộ ứng dụng (di động) trên /opt.
  • Phím tắt thường bật /usr/share/applicationshoặc bật~/.local/share/applications
  • Tài liệu về /usr/share/doc
  • Thư viện / mô-đun trên /usr/lib

Và nhiều thư mục khác. (CMIIW, chấp nhận sửa chữa)


3

Trong câu trả lời này khi tôi nói Unix tôi có nghĩa là Unix cũng như các hệ điều hành giống Unix.

Ubuntu không thực sự có một thư mục chương trình chứa tất cả dữ liệu cho mỗi chương trình. Trong các hệ điều hành giống Unix và Unix, MỌI THỨ là một tệp, thậm chí là các lệnh đầu cuối. Chúng cũng là tập tin. Cách Unix xử lý các chương trình có thể khá hỗn loạn và được tổ chức cùng một lúc.

Các biểu tượng cho các chương trình được lưu trữ trong / usr / share / icon / *, các tệp thực thi chương trình thường được lưu trữ trong / usr / bin, / bin và các vị trí khác có thư mục bin (bin là obv viết tắt của nhị phân). Các thư viện mà các chương trình phụ thuộc vào là trong / lib.

Vì vậy, bạn kết thúc với không phải là một thư mục chứa tất cả dữ liệu cho một chương trình, nhưng dữ liệu cho chương trình trải ra. Mặc dù lúc đầu điều này có vẻ rất vô tổ chức, nó cho phép chia sẻ những thứ tiêu chuẩn như thư viện và biểu tượng.

Nhờ có quyền cho mỗi tệp, ý tưởng về mọi thứ là một tệp rất tuyệt vời để thành thật. Nó làm cho Unix MUCH an toàn hơn các hệ điều hành khác.


3

Cách mà các chương trình Linux và Windows được cài đặt khá khác nhau.

Mẫu phổ biến trong Windows là dành cho một chương trình; hoặc một loạt các chương trình, từ một nhà cung cấp đi vào thư mục con của chính nó trong C: \ chương trình \ nhà cung cấp hoặc một cái gì đó tương tự.

Trong Linux, các tệp của bạn được phân chia giữa các thư mục con cụ thể tùy thuộc vào chức năng của chúng. Có thư mục cho thư viện, biểu tượng, trang man, Tệp nhật ký, cấu hình, v.v. Bạn có thể sử dụng một số trong số họ, nhưng hệ thống sẽ quản lý tất cả chúng. Chúng không được ghép với nhau, nhưng tồn tại cùng với các tệp tương tự từ các chương trình khác.

Vì vậy, không có cấu trúc thư mục Windows thực sự trong triển khai Linux thông thường.


2

Nếu bạn cài đặt chương trình riêng, tôi khuyên bạn nên 1 thư mục:


-2

Nhìn vào /bin, /usr/binvà bất cứ điều gì khác nói bin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.