Что такое Linux, эквивалентный программным файлам Windows?

179

Под Windows большинство приложений и данных приложений хранятся в специальном каталоге, известном как C:\Program Files(и иногда C:\Program Files (x86)). Что такое Ubuntu / Linux, эквивалентный этому пути? Есть ли хоть один?

Каз Вулф
источник
2
Если вы хотите узнать, где находятся файлы определенного пакета, вы можете использовать менеджер пакетов Synaptic. Просто найдите пакет и посмотрите его установленные файлы.
Asmerito
6
Я думаю, что этот вопрос будет улучшен по причине желающих получить эквивалент. Существует разница, например, между «давайте посмотрим, что я установил и что я могу запустить», и «я пытаюсь найти игру сохранения этой / той части программного обеспечения, чтобы я мог возиться с ней» и, возможно, даже «Я подозреваю, что некоторые файлы настроек / ini-файлов для этой программы, которые я могу настроить». Это могут быть вопросы «Program Files», но здесь могут быть разные ответы.
Нанне
4
Связанный (но, вероятно, не следует считать дубликатом): Как понять структуру файловой системы Ubuntu?
Элия ​​Каган

Ответы:

104

/binи /usr/binгде сценарии, которые запускают программы. Прямой эквивалент "Program Files", хотя, вероятно, /usr/share( см. Стандарт иерархии файловой системы ). Этот каталог содержит различные файлы поддержки для большинства программ.

Наутилус показывает / usr / поделиться

Однако, вероятно, не существует прямого эквивалента, так как, например, файлы библиотеки являются общими для всей системы (in /lib), а параметры либо определяются пользователем (в домашнем каталоге пользователя), либо универсально расположены в /etc.

Поэтому установка программы через файл deb, репозиторий или сборку, скорее всего, поместит файлы во все эти места.

[РЕДАКТИРОВАТЬ] И, как другие отмечают, есть также /sbinи /usr/sbin. Кроме того /usr/local/bin, /opt/binи даже /usr/games/. Так что определенно не прямое сравнение с c:\program files!

Scaine
источник
4
Как насчет /opt? Я видел, что раньше многие программы (обычно с закрытым исходным кодом или на основе приложений) были похожи Program Files.
Купиакос
Похоже, что так и будет, с появлением Ubuntu Software Center, который, разумеется, будет поставлять свои игры. Но даже тогда, вряд ли это прямое сравнение, правда? Возможно, самая близкая вещь в эти дни.
Scaine
См. Askubuntu.com/a/294492/41499, для чего предназначен /optкаталог.
Герхард Бургер
/usr/local/binявляется полураспространенным местоположением для программного обеспечения, которое обычно не используется пользователем / компанией.
Марк Стюарт
И чем эта ОС лучше Windows? Я переключился на это, чтобы попробовать это лучше для веб-разработки. Но я не могу понять эти вещи иерархии ... Я установил PhpStorm, и теперь он находится в 1238128 папках ..
Тома Томов
84

Поздний ответ - я создал дорожную карту для начинающих. Если они ищут файл, но не знают, где искать, они могут использовать карту, чтобы примерно перемещаться. Вы можете скачать PNG в высоком разрешении здесь . Вы можете найти соответствующий пост здесь . Я буду обновлять и файл, и пост, когда позволит время, включая полезные комментарии.

d4nyll
источник
6
этот ответ игнорируется, он должен быть наверху.
Волдеморт
83

РЕДАКТИРОВАТЬ: См. Также ответ d4nyll ниже для превосходной и удобной для начинающих карты!

Прочитайте мой ответ ниже для получения дополнительной информации о том, что такое PATHпеременная окружения, что такое .desktopфайлы и как найти конкретную программу, используя различные команды linux.

Оригинальный ответ:


Нет простого ответа.

/bin, /usr/binИ/usr/share

Как упоминалось в других ответах, вы можете найти большинство исполняемых файлов в папке /binили /usr/bin, а файлы поддержки установлены в /usr/share.

/usr/local а также /opt

Однако есть и другие каталоги, в которые Ubuntu устанавливает приложения. PATHПеременный, которая определяет , где искать введенную команду, может дать вам ключ, мой выглядит ( echo $PATHв терминале):

/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

