Стандартні та / або загальні каталоги на ОС Unix / Linux


25

Походячи із світу Windows, я знайшов більшість імен каталогів папок досить інтуїтивно зрозумілим:

  • \Program Files містить файли, які використовуються програмами (сюрприз!)

  • \Program Files (x86) містить файли, які використовуються 32-бітовими програмами на 64-бітних ОС

  • \Users(раніше Documents and Settings) містить файли користувачів, тобто документи та налаштування

    • \Users\USER\Application Data містить конкретні програми

    • \Users\USER\Documents містить документи, що належать користувачеві

  • \Windows містить файли, що належать до самої операційної системи Windows

    • \Windows\Fonts зберігає файли шрифтів (сюрприз!)

    • \Windows\Temp - глобальний тимчасовий каталог

et cetera. Навіть якби я не мав уявлення, що роблять ці папки, я міг би з хорошою точністю здогадатися про їхні імена.

Тепер я добре розглядаю Linux і дуже розгублений, як знайти шлях до файлової системи.

Наприклад:

  • /binмістить двійкові файли. Але так робити /sbin, /usr/bin, /usr/sbinі , ймовірно , більше , що я не знаю , о. Що таке ?? У чому різниця між ними? Якщо я хочу зробити двійковий файл і помістити його кудись у всій системі, куди його покласти?

  • /mediaмістить зовнішні мультимедійні файлові системи. Але так і робить /mnt. І в даний момент жодна з них не містить нічого в моїй системі; все, здається, в /dev. Яка різниця? Де інші розділи на моєму жорсткому диску, як, наприклад, C:та D:які були в Windows?

  • /homeмістить файли та налаштування користувача. Стільки інтуїтивно зрозуміло, але тоді, у що слід піти /usr? І як /rootце все-таки окремо, навіть якщо це користувач з файлами та налаштуваннями?

  • /libмістить спільні бібліотеки, як DLL. Але так і робить /usr/lib. Яка різниця?

  • Що таке /etc ? Невже це означає "et cetera" чи щось інше? Які типи файлів повинні надходити туди - глобальні чи локальні? Це вигадка для речей, які ніхто не знав, куди їх поставити, чи є для цього певний приклад використання?

  • Що /opt, /procі /var? Для чого вони виступають і для чого вони використовуються? Я нічого не бачив у Windows *, і просто не можу зрозуміти, для чого вони можуть бути.

Якщо хтось може подумати про інші стандартні місця, про які, можливо, добре б дізнатися, сміливо додайте це питання; сподіваємось, це може бути хорошим орієнтиром для таких людей, як я, які починають знайомитися з * nix системами.

* Гаразд, це брехня. Я бачив подібні речі в WinObj, але, очевидно, не регулярно. Я все ще не знаю, що вони роблять в Linux.


1
Дякуємо, що зберігаєте гарний дух навчання. Ця тема часто спірна. Дивіться мою відповідь на це запитання, щоб отримати додаткові пояснення щодо принципових відмінностей між структурами файлової системи в Windows проти Linux.
Калеб

Не думайте про "usr" як абревіатуру "user", але "Unix System Resources" (навіть якщо це, мабуть, по батькові, оскільки він містив каталоги користувачів років тому) ( linux-training.be/files/books/html /fun/ch09s08.html ).
lgeorget

Немає жодної користі намагатися виправдати криптований каталог Unix / Linux / etc проти Windows (або Mac OS X). Це просто так.
Ендрю Вулф

Станом на 2017 рік, структура папок Windows - це повний безлад. C:\Program Files, C:\ProgramData, %HOME%\AppData\Local, %HOME%\AppData\LocalLow, C:\Windows\SystemApps... Всі приклади , де можна знайти виконувані файли в Windows. І я навіть не буду говорити про конфігураційні файли та реєстр, я не хочу ще більше депресувати. PS: Я працюю в першу чергу в Windows.
rsenna

Відповіді:


29

Для дистрибутивів Linux використовується FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html

Ви також можете спробувати man hier.

Я спробую підсумувати відповіді на ваші запитання у верхній частині моєї голови, але настійно пропоную вам прочитати FHS:

  • / bin - для бінарних файлів, що не належать до надпоширеної системи
  • / sbin призначений для бінарних даних надпоширеної (кореневої) системи
  • / usr / bin & / usr / sbin призначені для некритичних спільних непідрядних або суперпользовательських бінарних файлів відповідно
  • / mnt призначений для тимчасового монтажу розділу
  • / media призначений для монтажу багатьох знімних носіїв одночасно
  • / dev містить файли вашого системного пристрою; це довга історія :)
  • Папку / usr та її підпапки можна спільно використовувати з іншими системами, щоб вони мали доступ до тих самих програм / файлів, які встановлені в одному місці. Оскільки / usr зазвичай знаходиться в окремій файловій системі, вона не містить бінарних файлів, необхідних для підключення системи до Інтернету.
  • / root є окремим, тому що може знадобитися підключення системи до Інтернету без встановлення інших каталогів, які можуть бути на окремих розділах / жорстких дисках / серверах
  • Так, / etc означає "et cetera". Файли конфігурації для локальної системи зберігаються там.
  • / opt - це місце, де можна встановити програми, які ви завантажуєте / компілюєте. Таким чином ви можете зберігати їх окремо від решти системи, з усіма файлами в одному місці.
  • / proc містить інформацію про ядро ​​та запущені процеси
  • / var містить файли змінного розміру, такі як журнали, пошта, веб-сторінки тощо.

