diff options
Diffstat (limited to 'upstream/mageia-cauldron/man1/lesspipe.1')
-rw-r--r-- | upstream/mageia-cauldron/man1/lesspipe.1 | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/lesspipe.1 b/upstream/mageia-cauldron/man1/lesspipe.1 new file mode 100644 index 00000000..99097ca1 --- /dev/null +++ b/upstream/mageia-cauldron/man1/lesspipe.1 @@ -0,0 +1,221 @@ +.TH LESSPIPE.SH "1" "June 2023" "lesspipe.sh" "User Commands" +.SH NAME +lesspipe.sh \- a filter for less +.SH SYNOPSIS +.B lesspipe.sh +[\fIFILE[s]\fR]... +.SH DESCRIPTION +.PP +The aim of \fBlesspipe.sh\fP is to enhance the output of \fBless\fP. The choice +of the rules to be applied to modify the output are based on the file contents. +The file extension is respected only as a last resort. +Usually \fBlesspipe.sh\fP is called as an input filter to \fBless\fP. +.PP +With the help of that filter \fBless\fP +will display the uncompressed contents of compressed (\fIgzip, bzip2, +compress, zstd, lz4, lzip, xz, lzma or brotli\fP) files. For files +containing archives and directories, a table of contents will be displayed +(\fItar, ar, zip, i7-zip, rar, jar, rpm, deb ms-cabinet and iso formats\fP). +Many other files will be reformatted for display. It includes +\fIpdf, dvi, markdown, Office (MS and Openoffice)\fP suites formats, +\fINetCDF, matlab, device tree blob, html\fP and \fImedia (image, audio and +video)\fP formats. This does require helper programs being installed. +.PP +The filter can also be applied recursively to extract and display +files in archives on the fly. This works to a depth of 6 where applying a +decompression algorithm counts as a separate level. +.PP +If the file utility reports text with an encoding different from the one +used in the terminal then the text will be transformed using \fIiconv\fP into +the default encoding. This does assume the \fIfile\fP command gets the file +encoding right, which can be wrong in some situations. An appended colon +to the file name does suppress the conversion. +.PP +When using the programs \fBgit\fP, \fBvim\fP or \fBmutt\fP they can be +enabled to read non-text files by using lesspipe.sh. That is described in +the Wiki at \fIhttps://github.com/wofr06/lesspipe/wiki\fP. +.SH FILTER ACTIVATION +The filter is called from \fBless\fP provided the environment variable +\fBLESSOPEN\fP is set properly. For ksh like shells (\fIbash, zsh\fP) +the command +.RS +.I LESSOPEN="|lesspipe.sh %s"; export LESSOPEN +.RE +does activate the filter for less. Use the fully qualified path, if +\fBlesspipe.sh\fP is not in the search path. The command to set \fBLESSOPEN\fP +can also be displayed by calling \fBlesspipe.sh\fP without arguments. +This can even be used to set \fBLESSOPEN\fP directly: +.RS +.I eval `lesspipe.sh` +(bash) or +.RE +.RS +.I lesspipe.sh|source /dev/stdin +(zsh) +.RE +Having set the environment variable as described above, \fBless\fP +will then display textual information for a wide range of file formats. +.PP +The filter is normally not called if input is piped to less as in +.RS +.I cat somefile | less +.RE +As described in the man page of less, the filtering in a pipe can however +be forced by starting \fBLESSOPEN\fP with the characters \fI|-\fP. +.PP +\fBLESSOPEN\fP starting with the two characters \fI||\fP to handle empty files +and command errors is implemented only partly, usually on failures of +commands within \fBlesspipe.sh\fP the error messages get displayed. +.PP +The now obsolete variable \fBLESS_ADVANCED_PREPROCESSOR\fP +was used to decide, whether \fIhtml\fP, \fIxml\fP and \fIperl pod\fP should +be shown as pure text or not. This has been changed, these formats are now +always interpreted, unless a colon is appended to the file name. If the +correct file type (\fIhtml\fP, \fIxml\fP, \fIpod\fP) follows, the output can +get colorized (see below). +.PP +.RS +Example: \fIless index.html:html\fP +.RE +.PP +To suppress informal messages in the first line of the filter output the +ENV variable \fBLESSQUIET\fP can be set to a nonempty value. +.PP +To disengage the filter temporarily a colon can be appended to the file name. +If the file name contains a colon, then an equal sign should be used instead. +.SH OUTPUT COLORIZATION +The filter is able to do syntax highlighting for a wide variety of +file types. If installed, \fIbat\fP/\fIbatcat\fP is used for +coloring the output. If not, \fIpygmentize\fP, \fIsource-highlight\fP, +\fIvimcolor\fP and \fIcode2color\fP are tried in turn. +For bat/batcat the theme is set to \fIansi\fP and the style is set to +\fIplain\fP which comes closer to the unfiltered output of \fBless\fP. +These settings can be changed in \fI~/.config/bat/config\fP or by the +environment variables \fBBAT_STYLE\fP and \fBBAT_THEME\fP. +.PP +Among the colorizers +a preferred one can be forced for coloring by setting the ENV variable +\fBLESSCOLORIZER\fP to the name of the colorizer. For \fIpygmentize\fP and +\fIbat\fP/\fIbatcat\fP restricted option settings are allowed as follows: +.RS +.I LESSCOLORIZER='pygmentize -O style=foo' +.RE +.RS +.I LESSCOLORIZER='bat --style=foo --theme=bar' +.RE +Syntax highlighting is activated, if the environment variable \fBLESS\fP +exists and contains the option \fI-R\fP +or less is called with this option. This guarantees that escape sequences +get converted into colors and do not garble the display. Using the option +\fI-r\fP is not recommended, as the screen layout may be wrong, if long +lines are in the output. +.PP +Syntax highlighting can be switched off by +appending a colon after the file name, if the output was colorful. If the +wrong language was chosen for syntax highlighting, then another one can be +forced by appending a colon and a suffix to the file name. +.PP +In a pipe that method cannot be used. As a way out a last argument can be added +that gets inspected by \fBlesspipe.sh\fP. +A single colon (disengage filter) or :extension (force language) is possible as e.g with +.RS +.I command that generates c code | less - :c +.RE +.PP +When the conditions for syntax highlighting are met directory listings and +listings of tar file contents get colorized as well. +.PP +As \fBless\fP is used as a default browser in other programs the choice of the +colorizer can affect the output of those programs. +For \fIman\fP, \fIgit\fP, and \fIperldoc\fP) lesspipe.sh does no filtering. +.SH WATCHING GROWING FILES +As soon as \fBlesspipe.sh\fP +calls a program to convert the input the ability to watch growing files +(using the F command within less) is lost. This is usually wanted for log +files like syslog. To temporarily disengage \fBlesspipe.sh\fP +a colon as the last argument for \fBless\fP needs to be added as e.g in +.RS +.I less /var/log/syslog : +.RE +or \fBless\fP +can be called with the +F argument, which is equivalent to F within the pager: +.RS +.I less +F /var/log/syslog +.RE +Appending a colon to the file name does not work, as then the filter has to be engaged to at least remove that colon and use cat for the original file. +On the other hand non growing log files can be colorized using \fBccze\fP. +Its recognition as a log file is difficult if not ending in \fI.log\fP +but can be forced appending \fB:.log\fP to the file name as e.g in +.RS +.I less /var/log/syslog:.log +.RE +.SH ADVANCED USAGE +This version of \fBlesspipe.sh\fP +allows you to view individual files contained in a file archive, which itself +may even be contained in another archive. +.PP +The notation for viewing files in multifile archives is +.RS +.B less +\fIarchive_file\fP:\fIcontained_file\fP +.RE +or even +.RS +.B less +\fIsuper_archive\fP:\fIarchive_file\fP:\fIcontained_file\fP +.RE +To display the last file in the chain raw format, a colon (\fI:\fP) has to be +appended to the file name. If it does contain a colon, then the alternate +separator character equal sign (\fI=\fP) has to be used. +.PP +Again, this method of extracting and displaying files does not work if +\fBless\fP is called in an output pipe and \fBLESSOPEN\fP starts with the +\fB|-\fP characters. As already for syntax highlighting the solution is to use +a second argument that starts with a colon. Then the above command would +be written as +.RS +\fBcat \fIsuper_archive\fP | \fBless\fP - :\fIarchive\fP:\fIcontained_file\fP +.RE +.PP +.SH COMPLETING MECHANISM FOR ARCHIVE CONTENTS +With the provided \fIlesscomplete\fP (for \fBzsh\fP and \fBbash\fP), +\fI_less\fP (for \fBzsh\fP) and \fIless_completion\fP (for \fBbash\fP) files +a tab completion for files in archives can be accomplished. +Entering a colon (:) or an equal sign (=) after an archive +file name and then pressing the tab key triggers the completion mechanism. +This also works in chained archives. The files \fIlesscomplete\fP and +\fIless_completion\fP have to be in one of the directories listed in +\fB$PATH\fP and the function \fI_less\fP for \fBzsh\fP in a directory +listed by \fI$fpath\fP. The less_completion script has to +be sourced within a bash initialization script, e.g. in \fI~/.bashrc\fP. New +directories such as \fI~/scripts\fP and \fI~/.fpath\fP can be added using the +commands +.RS +\fBPATH\fP=\fI~/scripts:$PATH\fP and +\fBfpath\fP=\fI(~/.fpath $fpath)\fP +.RE +.SH USER DEFINED FILTERING +The lesspipe.sh filtering can be replaced or enhanced by a user defined +program. Such a program has to be called either \fB.lessfilter\fP (and be +placed in the users home directory), or \fBlessfilter\fP (and be accessible +from a directory mentioned in \fB$PATH\fP). +It has to be executable and has to end with an exit code 0, if the filtering +was done within that script. Otherwise, a nonzero exit code means the filtering +is left to lesspipe.sh. +.PP +This mechanism can be used to add filtering for new formats or e.g. inhibit +filtering for certain file types. +.SH AUTHOR +Wolfgang Friebel +.SH "REPORTING BUGS" +Report bugs to <wp.friebel AT gmail DOT com>. +.SH COPYRIGHT +Copyright \(co 2005-2023 Wolfgang Friebel +.br +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +.SH "SEE ALSO" +less(1) +.PP +A description of \fBlesspipe.sh\fP +is also contained in the file README contained in the source code package |