lessfile
"input preprocessor" for less.
see also :
less
Synopsis
lessfile,
lesspipe
add an example, a script, a trick and tips
examples
source
if which lessfile a >
/dev/null 2>&1; then
eval "$(lessfile)"
fi
description
This manual
page documents briefly the lessfile, and
lesspipe commands. This manual page was written for
the Debian GNU/Linux distribution because the input
preprocessor scripts are provided by Debian GNU/Linux and
are not part of the original program.
lessfile
and lesspipe are programs that can be used to modify
the way the contents of a file are displayed in less.
What this means is that less can automatically open
up tar files, uncompress gzipped files, and even display
something reasonable for graphics files.
lesspipe
will toss the contents/info on STDOUT and less will
read them as they come across. This means that you do not
have to wait for the decoding to finish before less shows
you the file. This also means that you will get a
’byte N’ instead of an N% as your file position.
You can seek to the end and back to get the N% but that
means you have to wait for the pipe to finish.
lessfile
will toss the contents/info on a file which less will
then read. After you are done, lessfile will then
delete the file. This means that the process has to finish
before you see it, but you get nice percentages (N%) up
front.
files
~/.lessfilter
Executable file that can do user defined processing. See section
USER DEFINED FILTERS for more information.
file type recognition
File types are recognized by their extensions. This is a list of
currently supported extensions (grouped by the programs that
handle them):
*.a
*.arj
*.tar.bz2
*.bz
*.bz2
*.deb, *.udeb
*.doc
*.gif, *.jpeg, *.jpg, *.pcd, *.png, *.tga, *.tiff, *.tif
*.iso, *.raw, *.bin
*.lha, *.lzh
*.tar.lz, *.tlz
*.lz
*.7z
*.pdf
*.rar, *.r[0-9][0-9]
*.rpm
*.tar.gz, *.tgz, *.tar.z, *.tar.dz
*.gz, *.z, *.dz
*.tar
*.tar.xz, *.xz
*.jar, *.war, *.xpi, *.zip
*.zoo
usage
Just put one of the following two commands in your login script
(e.g. ~/.bash_profile):
eval "$(lessfile)"
or
eval "$(lesspipe)"
user defined filters
It is possible to extend and overwrite the default
lesspipe and lessfile input processor if you have
specialized requirements. Create an executable program with the
name .lessfilter and put it into your home directory. This
can be a shell script or a binary program.
It is important that this program returns the correct exit code:
return 0 if your filter handles the input, return 1 if the
standard lesspipe/lessfile filter should handle the input.
Here is an example script:
#!/bin/sh
case "$1" in
*.extension)
extension-handler "$1"
;;
*)
# We don’t handle this format.
exit 1
esac
# No further processing by lesspipe necessary
exit 0
bugs
When trying to
open compressed 0 byte files, less displays the
actual binary file contents. This is not a bug. less
is designed to do that (see manual page less(1), section
INPUT PREPROCESSOR). This is the answer of Mark Nudelman
<markn[:at:]greenwoodsoftware[:dot:]com>:
"I
recognized when I designed it that a lesspipe filter cannot
output an empty file and have less display nothing in that
case; it’s a side effect of using the "no
output" case to mean "the filter has nothing to
do". It could have been designed to have some other
mechanism to indicate "nothing to do", but
"no output" seemed the simplest and most intuitive
for lesspipe writers."
Sometimes, less
does not display the contents file you want to view but
output that is produced by your login scripts (~/.bashrc or
~/.bash_profile). This happens because less uses your
current shell to run the lesspipe filter. Bash first looks
for the variable $BASH_ENV in the environment expands its
value and uses the expanded value as the name of a file to
read and execute. If this file produces any output less will
display this. A way to solve this problem is to put the
following lines on the top of your login script that
produces output:
if [ -z
"$PS1" ]; then
exit
fi
This tests
whether the prompt variable $PS1 is set and if it
isn’t (which is the case for non-interactive shells)
it will exit the script.
see also
less
author
This manual
page was written by Thomas Schoepf
<schoepf[:at:]debian[:dot:]org>, for the Debian GNU/Linux system
(but may be used by others). Most of the text was copied
from a description written by Darren Stalder
<torin[:at:]daft[:dot:]com>.