jetxee
2008-08-06
Материал распространяется на условиях Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.Популярную листалку для командной строки less легко научить просматривать не только текстовые файлы, но и многие другие. Например, ей можно смотреть сжатые файлы или файлы PDF, не задумываясь о вызове архиватора или нужного конвертера. Примерно так:
$ less /usr/share/doc/less/changelog.gzСобственно, во многих дистрибутивах так уже настроено по умолчанию. В Debian эта возможность по умолчанию выключена. Чтобы она заработала, нужно в ~/.bashrc (если пользуетесь bash) добавить eval $(lesspipe) или eval $(lessfile). Это установит переменные окружения LESSOPEN и LESSCLOSE, говорящие less пропускать файлы через указанный фильтр. Фильтр /usr/bin/lesspipe смотрит на расширение файла и запускает нужный конвертрер, если необходимо. Разница между lesspipe и lessfile в том, что первый конвертирует файлы на лету, сразу отдавая результат в less, а lessfile вначале полностью конвертирует файл, и только потом вызывает less.
Понятно, что очень просто можно настроить пользовательские фильтры. Добавлять их нужно в пользовательский скрипт ~/.lessfilter. Например, чтобы просматривать с помощью less файлы OpenOffice, я добавляю фильтр, вызывающий antiod, а чтобы просматривать файлы MSWord — фильтр, вызывающий antiword. Файл ~/.lessfilter выглядит при этом так:
#!/bin/shP.S. Код раскрасил с помощью плагина toblog к vim, создающего цветной HTML согласно текущей цветовой схеме редактора.
(
case `echo "$1" | tr '[:upper:]' '[:lower:]'` in
*.odt)
if [ -x "`which antiodt`" ]; then antiodt "$1" ;
else cat "$1"; fi ;; # No antiodt available
*.doc)
if [ -x "`which antiword`" ]; then antiword "$1" ;
else cat "$1"; fi ;; # No antiword available
esac
) 2>/dev/null