Как вы можете видеть, некоторые программы установлены в /usr/localи имеют свой собственный каталог и bin. Другое место, где установлено много программ /opt. Свойства этих расположений объясняются стандартом иерархии файловых систем , который очень хорошо читается. К сожалению, разница между /optи /usr/localне очень хорошо объяснена, у кого-то в unix stackexchange было более сложное объяснение:

  • /usr/localэто место для установки файлов, созданных администратором, обычно с помощью команды make. Идея состоит в том, чтобы избежать конфликтов с файлами, которые являются частью операционных систем, которые либо перезаписывают, либо перезаписывают локальные. например. /usr/bin/fooявляется частью ОС, а /usr/local/bin/fooявляется локальной альтернативой,
  • /optкаталог для установки пакетов, каждый из которых находится в своем собственном подкаталоге. Они уже созданы целыми пакетами, предоставленными независимым сторонним дистрибьютором программного обеспечения. Например, someappбыл бы установлен в /opt/someapp, одна из его команд была бы в /opt/someapp/bin/foo[и тогда обычно в одной из binдиректорий в PATH, или обычно, вызывается символическая ссылка , или программа вызывается из файла рабочего стола (см. Ниже)].

Поиск конкретной программы или команды

.desktop файлы

Чтобы узнать, где установлена ​​конкретная программа, вы можете сделать несколько шагов. Сначала вам нужно найти его .desktopфайл. Файлы рабочего стола похожи на ярлыки в Windows, и для системных приложений они находятся в /usr/share/applications. Файлы рабочего стола для приложений, которые доступны только для текущего пользователя, находятся в ~/.local/share/applications. Возьмем, к примеру, Google Chrome, в котором есть файл рабочего стола, /usr/share/applications/google-chrome.desktopи найдите строку, которая начинается с Exec=, это определяет, как запустить Google Chrome. Это говорит:

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

Итак, вы знаете, что Google Chrome включен /opt.

Теперь для Mozilla Firefox, который находится в /usr/share/applications/firefox.desktop. Это просто говорит

Exec=firefox %u

Поначалу кажется, что это не очень помогает, но потом вы понимаете, что это firefoxдолжно быть в каталоге, который находится в PATHпеременной (скорее всего, в a bin), и мы можем это найти (см. Ниже).

Поиск команд

Для просмотра команд , которые вы можете использовать один или несколько из следующих действий : type, whichи whereis(я включил ссылку на их ручные страницы в Интернете).

  • type : описывает команду и указывает, как она будет интерпретироваться, если используется как имя команды. Возможные типы для команды:

    1. псевдоним (псевдоним оболочки)
    2. функция (функция оболочки)
    3. встроенный (встроенный в оболочку)
    4. файл (файл на диске)
    5. ключевое слово (зарезервированное слово оболочки)

    (сам тип является встроенным в оболочку, попробуйте его с помощью type type: P)

    Выполнение type firefoxдает нам

    firefox is /usr/bin/firefox
    

    это то, что мы хотели знать

Если команда является файлом (который вы проверили type), вы можете также использовать:

  • который : показывает полный путь к команде,

    Выполнение which firefoxдает нам

     /usr/bin/firefox
    
  • whereis : найдите бинарные, исходные и справочные файлы для команды.

    Выполнение whereis firefoxдает нам

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

бонус

Вы можете проверить /usr/bin/firefoxближе с, ls -l /usr/bin/firefoxи это дает:

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

Похоже, что /usr/bin/firefoxэто «только» символическая ссылка на сценарий /usr/lib/firefox/firefox.sh. Если вы проверяете скрипт, вы обнаруживаете, что скрипт вызывает /usr/lib/firefox/firefox.
Вы можете покоиться с миром сейчас :)

Герхард Бургер
источник
Довольно крутой ответ. Один вопрос, что такое символическая ссылка? Это эквивалент Windows ярлык?
Quazi Irfan
@iamcreasy спасибо! Да, они являются своего рода ярлыком, но с основной целью избежать копирования файлов. Ярлыки окон более сопоставимы с. файлы рабочего стола, которые можно использовать, например, для создания элементов меню запуска.
Герхард Бургер
Зачем кому-то использовать файл .desktop над символическими ссылками и наоборот?
Quazi Irfan
1
@iamcreasy В файлы .desktop вы можете добавить дополнительную информацию, такую ​​как описание и значок (см. пример здесь: standard.freedesktop.org/desktop-entry-spec/latest/apa.html ), это «обычный» файл , Символическая ссылка - это «специальный» файл, который ссылается только на другой файл. Мне трудно это правильно объяснить, но, возможно, вы найдете лучший ответ здесь: superuser.com/questions/253935/…
Герхард Бургер,
18

Не существует единственного каталога, который является точным эквивалентом папки Program Files . В Linux порядок вещей сильно отличается от Windows.

В windows каждая программа, которую мы устанавливаем, получает свой собственный каталог внутри каталога Program Files. В этом каталоге создаются дополнительные подкаталоги для разных типов файлов. Не существует фиксированной структуры для подкаталогов. Программы сами решают, как они будут называть каждый каталог, и куда они хотят что-то поместить.

