Чи погана практика, щоб ім’я папки містило крапку (.)? Як щодо імені файлу з кількома крапками?


28

Іноді має сенс, щоб ім’я папки містило крапку (.). Наприклад, ви зберігаєте дані для експерименту, проведеного при L = 0,5. Тож папка може бути названа:

experiment_L0.5

Схожа проблема може виникнути і для імен файлів. Наприклад:

file_L0.5.txt

Працюючи в Ubuntu, це погана практика? Як щодо спільного використання цих каталогів з користувачем Windows?

Спасибі!


5
Якщо крапка є першим символом, папка буде прихована. Крім цього, я не думаю, що це має значення.
користувач3121023

Відповіді:


37

Наскільки я знаю, проблем з іменем папок та файлів з однією чи кількома крапками немає.

Ubuntu зазвичай не використовує крапку та три символи (наприклад, .txt) для ідентифікації типу файлу. Тому це не має особливого значення в контексті Ubuntu. Це корисно при обміні файлами з Windows. Ubuntu використовує Magic Numbers в перших кількох байтах для ідентифікації типу файлу. Однак Наутілус. ігнорує магічні числа, якщо доступне розширення крапки та трьох символів для ідентифікації типу файлу. Цей параметр можна змінити. Див. Розділ Примусити nautilus ігнорувати розширення

В Ubuntu запуск імен файлів або папок з крапки, наприклад .experiment_L0.5, робить файл або папку прихованими. Ви можете перемкнути відображення прихованих файлів, натиснувши Ctrl+ Hу Nautilus. У Windows ім'я файлу, що починається з а. не приховано. Тож якщо ви перенесите прихований файл, названий .experiment_L0.5в системі Windows, він буде чітко видно.

У Ubuntu ім'я файлу може закінчуватися крапкою, оскільки воно не має спеціального значення, розміщеного в кінці. Однак у Windows точка відокремлює ім'я та розширення файлу, а ім'я файлу, що закінчується крапкою, але розширення не дозволено. Коли я намагався створити такий файл у Windows, у мене з’явився файл із лише ім'ям, без крапки, без розширення.

Довідка: Вікі щодо імен файлів

Сподіваюся, це допомагає.


4
Це вірно. Якщо ви обмінюєтесь файлами з Windows, вам доведеться уникати :знаків ободової кишки , незаконних у іменах файлів Windows, що створить проблеми ( і це робить ). Дивіться також тут .
Рмано

Дякую @Rmano Я додав посилання на вікі у своїй відповіді.
user68186

1
Говорячи про сумісність, я думаю, що fname.в Windows також не дозволена крапка (як ).
Рмано

Ще раз дякую @Rmano. Я провів кілька швидких тестів і не зміг створити файл, названий test.в Windows. Я оновлю свою відповідь.
user68186

1
Щоб додати коментар Rmano - це може бути проблемою для Ubuntu, якщо у вас встановлений накопичувач Windows через VirtualBox. Спроба mkdir імені з кінцевою крапкою не вдається з "помилкою протоколу".
bvanlew

11

Коротка відповідь

  • Windows не дозволяє використовувати наступні символи: <>:"/\|?*( джерело )
  • Більше не відштовхують символів: пробіл і крапка .( джерело )
    • Інструменти командного рядка важче використовувати, коли у вас є пробіли в іменах (важче, не неможливо)
    • Точки використовуються в RegEx (наприклад, коли ви хочете використовувати grep). Провідна точка робить файл, прихований умовно в Linux. У Windows в розширенні файлу використовуються крапки, які використовуються для виявлення типу файлів.
  • Windows , також не дозволить імена файлів CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, і LPT9. ( джерело )
  • Єдині символи, які не дозволені у файлових системах Unix, які я знаю, є /та null (нульовий байт, \0).
  • Дивіться також: Обмеження файлової системи (я не знаю, до якої ОС Windows ви хочете сумісність).

Довга відповідь

Технічна інформація: Файлова система

Ubuntu використовує ext4файлову систему. Файлова система відстежує, де файли зберігаються на базовому сховищі (диск або SSD або будь-який інший), дозволи у формі власника / групи / іншого можуть читати / записувати / виконувати, часові позначки, ім'я.

