Алексей Федорчук
Давеча мы с котом Мануалом набросали шпаргалку про утилиту detox — по горячим следам её первого использования в узко специальных целях: на предмет переименования результатов работы GNOME Screenshot’а. На первую последовали комментарии Татьяны Ивановой aka vita, в которых она пишет, что
…эта утилитка при использовании файлов с кириллическими именами удаляет их напрочь… Удаление происходит мимо корзины.
И, в ответ на возражение, что
…у меня она удаляла кириллицу из имён файлов, а не сами файлы.
добавляет:
…в файлах, где имелись цифры и кириллица, оставались только цифры, а с полностью кириллическим именем исчезали.
Мы с Мануалом строго следуем завету академика Крылова о том, что «юзер, использующий кириллицу в именах файлов, подлежит четвертованию на Дворцовой площади». И потому штуки типа Новый файл
у нас могут появиться только случайно. И если они исчезают — туда им и дорога (минуя корзину). Тем не менее, такие файлы иногда попадают к нам в виде аттачментов к письмам. И потому мы решили вернуться к этому вопросу. Для чего, правда, таки пришлось обратиться к тёте Мане:
$ man detox
От неё мы узнали о двух опциях команды detox
— -v
, выводящей сведения о ходе её выполнения, и -n
, ничего не делающей, а лишь показывающей результат. Отыскав в своей переписке пару файлов с чисто кириллическими именами, мы увидели, что результат команды типа
$ detox -n 'С Днем Геолога.jpg'
будет таким:
С Днем Геолога.jpg -> .jpg
После чего выполнили эту команду в реале
$ detox -v 'С Днем Геолога.jpg' Scanning: С Днем Геолога.jpg С Днем Геолога.jpg -> .jpg
И действительно, обнаружили исчезновение файла С Днем Геолога.jpg
, но зато — появление dot-файла .jpg
. В чём легко убедились такой командой:
$ ls -a ./ ../ .jpg
А команда
$ file .jpg
показала, что на самом деле с исходным файлом ничего не произошло:
.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=14, height=7087, bps=182, compression=LZW, PhotometricIntepretation=RGB, orientation=upper-left, width=10499], progressive, precision 8, 3499x2362, frames 3
И файл этот прекрасно открывается в любом вьювере:
Впрочем, файл с таким именем всё равно нуждается в переименовании, ибо в виде dot-файла он на практике бесполезен.
Далее наше внимание привлекла опция -s [sequence]
: значения её можно посмотреть командой
$ detox -L available sequences: default (*) iso8859_1 utf_8 uncgi lower iso8859_1-only utf_8-only uncgi-only lower-only
Однако она оказалась лишь подозрительной на полезность: при значении utf_8
результат оказался тем же самым:
$ detox -s utf_8 -n кириллица.txt кириллица.txt -> .txt
А при иных получалась абракадабра, например:
$ detox -s utf_8-only -n кириллица.txt кириллица.txt -> _________.txt
Или
$ detox -s uncgi -n кириллица.txt кириллица.txt -> ���������.txt
Правда, при беглом просмотре man-страницы detoxrc(5)
обнаружился намёк на то, что можно создавать собственные sequence
в файле ~/.detoxrc
. Однако для этого потребовалось бы вникать в man-страницу detox.tbl(5)
. Что кот Мануал делать отказался, резюмируя базар так:
Утилита
detox
подходит для двух вещей: избавления от пробелов в файлах с именами латиницей и для избавления от кириллицы в именах файлов, однозначно идентифицируемых, например, временными метками. А это уже немало.
Мне осталось лишь согласиться с ним, тем более что все описанные здесь манипуляции выполнял на клавиатуре я (Мануал давал только руководящие указания). В результате чего в очередной раз убедился, насколько это погано — работать в CLI с файлами, имена которых содержат пробелы вообще, а усугублёнными символами кириллицы — в особенности. И потому мы единогласно постановили: утилита detox
будет включена будущий релиз Cintu 18.04, начиная с mini-редакции.
Алексей, благодарю за полное разъяснение процесса «детоксикации» имён файлов :)