Ещё раз про detox

Алексей Федорчук

Давеча мы с котом Мануалом набросали шпаргалку про утилиту 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-редакции.

1 комментарий к “Ещё раз про detox

  1. Алексей, благодарю за полное разъяснение процесса «детоксикации» имён файлов :)

Оставьте комментарий