file считает «data» обычный текст, в котором встречаются управляющие символы SO/SI (^N/^O, 0x0e/0x0f). Такие символы выдаёт, например, terminfo для TERM=linux: sgr0 завершает сброс атрибутов символом SI, поэтому их содержат вывод pod2text -t, man, ls --color. Из-за этого при TERM=linux lesspipe принимает вывод perldoc за двоичный файл, и less показывает его hex-дампом — это и есть баг #45581. Как воспроизвести: printf 'text\033[m\017 more\n' > /tmp/so-si.txt file /tmp/so-si.txt Ожидается: ASCII text, with escape sequences. Сейчас: data. Исправление в апстриме: https://github.com/file/file/commit/fa063973bca8a5d0c91587f129b28560becf11ad (по багу апстрима https://bugs.astron.com/view.php?id=815): SO и SI считаются текстовыми символами, как ESC; добавлен тест ascii-escape-so-si.