Що такого особливого в каталогах, імена яких починаються з крапки?


25

Мені було цікаво, в чому різниця між цими двома:

~/somedirectory/file.txt

і

~/.somedirectory/file.txt

Дуже важко запитати це в Google, оскільки я не знав, як пояснити, .коли навіть не знав, як це назвати. Але чи може хтось описати різницю між включенням точки та виключенням її?

Відповіді:


18

У системах, схожих на unix, всі каталоги містять два записи, .і.. , що означають сам каталог та його батьківський відповідно. Ці записи більшість часу не цікаві, тому lsїх приховує, а символи оболонок оболонки як *би не включають їх. Загалом, lsі підстановочні символи приховують усі файли, ім'я яких починається з а .; це простий спосіб , щоб виключити .і ..і дозволяють користувачам приховати інші файли зі списків. Окрім виключення зі списків, у цих файлах немає нічого особливого.

Unix зберігає файли конфігурації для кожного користувача у домашній каталог користувача. Якщо всі файли конфігурації з'явилися у списках файлів, домашній каталог буде переповнений файлами, які користувачі не хвилюють щодня. Отже, конфігураційні файли завжди починаються з .: зазвичай файл конфігурації програми Foo називається чимось на зразок .fooабо .foorc. З цієї причини файли конфігурації користувача часто називають крапковими файлами .


1
« У більш загальному плані , lsі джокери приховати всі файли, ім'я яких починається з ., це простий спосіб , щоб виключити .і ..і дозволяють користувачам приховати інші файли зі списків.» Це звучить так: Концепція про приховування файлів / каталогів, які починаються з крапки, насправді виявилася прихованою . ... Але згодом люди зрозуміли, що можливість приховати деякі файли / каталоги має значення в цьому, отже, вони почали ставити крапку на початку файлів, які вони хочуть приховати. Це справді так чи просто припущення?
Утку

3
@Utku На насправді, це було навпаки, так як мінімум на перший: оригінальний розробник мав намір приховати тільки .і , ..але допустив помилку . Однак можливо, що його відмовили виправити це, оскільки деякі користувачі вважають це корисним, і причина, з якої починаються файли конфігурації користувача, .безумовно, така, що вони не захаращують вихід lsу домашній каталог. Я думаю, що у нас тут є питання щодо цього, але я не можу його знайти, можливо, його помилили.
Жил "ТАК - перестань бути злим"

15

Режиси, що починаються з крапки ., вважаються прихованими. Це означає:

  • ~/somedirectoryі ~/.somedirectoryце різні каталоги. Тобто, якщо ~/somedirectoryви існували і ви це зробили mkdir ~/.somedirectory, ви не зірветеся з File Existsповідомленням.

  • lsКоманда не буде показувати ці каталоги , починаючи з.

  • У ls -aволі будуть показані обидва каталоги


6
ls -A відображає файли та каталоги, які починаються з. але не включає. і .. записи.
Джуліан

7

Для отримання детальної інформації про файлову систему Unix перевірте стандарт . Зокрема, точкові файли використовуються для файлів конфігурації в каталозі користувачів, і якщо програма має більше одного, вона повинна помістити їх у крапковий каталог.

Це приховує файли від користувача, якщо він не хоче їх знайти . Таким чином вони не перешкоджають, а інструменти випадково з ними не псуються.


4

Ведучий "." в каталозі чи імені файлу приводить те, що каталог чи файл приховано під час виконання lsкоманди.


1
Ви можете переглянути всі файли, починаючи з ". з лс -а.
Сардатріон

1

Як і раніше @DaveNay, цей період призведе до приховування файлу чи каталогу.

Що стосується вашого другого неявного запитання, ви шукаєте це в google:

Просто введіть у вікні пошуку: період linux перед назвою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.