Файлова система структурує доступне сховище. Перший блок називається "суперблок". Цей блок використовується для монтажу файлової системи. Наскільки мені відомо, кожна сучасна файлова система ділить простір на блоки. Я думаю (і я не надто впевнений у цьому), що більшість файлових систем також має фіксований розмір блоку, хоча розмір блоку можна налаштувати під час створення файлової системи. ext4 (а також ext2 та ext3) використовують так звані "inode" для файлів і каталогів. Ці вклади містять вказівники на інші блоки (які також можуть бути введеннями або бути "блоками даних"). І "перший" inode файлу містить всю інформацію, яку я згадав вище.

Ще одна інформація - це "тип" файлу. "Тип" може бути:

  • звичайний файл
  • каталог
  • файл пристрою (блок або символьний пристрій)
  • ...

Насправді ви також можете відкривати каталоги з редактором:

vim /home

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

Однак для інших файлових систем все інакше. FAT16 і FAT32 використовували так звану "таблицю розподілу файлів". Це означає, що існує таблиця, яка містить усі файли, які зберігаються у вашому файлі, на якому "кластері" вони починаються та на якому кластері вони закінчуються як окремо пов'язаний список.

Важливе, що я хотів сказати вам, це те, що заборонені символи також можуть залежати від файлової системи.

Технічна інформація: Типи файлів

  • Windows використовує розширення файлів для виявлення типів файлів
  • Linux використовує "Чарівні байти" для виявлення типів файлів. Чарівні байти є частиною вмісту файлу і, отже, повністю не залежать від імені. Ці байти є частиною специфікації типу файлу (див. Специфікацію png як приклад). Він також використовує розширення імені файлів для файлів з тими ж магічними байтами, як .txtабо .html(обидва - текстові файли).

Пов'язані


Ваша здогадка щодо того, як FAT зберігає імена файлів, не зовсім коректна: en.wikipedia.org/wiki/FAT32#File_Allocation_Table - власне "FAT" зберігає список кластерів , тоді як каталоги зберігають список назви файлів із вказівником на перший кластер файл, подібний до того, як ви описуєте ext4. :) Крім того, .txtі .htmlфайли дійсно мають різні "магічні значення" - спробуйте перейменувати файл html у test.txtта працює file test.txt. Це не має великого відношення до оригінального питання, але все-таки :)
Сергій

1
Дякую, я видалив неправильну частину щодо FAT. про магічні значення та file: fileне використовує лише магічні значення для визначення типу файлу. Кожен дійсний HTML-файл - це текстовий файл (в тому сенсі, що він містить читаються символи), але не кожен дійсний текстовий файл є дійсним HTML-файлом (у тому сенсі, що він підтверджує валідатори W3C). Так що досить багато типів файлів (html, xml, csv, js, php, c, h, cpp, ...) насправді є текстовими файлами. Тільки двійкові файли мають магічні байти, які знаходяться на чітко визначених позиціях. Усі файли, які я назвав вище, можуть мати довільну пробіл перед вмістом.
Мартін Тома

5

Для повноти, назви, які складаються лише з однієї .або двох крапок, ..є спеціальними:

  • . відноситься до поточного каталогу
  • .. відноситься до батьківського каталогу

Ці записи додаються автоматично і завжди існують, тому ви не можете мати ім’я .або ...


Влучне зауваження. Це стосується як Windows, так і Ubuntu.
користувач68186,

1

Це не має значення ні в Linux, ні в Windows.

Поширена практика мати папку з назвою "program.d" - для збереження конфігурації та матеріалів для програми (дивіться в / etc каталог)


0

Ім'я файлів дуже гнучка в файлових системах Unix, Linux. Єдине ім’я файлу, яке ви не можете мати, - це нульовий символ або той, що містить /його ім’я. Але, безумовно, було б хорошою практикою уникати використання символів, заборонених / зарезервованих в інших системах з точки зору переносу імен; як ви не повинні використовувати жодного " * : < > ? \ / |символу (обмежений NTFS) у своєму імені файлу, якщо ви хочете отримати доступ до файлу в системі Windows.

А щодо використання .(періоду) в імені файлу , я думаю, що це повинно бути нормальним, оскільки він, здається, не є "зарезервованим" символом в жодній із систем (крім OpenVMS, MS-DOS та Windows, де його використовують у ім'я файлу / каталогів дозволено, але останнє виникнення буде інтерпретуватися як роздільник розширень у VMS, MS-DOS та Windows), як згадується у посиланні Вікіпедії, яке:

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

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