Чому назви файлів, які починаються з крапки, приховані? Чи можу я приховати файли, не використовуючи крапку в якості їх першого символу?


15

Спочатку я думав, що це збіг, але тепер я бачу, що є навіть тег для цього: усі приховані назви файлів починаються з крапки. Це конвенція? Чому його обрали? Чи можна її змінити? Або іншими словами (як відповідне запитання @evilsoup припускає відповідь на купу інших): чи можна приховати файли, не перейменуючи їх (використовуючи .як перший символ їх імені)?


Або "чому всі приховані імена файлів починаються з крапки?", Якщо ви хочете.
JMCF125

2
Так, це конвенція, а чому саме її обрали хто знає, піти запитувати піонерів UNIX, це стара конвенція.
terdon

4
Про аспекти історії читайте відповідну статтю у Вікіпедії про приховані файли та plus.google.com/101960720994009339267/posts/R58WgWwN9jp . Це неможливо змінити.
jofel

Я думав, що Linux повністю настроюється ...
JMCF125

1
@ JMCF125 насправді цей коментар вийшов трохи більш саркастичним, ніж я мав намір, вибачте за це. Ви насправді запитуєте: "Чи можу я заховати файли, не перейменуючи їх?" - якщо це так, ви повинні відредагувати це у своєму запитанні.
evilsoup

Відповіді:


26

За даними Вікіпедії ,

Поняття про те, що прізвища передували a. слід приховати - це результат помилки програмного забезпечення в перші дні Unix. Коли спеціальні записи .та ..записи каталогів були додані до файлової системи, було вирішено, що команда ls не повинна відображати їх. Однак програма була помилково написана, щоб виключити будь-який файл, ім'я якого починалося з .символу, а не точні імена .або ...

... тож воно почалося як помилка, а потім його прийняли як функцію (для запису .- це посилання на поточний каталог і ..посилання на каталог над ним, але я впевнений, що ви це вже знаєте ). Оскільки цей спосіб приховування файлів насправді є досить хорошим більшість часу, я вважаю, що ніхто ніколи не намагався реалізувати приховування файлів у стилі Windows.

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

Існує ще один метод приховування файлів, який не передбачає перейменування їх, але він працює лише для файлових менеджерів GUI (і серед них він не є універсальним - основні Linux використовують його, але я не думаю, що Finder OSX це робить, і тим більше нішеві файлові менеджери Linux мають меншу ймовірність підтримувати таку поведінку): ви можете створити файл, який називається .hidden, і покласти ім’я файлів, які ви хочете приховати всередині нього, по одному на рядок. lsі шарики з оболонками цього не поважатимуть, але це може бути корисним для вас.


Це приховування не працює на Єдність. Але оскільки ви безпосередньо вирішили всі питання, я позначу це як прийняту відповідь (хоча обидва відповіді я підтримав).
JMCF125

3
Сторінка Вікіпедії більше не містить інформації про це. Тим НЕ менше, Роб Пайк працював на UNIX в Bell Labs і зробив коротке повідомлення про тему: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Олександр

" OS X ", а не "OSX".
Пітер Мортенсен

14

Файли, що починаються з крапки, за замовчуванням ігноруються командою "ls", яка має більш-менш однаковий ефект "прихованих" файлів, але не є однаковою (інші команди можуть вибрати те саме чи ні). Файли, що починаються з крапки, не є "прихованими", оскільки "прихований" не є одним з їх атрибутів. На відміну від DOS / Windows, "прихований" не є атрибутом в Unix. У Unix є багато атрибутів ("man chattr" розповість вам їх усі), але прихований не один з них.

Причина, чому dot-файли ігноруються "ls", насправді досить смішна / хитра. Це було не рішення дизайну, а результат помилки в програмному забезпеченні в перші дні Unix . Коли спец. і .. записи файлів були додані до файлової системи, було вирішено, що команда ls не повинна відображати їх, оскільки вони перешкоджають. Однак програма була поспішно написана, щоб виключити будь-який файл, ім'я якого починалося з. символ, а не точні назви ". або "..". І це створило прецедент, який відтоді дотримується в Unix. Як не дивно, коли хлопці з Unix перейшли до створення плану 9, вони не ставили в ньому цілеспрямовані файли .


Я намагався man chattr, хоча думав, що, можливо, мені знадобиться якийсь пакет або певна програма, щоб зробити можливим інші приховані файли.
JMCF125

0

Ви можете приховати файли чи ні та на яких умовах залежить від використовуваної файлової системи та її драйвера. У традиційних файлових системах Unix немає атрибуту "приховати" для файлів.

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

(Ось так, як руткіти можуть приховувати свої файли: вони підключаються до системних викликів, які створюють списки каталогів, і відфільтровують файли, які вони хочуть приховати.)

Наприклад, у файлових системах кластерних файлів Oracle ACFS каталог <filesystem mountpoint>/.ACFS/по-справжньому прихований: він просто не буде вказаний у списку, навіть не з ls -a. Але якщо ви знаєте, що він там, ви можете отримати доступ до нього просто чудово.

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

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