Неформально большинство из нас понимают, что существуют "двоичные" файлы (объектные файлы, изображения, фильмы, исполняемые файлы, собственные форматы документов и т.д.) и "текстовые" файлы (исходный код, файлы XML, файлы HTML, электронная почта и т.д.).).
В общем, вам нужно знать содержимое файла, чтобы иметь возможность делать с ним что-нибудь полезное, и формировать эту точку зрения, если кодировка "двоичная" или "текст" , это не имеет большого значения. И, конечно, файлы просто хранят байты данных, поэтому они все "двоичные" и "текстовые" ничего не значат, не зная кодировки. И все же полезно поговорить о "двоичных" и "текстовых" файлах, но чтобы не оскорблять кого-либо с этим неточным определением, я продолжу использовать кавычки "scare".
Однако существуют различные инструменты, которые работают с широким спектром файлов, и на практике вы хотите сделать что-то другое в зависимости от того, является ли файл "текстовым" или "двоичным" . Примером этого является любой инструмент, который выводит данные на консоли. Обычный "текст" будет хорошо выглядеть и полезен. "двоичные" данные испортили ваш терминал и, как правило, не подходят для просмотра. GNU grep по крайней мере использует это различие при определении того, должен ли он выводить совпадения с консолью.
Итак, вопрос в том, как вы определяете, является ли файл "текстовым" или "двоичным" ? И ограничить дальше, как вы расскажете о Linux как файловой системе? Мне неизвестны метаданные файловой системы, которые указывают на "тип" файла, поэтому вопрос становится, путем проверки содержимого файла, как я могу определить, является ли это "текстовым" или "двоичным" ? И для простоты, ограничиваем "текст" означает символы, которые можно распечатать на пользовательской консоли. И, в частности, как вы это реализуете? (Я думал, что это подразумевалось на этом сайте, но я думаю, что в целом полезно указывать на существующий код, который делает это, я должен был указать), я действительно не понимаю, какие существующие программы я могу использовать для этого это.