Хорошая штука lf (это такой консольный файловый менеджер, если что). Особенно хорош, если брать чужие настройки и спокойно ими пользоваться. Но иногда исследовательский гвоздь в попе пересиливает хомячковость и тогда начинаются исследования.
Одно из таких исследований привело меня к желанию написать свой скрипт для предпросмотра (но это, наверное, все пользователи lf
пишут) и, что гораздо интереснее, к попытке распознания mime-типа файла с использованием команды file
. И всё было хорошо, пока я не наткнулся на файлы, в именах которых присутствовали пробелы. Поотлаживав скрипт препросмотра я обнаружил следующее: в скрипт имя файла (даже с пробелами) поступает в виде одного параметра командной строки. Но при попытке использовать file --mime-type $FILENAME -b
, если FILENAME
содержит пробелы, получаем полную ерунду. И пляски с ${FILENAME// /\\\ }
помогали не особенно (хотя это тоже был интересный опыт). В итоге тип файла получается как-то вот так: FILETYPE=$(eval "file --mime-type \"${FILETYPE// /\\\ }\" -b")
. Косо, криво, но это работает. И теперь я могу показывать длину видео-файла и прочее, используя mediainfo
.
Кстати, ещё один итог отладки: вторым параметром мой скрипт получал параметр высоты доступного окна. Именно его я и использовал, чтобы не печатать файл или информацию о нём целиком. Это экономит какое-то время.