В Ubuntu пустой файл - это то же самое, что и текстовый файл? [закрыто]

Я новичок в Ubuntu.

Если в оболочке я делаю:

touch file

Он создает файл в текущем каталоге, и если я открываю этот файл, он появляется как пустой текстовый файл. Также я могу сделать

echo "test" > file
cat file

И то, что я получаю - это строка.

Так пустой файл равен текстовому файлу?

6
задан 1 January 2018 в 10:15

6 ответов

Это создает файл в текущем каталоге, если я открываю этот файл, это появляется как пустой текстовый файл.

Если Вы работаете touch non_existing_filename, это создаст пустой файл. Файл пуст, ничего не содержа. Это не означает, что это - текстовый файл или любой другой вид файла.

Если Вы работаете touch existing_file, касание обновит метки времени на файле.

echo "test" > file
cat file

И то, что я получаю, является строкой. Таким образом, пустой файл равен текстовому файлу?

Да, если Вы запишете строку в пустой файл, то Вы получите строку при чтении содержания файла. Отметьте это > перезаписи все содержание в файле и результат были бы тем же, если бы файл был пустым, несуществующим или некоторый другой файл (как изображение). Можно использовать >> добавлять текст в файл.

Обратите внимание что инструменты, такие как перенаправление (>>, > и так далее), не заботьтесь о типе файла. Это - совершенно допустимая операция для добавления текстовой строки в файл, содержащий, например, изображение JPEG. Это - также совершенно допустимая операция к cat некоторый файл изображения. Не то, чтобы я рекомендую попробовать; это не отобразится правильно на Вашем терминале.

Файловая система не имеет никакого понятия типов файлов. Это не заботится о том, какое содержание файл имеет - и нет никакого различия между различными типами файлов на уровне файловой системы.

Традиционно Unix намного менее зависит от типов файлов, чем Windows, и совершенно разумно назвать текстовый файл README, пока в Windows было бы распространено иметь расширение .txt для текстового файла.

Если Вы задаетесь вопросом, какой файл Вы имеете на руках, утилите file довольно полезно:

$ file  auth.log
auth.log: ASCII text
$ file Dokken.mp4 
Dokken.mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]

file решает тип контента на основе описания общих характеристик каждого файла, обычно названного подписью файла. Например, debian будет всегда запускаться с байтов 21 3C 61 72 63 68 3E, и если мы видим те байты в начале файла, у нас, вероятно, есть debian пакет на наших руках.

file утилита использует так называемые волшебные файлы для решения, на какой тип файла это смотрит. Больше информации об этом может быть найдено в странице справочника для волшебства (например. man magic в системе Linux).

Отметьте это file весьма ненадежно, просто очень хороший индикатор. Если я создаю файл, который содержит байты ed ab ee db 0d 25, файл определит это как /tmp/foobar: RPM v13.37 bin. ed ab ee db необходимый заголовок для файлов об/мин, и 0d 25 1337 в шестнадцатеричном числе... Этим файлом не будет допустимый RPM-пакет всегда.

15
ответ дан 23 November 2019 в 07:14

При использовании касания к файлу, который не существует, оно создаст пустой файл для Вас. При использовании его на существующем файле, это обновит времена доступа и т.д. Проверьте тип файла с командой файла. Могут быть пустые двоичные файлы.

Для тех файлов file утилита возвращает следующее:

$ touch new
$ file new
new: empty

Но для файла с некоторым текстом это возвратит "текст ASCII"

$ echo "text" > text
$ file text 
text: ASCII text

Но некоторые графические приложения, такие как Pluma или Gedit откроют оба файла как текст.

9
ответ дан 23 November 2019 в 07:14

Существует старая поговорка в Linux / Unix

Все - файл

После этих слов Linux определяет типы файлов волшебством, не обязательно содержанием

Посмотрите, Как Ubuntu знает, каков тип файла файл без расширения?

5
ответ дан 23 November 2019 в 07:14

Пустой файл является просто пустым файлом - он не имеет никакого содержания, таким образом, это не текстовый файл. Можно заполнить пустой файл чем-либо, что Вы хотите (для создания этого текстовым файлом или двоичным файлом, или безотносительно другого типа файла, который Вы хотите). Вот простой тест:

Создайте пустой файл: $ touch somefile

Посмотрите, каков тип файла:

$ touch somefile
$ file somefile
$ somefile: empty

Добавьте некоторый текст к "somefile" и посмотрите, какой файл это:

$ echo "Some text..." >> somefile
$ file somefile
somefile: ASCII text

Создайте небольшой двоичный файл:

#include <iostream>
int main(int argc, char *argv[]) {
    std::cout << "Hello, cruel world!" << std::endl;
    return 0;
}

$ g++ test.cpp -o test

Удалите "somefile", коснитесь его снова, затем добавьте содержание двоичного файла к "somefile":

$ rm somefile
$ touch somefile
$ cat test >> somefile
$ file somefile
somefile: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=18c391d1f1bba8069fe85962458c7609bd8f516e, not stripped
1
ответ дан 23 November 2019 в 07:14

TLDR: Нет. Текстовый файл не должен быть пустым, чтобы быть обнаруженным как таковой. Несомненно, это может быть пусто.

touch устанавливает метку времени файла и создает файл, если это не существует. Так, какой файл является пустым файлом?

$ ls -l test
-rw-r--r-- 1 user users 0  1. Jän 18:36 test
$ file test
test: empty

file утилита говорит это как отдельный тип файла. Это вызвано тем, что пустой файл мог быть чем-либо, что имеет смысл ко многим приложениям: Это может быть пустой файл простого текста, пустая таблица CSV, пустой поток необработанных данных (это не может быть пустой файл типа GZ, JPEG и т.д., потому что эти файлы не имеют 0 байтов, даже если приложения рассматривают их как пустых, поскольку они все содержат заголовки и другой материал). Так, тип не может быть немного лучше определен как пустой.

1
ответ дан 23 November 2019 в 07:14

Короче говоря, пустой файл называют файлом нулевого байта. Этот файл не имеет никаких данных, ни даже просто заголовка, таким образом, Вы не можете сказать тип, хотя некоторые файловые менеджеры и другие программы могут рассматривать их как файл простого текста (это не истинный но хороший выбор рассматривать). Читайте больше отсюда.

0
ответ дан 23 November 2019 в 07:14

Другие вопросы по тегам:

Похожие вопросы: