How do I execute a Linux command whilst using the less command or within the man pages?
You can access the command line using bang (!
) within less.
So for example, if you type:
touch temp.txt
ls | less
!rm temp.txt
And temp.txt should be gone.
Edit: By default it seems that man now uses less to page (for some reason I thought it used more
, maybe in the past it did). You can use the same trick, but it requires the full path (eg. /home/user/...) to get it to work.
This is because invoking man changes the current working directory. On my machine (xubuntu, using xfce-terminal
) it goes to /usr/share/man
. If your console displays the CWD you can see it change, or you can see it from within man
by entering:
!pwd
The generic way to do this is by suspending the current job, executing the command and resuming the old job.
ls | less
(read text, notice the filename)Control-z
to suspend the current active command
You should get a line similar to this:[1]+ Stopped ls | less
([1] is the job number.)
rm testfile
fg
or fg %1
(the 1 is the job number)
You can suspend multiple processes at the same time. E.g.ls | less
Control-z
(output: [1]+ Stopped ls | less
)man rm
Control-z
(output: [2]+ Stopped man rm
)rm -i testfile*
fg %1
to resume job 1 (leaving the man page open in the background), orfg %2
to resume job 2 (man rm)
If you have multiple suspended processes you can list them with jobs
.