Tooltip #4: less
I’ve had to go poking around unfamiliar servers and reading man pages of unfamiliar commands more these last few weeks than previously, and I’ve grown very fond of
less, the pager. It’s not a very exciting tool, but you probably already use it at least as often as you view a man page, or maybe also inspect a log, and you probably use less of its feature set than you’d find useful if you knew about them!
See what I did there? Expect plenty more of that!
For starters, you can all the goods of this guide and more in
less --help (which gets paged inside
less, of course), or for the less intimidated by overlong manuals with altogether too many historical details, in
man less (also paged with itself, which is all the more oddly satisfying).
If you haven’t before, you can pipe the output of any command ever into less completely bare, no flags required.
(echo yippee && yes eeeeee) | less
This is why people love UNIX.
Also, remember you can always get to the help screen from inside
less with the
Here’s a table of movement commands!
|down arrow||up arrow||line|
I personally prefer
^u, since they’re the same in vim. Also, if your logs have long lines, you can move left and right with the left/right arrow keys.
It’s worth noting you can use
g to jump to the beginning of the content, and
G to jump to the end.
/ to search for something below the top line in your screen, use
? to search for something before. These can be regexes.
When you’ve got your search terms highlighted, use
n to move to the next one,
N to move to the previous one, and
ESC u to remove the search highlight when you’re done.
Here’s the real stuff that prompted this week’s tooltip.
#Stick to the end of output
Also known as the
tail -f behavior. I call this mode ‘sticky bottom’ mode, but I don’t think that’s quite the official name.
In this mode,
less will automatically scroll down to the end of input as new input rolls in, like
tail -f. Unlike
tail -f, this will (a) let you switch between this behavior and normal
less behavior without leaving
less (i.e. without modifying your previous
tail command), which means you can alternate between exploring a log and live-viewing it, and (b) not let the log output overstay its welcome and hang around in your terminal’s scrollback after
The one thing
tail -f may be slightly more appropriate for is viewing multiple logs live at once, since
tail will interpolate logs from different sources, where
less forces you to switch between sources. I don’t care though, because I never do that.
You can invoke
less in this mode with
less +F, and you can return to normal
less mode with
^C. To go from normal mode to sticky bottom mode, hit
#Marking & jumping
You can mark lines and jump to marked lines like you can in vi. The more you know!
Mark a line with
m followed by a lowercase letter, and jump to a marked line with
' followed by that lowercase letter. For example, if I mark a line with
ma, I can scroll and search around as much as I want, and later return to that line with
You can run a one-off command with
You can set any of
less’s command line flags from inside less, just by typing the flag.
You can toggle line numbers with
You can toggle line wrapping with
lessing a file and decide you want to edit it, you can hit
v to jump straight into your
$EDITOR with that file.
lessing the output of a command and decide you want to save it to a file, you can hit
s to do so.
You can choose to show only lines matching a certain pattern with
&. This is like a
| grep ..., except you don’t have to know what you’re searching for before typing out your command! To return to showing all lines, just hit
& again without giving it a pattern.
In conclusion, less really is more. Except when it comes to unix command puns.
Per usual, giphy had mostly questionable results for ‘less’ and ‘more’, so here’s the cream of the crop for ‘scroll’.