Но в Linux, когда установлена ​​программа, файлы разных типов копируются в разные места. Исполняемые файлы копируются в / usr / bin , файлы библиотеки в / usr / lib , документация в один или несколько из / usr / man , / usr / info и / usr / doc . Если есть конфигурационные файлы, то они, как правило , в домашнем каталоге пользователя или в / и т.д. .

binW
источник
Есть ли причина для такой группировки файлов, основанная на их назначении, а не на приложении, к которому принадлежат файлы? Является ли «стиль группировки файлов Unix» в целом более удобным с точки зрения системного администратора?
Джойман
1
на самом деле, нет. Это выбор дизайна, который они сделали, я думаю. Хотя он позволяет создавать такие утилиты, как «man», «info» или многие другие, которые зависят от этой файловой структуры. Например, «man» знает, где искать документацию для каждой команды. Если нет стандартного местоположения документов, человек не может работать.
binW
10

C:\Program FilesПапка будет /usr/binв Ubuntu. /binвыглядит больше как C:\windows.

На странице руководства по иерархии файловой системы :

/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 имеет другую структуру, чем Windows. Скажем, Ubuntu размещает почти все приложения в одном каталоге /usr/bin. Например, Windows создаст новую папку Mozilla Firefoxи добавит в нее конфигурацию, исполняемые файлы, библиотеки DLL, образы и т. Д. Ubuntu разбивает их на части, исполняемые файлы включаются /usr/bin, конфигурация общесистемной /etc, разделяемые объекты /usr/lib, образы /usr/share, ...

Lekensteyn
источник
5

«Программные файлы» Linux находятся во всей иерархии. Это может быть /usr/bin, /bin, /opt/...или в других каталогах.

Я думаю, вы найдете файл, связанный с вашей заявкой. Затем у меня есть идея, как искать файлы, которые устанавливаются при установке программы.

  1. Установите synapticвыдачу sudo apt-get install synapticна терминал.
  2. Ищите пакет, который вы хотите, поиск по вводу текста поиска.
  3. Щелкните правой кнопкой мыши по пакету и выберите Properties.
  4. Перейти к Installed Fileвкладке. Результат такой же как dpkg -L package_name.
  5. Там вы найдете все файлы, установленные для пакета.

Это связано с тем, что linux перемещает установленный файл в каталоги отдельно в зависимости от их типа.

  • Исполняемый файл идет в /usr/binили /bin.
  • Значок переходит на /usr/share/iconsили на ~/.local/share/iconsместный.
  • Целое приложение (портативное) на /opt.
  • Ярлык обычно включен /usr/share/applicationsили включен~/.local/share/applications
  • Документация по /usr/share/doc
  • Библиотека / модуль включен /usr/lib

И многие другие каталоги. (CMIIW, принятие поправки)

Abdillah
источник
3

В этом ответе, когда я говорю Unix, я имею в виду Unix, а также Unix-подобные операционные системы.

В Ubuntu на самом деле нет папки программ, содержащей все данные для каждой программы. В Unix и Unix-подобных операционных системах ВСЕ - это файл, даже команды терминала. Они тоже файлы. То, как Unix обрабатывает программы, может быть довольно хаотичным и организованным одновременно.

Значки для программ хранятся в / usr / share / icons / *, исполняемые файлы программ обычно хранятся в / usr / bin, / bin и других местах с каталогами bin (bin - это сокращение от bin). Библиотеки, от которых зависят программы, находятся в / lib.

Таким образом, вы получите не каталог, содержащий все данные для одной программы, а данные для программы. Хотя поначалу это кажется очень неорганизованным, оно позволяет обмениваться стандартными вещами, такими как библиотеки и значки.

Благодаря разрешениям для каждого файла, идея о том, что все является файлом, честно говоря, очень гениальна. Это делает Unix НАМНОГО более безопасным, чем другие операционные системы.

Томас Боксли
источник
3

Способ установки программ для Linux и Windows совершенно другой.

Общий шаблон в Windows для программы; или кучу программ от одного поставщика перейдите в его собственный подкаталог в C: \ Programs \ vendor или что-то подобное.

В Linux ваши файлы распределяются между определенными подкаталогами в зависимости от их функции. Есть каталоги для библиотек, иконки, справочные страницы, файлы журналов, конфигурации и так далее. Вы можете использовать некоторые из них, но система будет управлять всеми из них. Они не связаны вместе, но существуют вместе с аналогичными файлами из других программ.

Таким образом, в обычной реализации Linux нет реального эквивалента этой структуре каталогов Windows.

неизвестный пользователь
источник
2

Если вы устанавливаете собственные программы, я рекомендую 1 папку:

Timo
источник
-2

Посмотрите на /bin, /usr/binи все остальное , что говорит bin.

CPU2
источник