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, я добавляю фильтр, вызывающий antiodt
, а чтобы просматривать файлы MSWord, фильтр, вызывающий antiword
. Файл ~/.lessfilter
выглядит при этом так:#!/bin/sh
(
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
P.S. Код раскрасил с помощью плагина toblog
к vim, создающего цветной HTML согласно текущей цветовой схеме редактора.