Для доступу до системи вам, як правило, не потрібно / var, / opt, / usr, / home; деякі потенційно найбільші каталоги в системі.

Один з моїх улюблених, якими деякі люди не користуються, є / srv. Це для даних, які розміщуються через такі сервіси, як http / ftp / samba. Я бачив / var використовував для цього багато, що насправді не є його метою.


Хороший огляд вирішення конкретних питань. Зауважте, що деякі дистрибуції використовують /home/users/usernameдля користувачів і /home/services/servicenameдля того, про що ви згадуєте /src. Я думаю, що це виходить краще тим, що це більш універсальний розділ. Ви можете мати його на власному розділі або використовувати той самий розділ і ваші користувацькі дані, що часто я хочу зробити.
Калеб

+1 дякую за посилання та описи, вони приголомшливі! :)
Мехрдад

/ usr має містити файли, специфічні для програм, що знаходяться в операційній системі та / або сторонніх файлів. Це не по суті непомірно! Хоча LSB стверджує, що вони зберігаються в / opt. / usr / share, з іншого боку, може містити файли, які можна поділити на машинах різних архітектур / версій ОС. Це все лише умовності! Цілком можливо (хоча і багато важкої роботи) використовувати зовсім іншу структуру. Хоча є й інші угоди - як-от Оптимальна гнучка архітектура Oracle
симбек

1
Ще одна річ, яку слід пам’ятати про Unix, - це концепція, що « все - це файл » (або, принаймні, схоже на одне). Наприклад, матеріал в / proc виглядає як файли та каталоги, але вміст справді динамічно створюється ядром, коли ви отримуєте доступ до них. Це означає, що ви можете використовувати ті самі інструменти (ls, cat тощо) для доступу до цієї інформації.
KeithB

1
@symcbean З FHS: "... / usr - це доступ, доступ лише для читання. Це означає, що / usr має бути доступним для різних хостів, сумісних з FHS ...". Очевидно, що деякі файли залежать від архітектури, а деякі дистрибутиви очікують надзвичайно різних ієрархій каталогів. Рішення - зробити домашнє завдання, як хороший адміністратор :)
bhinesley

18

Я не відповім про те, що вони означають (інші мають), але дам трохи історичний контекст.

По-перше, пам’ятайте, що UNIX наближається до 40 років, ще за часів паперової стрічки та 300 бодів жорстко кодованих терміналів до мейнфреймів (система Windows XP близько 10 років). Введення тексту було повільним, а потреба в ефективності введення тексту переважала безліч інших міркувань. Це є причиною дуже коротких основних команд (тобто 'ls', 'cat', 'cc', 'dd' тощо). Те саме було зі структурами каталогів. Думка полягала в тому, що якщо команди більше трьох-чотирьох символів, то ім'я було занадто довгим.

Каталог / usr спочатку містив домашні каталоги користувачів, оскільки більшість команд знаходились у / bin, а всі файли пристроїв знаходились у / dev. Пізніше вважалося зробити основний диск (коренева файлова система, '/') малим для швидшого завантаження. Тож виникли інші структури, такі як / usr / bin, / usr / include і / usr / lib, де / usr був окремим "приводом". Набагато пізніше, як вважалося, мати домашні каталоги користувачів у / home, ще один привід. І набагато пізніше, щоб мати / var (короткий для змінної / змінної). Каталог / etc означав "et cetera", оскільки це було локальне розташування всіх файлів конфігурації системи. / Mnt використовувався як тимчасове місце для доступу до диска (часто це резервний диск). Каталоги на зразок / opt, / proc та / media з'явилися набагато пізніше.

Залишилося багато (наприклад, / usr / local та / net), але це дає короткий опис того, чому назви "менш інтуїтивні".


2
+1 Я люблю історичний контекст, він організовує мій мозок. :) Дякуємо, що знайшли час, щоб написати це!
Мехрдад

5

Як вже було сказано тут, дистрибутиви Linux в основному використовують FHS, дивіться тут підручник, як огляд, особливо добре підходить для тих, хто йде з Windows.

На замітку, каталоги Windows здаються інтуїтивно зрозумілими, поверхово. Але дозвольте запитати вас, куди належать налаштування програми, як *.iniфайл у папці програм, у Documents and Settings\User( \Application Dataабо \Local Settings\Application Data) чи у сумнозвісному реєстрі? ніхто не знає, навіть Microsoft. І так ми можемо продовжувати і продовжувати.


1
Я думаю, що назви папок Windows 7 кращі. тобто AppData \ Roaming проти AppData \ Local - вони описують тип даних, що містяться там. Щодо інформації про конфігурацію: я думаю, я знаю, куди її поставити, коли бачу, але не можу її добре описати, я згоден. :)
Мехрдад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.