Что означает выход, когда вы делаете cat image.png? Это то, из чего на самом деле сделан образ? Имеет ли значение, какое расширение файла имеет изображение?
cat выведет содержимое файла (нуль и единицы, которые будут отображаться на невоспроизводимые символы, потому что они не являются правильными символами?) в stdout, который по умолчанию является вашим терминалом.
Расширение файла для нас (людей), чтобы легко определить, какой тип файла, однако некоторые программы используют его для его открытия, но в основном программы определяют тип файла, используя его заголовок.
Используйте file file.png, чтобы получить тип файла, или xxd file.png:
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
00000010: 0000 0002 0000 0002 0800 0000 0057 dd52 .............W.R
00000020: f800 0000 0e49 4441 5478 9c63 6c60 6062 .....IDATx.cl``b
00000030: 6000 0002 9200 84f7 7ca3 5800 0000 0049 `.......|.X....I
00000040: 454e 44ae 4260 82 END.B`.
, чтобы получить шестнадцатеричный дамп содержимого файла, обратите внимание на «PNG» в первом line.
Также здесь мы видим, что PNG-подпись:
PNG 89 50 4E 47 0D 0A 1A 0A PNG image
cat выведет содержимое файла (нуль и единицы, которые будут отображаться на невоспроизводимые символы, потому что они не являются правильными символами?) в stdout, который по умолчанию является вашим терминалом.
Расширение файла для нас (людей), чтобы легко определить, какой тип файла, однако некоторые программы используют его для его открытия, но в основном программы определяют тип файла, используя его заголовок.
Используйте file file.png, чтобы получить тип файла, или xxd file.png:
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
00000010: 0000 0002 0000 0002 0800 0000 0057 dd52 .............W.R
00000020: f800 0000 0e49 4441 5478 9c63 6c60 6062 .....IDATx.cl``b
00000030: 6000 0002 9200 84f7 7ca3 5800 0000 0049 `.......|.X....I
00000040: 454e 44ae 4260 82 END.B`.
, чтобы получить шестнадцатеричный дамп содержимого файла, обратите внимание на «PNG» в первом line.
Также здесь мы видим, что PNG-подпись:
PNG 89 50 4E 47 0D 0A 1A 0A PNG image
cat просто выводит содержимое файла в поток stdout, который в вашем случае является терминальным. Что происходит с последовательностью 0 и 1, которые содержат файл, зависит от терминала. В случае двоичного файла последовательности битов, которые не являются текстом, не будут распознаваться как текст.
Рассмотрим, например, cat файл с символами UTF, например, китайский, на двух разных терминалах - тот, который поддерживает символы UTF (terminator на скриншоте ниже) и тот, t имеют хорошую поддержку (xterm на скриншоте ниже). Как видите, некоторые символы не интерпретируются. cat выводит содержимое в любом случае, но как интерпретировать это содержимое - это зависит от каждого терминала.
Теперь, если вы перенаправляете stdout в файл, вы фактически создаете копию, почти такую же, как cp original copy или mv old new. В некоторых редких случаях вам может понадобиться сращивание двух файлов - двоичных или текстовых - что также возможно с cat. Идея такая же. В соответствии с определением POSIX «[t] входные файлы могут быть любыми типами файлов», что означает, что cat может читать любой файл. Однако есть случаи, когда cat будет использовать текстовый режим. В случае cat Ubuntu (который предоставляется пакетом GNU coreutils) информация, представленная в info cat, гласит:
«cat» читается в текстовом режиме, если используется один из вариантов «-bensAE» или если «cat» читается со стандартного ввода, а стандартный вход - это терминал. Аналогично, «cat» записывает в текстовом режиме, если используется один из вариантов «-bensAE» или стандартный вывод - это терминал.Конечно, если мы действительно хотим просмотреть содержимое двоичного файла в читаемом формате, мы можем использовать шестнадцатеричные редакторы или любой тип «дампа», сращивать два файла файловый менеджер , или даже vi текстовый редактор. Есть довольно хороший список этих POSIX-определений и здесь уже.
Изображения сделаны из байтов. Так что текстовые файлы
Когда прикладное приложение, например cat хочет читать текстовые файлы, оно начинает считывать байты и ищет эти байты в кодировке символов, таких как ascii или unicode. Он находит персонажа в таблице и отображает его.
Но изображения не имеют символов (они могут, но это не то, что создает изображение), и вы можете догадываться, что происходит, когда вы пытаетесь обрабатывать отформатированные изображения байтов, например они были символами. вы получаете случайные символы для каждого файла.
Если вы хотите, чтобы строки в файле использовали команду strings.
cat просто выводит содержимое файла в поток stdout, который в вашем случае является терминальным. Что происходит с последовательностью 0 и 1, которые содержат файл, зависит от терминала. В случае двоичного файла последовательности битов, которые не являются текстом, не будут распознаваться как текст.
Рассмотрим, например, cat файл с символами UTF, например, китайский, на двух разных терминалах - тот, который поддерживает символы UTF (terminator на скриншоте ниже) и тот, t имеют хорошую поддержку (xterm на скриншоте ниже). Как видите, некоторые символы не интерпретируются. cat выводит содержимое в любом случае, но как интерпретировать это содержимое - это зависит от каждого терминала.
Теперь, если вы перенаправляете stdout в файл, вы фактически создаете копию, почти такую же, как cp original copy или mv old new. В некоторых редких случаях вам может понадобиться сращивание двух файлов - двоичных или текстовых - что также возможно с cat. Идея такая же. В соответствии с определением POSIX «[t] входные файлы могут быть любыми типами файлов», что означает, что cat может читать любой файл. Однако есть случаи, когда cat будет использовать текстовый режим. В случае cat Ubuntu (который предоставляется пакетом GNU coreutils) информация, представленная в info cat, гласит:
«cat» читается в текстовом режиме, если используется один из вариантов «-bensAE» или если «cat» читается со стандартного ввода, а стандартный вход - это терминал. Аналогично, «cat» записывает в текстовом режиме, если используется один из вариантов «-bensAE» или стандартный вывод - это терминал.Конечно, если мы действительно хотим просмотреть содержимое двоичного файла в читаемом формате, мы можем использовать шестнадцатеричные редакторы или любой тип «дампа», сращивать два файла файловый менеджер , или даже vi текстовый редактор. Есть довольно хороший список этих POSIX-определений и здесь уже.
Изображения сделаны из байтов. Так что текстовые файлы
Когда прикладное приложение, например cat хочет читать текстовые файлы, оно начинает считывать байты и ищет эти байты в кодировке символов, таких как ascii или unicode. Он находит персонажа в таблице и отображает его.
Но изображения не имеют символов (они могут, но это не то, что создает изображение), и вы можете догадываться, что происходит, когда вы пытаетесь обрабатывать отформатированные изображения байтов, например они были символами. вы получаете случайные символы для каждого файла.
Если вы хотите, чтобы строки в файле использовали команду strings.