lessfile, lesspipe - "input preprocessor" for less.
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.
Just put one of the following two commands in your login script (e.g.
eval $(lessfile) or eval $(lesspipe)
It is possible to extend and overwrite the default lesspipe and less-
file 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:
case "$1" in
# We don't handle this format.
# No further processing by lesspipe necessary
Executable file that can do user defined processing. See section
USER DEFINED FILTERS for more information.
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 <firstname.lastname@example.org>:
"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
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.
This manual page was written by Thomas Schoepf <email@example.com>,
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
[ Back ]