Яке розширення використовувати для текстових файлів? (Unix / Linux)


20

Я помітив, що я можу добре читати текстові файли без розширення .txt. Як це? Чи потрібно зберігати ці файли з .txtрозширенням або без нього ?

Крім того, що з .iniфайлами? Зазвичай я їх використовую так: чи config.iniслід видалити тут розширення?

Будь-які загальні ресурси щодо того, як Linux обробляє розширення файлів, були б корисні.

Відповіді:


37

UNIX / Linux не має тієї самої ранньої спадщини DOS / CP / M, що і Windows. Тож розширення, як правило, менш значні для більшості утиліт та інструментів UNIX.

Зазвичай я використовую лише середовище командного рядка. Розширення в такому середовищі під Linux не є дуже важливими, крім зручності для оператора чи користувача. (У мене недостатньо досвіду роботи з KDE або GNOME, щоб знати, як їх файлові менеджери справляються з розширеннями.)

Але така зручність, як правило, важлива. Якщо config.iniце дійсно в стандартному форматі ".ini" для Microsoft, я б дозволив розширення стояти. Звичайні старі текстові файли зазвичай не мають розширення в Linux, але це не є універсальним для всіх програм конфігураційних програм. Зазвичай програміст вирішує це.

Я думаю, що .txt корисний у Linux, якщо ви хочете підкреслити, що це НЕ файл конфігурації чи інший машиночитаний документ. Однак у розповсюдженнях джерел умовою є такі файли називати усіма кришками без розширення (тобто README, INSTALL, COPYING тощо)

Існують деякі стандарти та конвенції, але ніщо не заважає вам називати все, що завгодно, якщо ви не ділитесь речами з іншими.

У Windows іменування файлу .exeвказує оболонці (як правило explorer.exe), що це виконуваний файл. UNIX вкладає ці знання в дозволи файлової системи. Якщо встановлені належні xбіти (див. man chmod), Він визнається виконуваним оболонками та функціями ядра (я вважаю). Крім цього, Linux байдуже, більшість оболонок не піклується, і більшість програм шукають у файлі, щоб знайти його "тип".

Звичайно, є приємна команда, fileяка може проаналізувати файл і розповісти, що це таке, з певною мірою визначено. Я вважаю, що якщо він не може співставити дані у файлі з будь-яким відомим типом, і якщо він містить лише друковані символи ASCII / Unicode, то він передбачає його текстовий файл.


@Bruce Ediger нижче абсолютно коректний. На рівні ядра чи файлової системи немає нічого, тобто сам Linux, який вимагає або дбає про те, що вміст файлу повинен відповідати його імені або програмі, яка повинна його розуміти. Це не означає, що неможливо створити утиліту оболонки чи запускаючу програму, щоб робити речі на основі імені файлу.


7
Це також корисно, якщо ви багато працюєте в консолі, оскільки добре назви файлів легше відрізнити від інших за допомогою глобалізації.
lynxlynxlynx

9
Слід підкреслити, що назви файлів Linux не мають "розширень" - частина ".txt" імені файлу, яка містить його, є лише підрядкою. Слід також підкреслити, що внутрішня організація файлів (рядки, що закінчуються LF, рядки, що закінчуються CR-LF, записи фіксованого розміру тощо) навіть не має відношення до імені, а також "додаток", який знає про файл, пов'язаний з ним по імені .
Брюс Едігер

2
Я думаю, що лише записи FAT16 8.3 в DOS мали окреме 3-байтове поле для розширення. FAT32 зберігав поле 8.3 для сумісності, але власне "довге ім'я файлу" - це рядок без окремого поля розширення, розділеного на кілька записів каталогів ( fandecheng.com/personal/interests/ewindows/nuhelp/lfnspec.htm )
LawrenceC

23

На відміну від Windows, у системах UNIX тип файлу не визначається розширенням. Розширення файлу є і просто візуальним показником для людей. Ви можете назвати JPEG foo.c і відкрити його в Gimp. Інший контраст від Windows полягає в тому, що в системах UNIX потрібно використовувати все ім’я файлів, тоді як Windows часто піклується про нього (наприклад, працює лише explorerпроти explorer.exe). У UNIX foo.shпотрібно викликати як foo.sh, а не просто foo.

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


7
+1 заThis practice…is probably beneficial for humanity at large
Ульріх Дангель

Занадто погано різноманітність упаковки робить часом правильну обробку mime важкою (наприклад, у моєму досвіді у KDE), хоча я не знаю, чому програми не відступають після перевірки магічного байта.
lynxlynxlynx

3
Тому що немає ніякого "магічного" байта. Це просто скорочення "всіх відомих файлових типів, які досить добре зафіксовані та структуровані, щоб бути надійно виявленими з високим ступенем визначеності". Він дуже добре працює з текстовими або контейнерними файлами. Зазвичай, це збиток для будь-яких необроблених або невідомих типів даних.
Багамат

1
@bahamat Це не байт, але є частина файлу, яку традиційно називають " магічним числом ", яка повинна визначати, що файл містить. Це те, на що fileдивиться команда. (наприклад #!, магічне число для скриптів sh)
Ізката

1
@lzkata право, як я вже сказав: "відомі файлові типи, які досить добре зафіксовані та структуровані, щоб бути надійно виявленими з високим ступенем визначеності".
bahamat

7

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

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

2) Розширення допомагають вам, користувачеві, розібратися, що робить файл. У нашій лабораторії: .txt = текстовий файл .sgi = irix скомпільований двійковий .linux = linux скомпільований двійковий

Якщо вам доведеться використовувати старі машини Unix (ми все ще використовуємо IRIX), майте на увазі, що повернення каретки відрізняється від * nix-машин, і програми можуть не оцінити, якщо ви спробуєте відкрити файл із поверненнями каретки Windows.



3

Є кілька хороших відповідей. Я хотів би далі відповісти на частину оригінального запитання: "Будь-які загальні ресурси щодо того, як Linux обробляє розширення файлів, були б корисні".

Можна зареєструвати розширення, щоб Linux завжди відкривав певні розширення з певними програмами. Цей заклад називається binfmt .

binfmt_misc - це можливість ядра Linux, яка дозволяє розпізнавати довільні формати файлів і передавати їх певним програмам користувальницького простору, таким як емулятори та віртуальні машини. Виконані формати реєструються через інтерфейс файлової системи спеціального призначення (подібний до / proc). Дистрибутиви на основі Debian забезпечують функціональність через додатковий пакет підтримки binfmt.

Кожен формат має відповідний запис у директорії / proc / sys / fs / binfmt_misc, який можна прочитати, щоб отримати інформацію про заданий формат файлу.


-2

.txt можна відкрити через різні програми. але важливим є те, що він використовується для класифікації файлу до певного типу. Ви можете бачити, чи ми зберігаємо той самий файл за допомогою .html, який файл намагається відкрити в Internet Explorer. програми зроблені відповідно для підтримки таких типів файлів. Якщо ви використовуєте .html вище, компілятор намагається знайти в ньому атрибути html та показує результат відповідно. те саме з іншими розширеннями. Файл .ini можна читати як текст, але розширення класифікує його як файл конфігурації, а отже, компілятор розглядає його як файл конфігурації, а не звичайний текстовий файл, оскільки текстовий файл є лише набором записів і не має певної функції як функцію. інакше, отже, ви не хочете змінювати розширення ini на текст


6
Це може бути в Windows, але (як пояснено в інших відповідях), це не має значення для операційних систем UN * X-ish.
Пісквор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.