bash commands that don't fit on one page - make output scrollable
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: RPG Blues Looping
--
Chapters
00:00 Bash Commands That Don'T Fit On One Page - Make Output Scrollable
00:28 Accepted Answer Score 14
02:29 Answer 2 Score 10
03:02 Answer 3 Score 2
03:16 Thank you
--
Full question
https://superuser.com/questions/775941/b...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#linux #bash
#avk47
ACCEPTED ANSWER
Score 14
For commands I use often, I generally set up a function
in my .bashrc to make them paginate if longer than a screen.
Like your example: (ps -A)
function ps { command ps "$@" |& less -F; }
This replaces ps
with a function, named ps
, which calls the original ps
command with whatever arguments given on the command line, then pipes the output (stdout and stderr, using the |&
pipe) into less -F
, which pauses if there's more than a screen-full, but exits immediately if it's less than a screen-full.
VERY handy, doesn't interfere with anything I've worked with so far, and is just cool!
You can even add oft-used options into the command/functions too:
function nm { command nm --demangle "$@" |& less -F; }
This makes nm
always demangle C++ symbols. AND paginates the output. Yay!
I'm running Debian, so I use the apt-cache
command quite often, search and show mostly. This function causes those particular options to paginate, search output is sorted, and everything paginates:
function apt-cache { case "$1" in "search") command apt-cache "$@" | sort | less -F;; *) command apt-cache "$@" | less -F;; esac; }
If the command is 'search', sort the output, then paginate with less -F
, but if command is anything else, just paginate, without sorting.
Occasionally I forget I've got the functions, and I'll do something like:
apt-cache search gcc | less
The function doesn't interfere, everything works as expected, no harm either way.
Another little tweak, I use the same .bashrc
on all my systems, so sometimes a utility might not be installed, so there's no need for the function. I make them conditional like this:
which apt-cache &>/dev/null && function apt-cache { case "$1" in "search") command apt-cache "$@" |& sort | less -F;; *) command apt-cache "$@" |& less -F;; esac; }
This just uses the which
command to determine if a program is available, if it isn't, it quietly fails and skips installing the function. Taa Daa!
ANSWER 2
Score 10
The normal method is to pipe the output to "less".
ls -R / | less
q is the key to quit, just like a man page.
If the command may produce errors or other output to stderr you may want to direct that to the pipe as well.
ls -R 2>&1 | less
Any machine that has bash should have less as well. On old Linux machines the program was more, but that does just a page at a time, less will allow you to scroll as you wish.
ANSWER 3
Score 2
Pipe the output to 'more'
output | more -d
Enter - > Scroll by line
Space - > Scroll by Page
q - > Quit
Tested on rpm based OS.