more
more
is an old utility. When the text passed to it is too large to fit on one screen, it pages it. You can scroll down but not up.
Some systems hardlink more
to less
, providing users with a strange hybrid of the two programs that looks like more
and quits at the end of the file like more
but has some less
features such as backwards scrolling. This is a result of less
's more
compatibility mode. You can enable this compatibility mode temporarily with LESS_IS_MORE=1 less ...
.
more
passes raw escape sequences by default. Escape sequences tell your terminal which colors to display.
less
less
was written by a man who was fed up with more
's inability to scroll backwards through a file. He turned less
into an open source project and over time, various individuals added new features to it. less
is massive now. That's why some small embedded systems have more
but not less
. For comparison, less
's source is over 27000 lines long. more
implementations are generally only a little over 2000 lines long.
In order to get less
to pass raw escape sequences, you have to pass it the -r
flag. You can also tell it to only pass ANSI escape characters by passing it the -R
flag.
See less
FAQs for more details: http://www.greenwoodsoftware.com/less/faq.html
most
most
is supposed to be more than less
. It can display multiple files at a time. By default, it truncates long lines instead of wrapping them and provides a left/right scrolling mechanism. most's website has no information about most
's features. Its manpage indicates that it is missing at least a few less
features such as log-file writing (you can use tee
for this though) and external command running.
By default, most
uses strange non-vi-like keybindings. man most | grep '\<vi.?\>'
doesn't return anything so it may be impossible to put most
into a vi-like mode.
most
has the ability to decompress gunzip-compressed files before reading. Its status bar has more information than less
's.
most
passes raw escape sequences by default.
It's less
specific (you can guess this with the quotes around the operator to avoid the shell interpreting it). The +
argument tells less
to apply this command after opening the file, in this case >
which is the keystroke for going to the end of the file. You can try this out by opening some (long) file with less
and hitting >. +>
is just a shortcut for this. A fairly more common use-case you'll find in the wild is calling less +## /path/to/file
where ##
is a line number you want to be displayed by less
.
At least +##
also works for vi
and emacs
.
Best Answer
According to the manpage:
Apparently,
less
escapes ANSI escape codes by default, displaying carets (^) followed by codes instead.-r
does not escape these characters, so if the input contains random binary data, the console could output unintended gibberish as a result of any ANSI control characters. (That's whyless
can't know what the screen looks like without processing these chars itself.)-R
allows only color control chars through, so output can contain colored text but not other formatting chars that could mess up the output.