How do I execute a Linux command whilst using the less command or within the man pages?
Solution 1
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
Solution 2
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), or
fg %2
to resume job 2 (man rm)
If you have multiple suspended processes you can list them with jobs
.
Related videos on Youtube
PeanutsMonkey
Updated on September 18, 2022Comments
-
PeanutsMonkey over 1 year
I generally pipe the command
ls
withless
and would like to execute a command while it is paging e.g. I come across a file that I would like to delete so I would like to execute the commandrm {filename}
whilst still paging. I would also like to hope I can use the same method while perusing man pages. If not how is it different? -
PeanutsMonkey over 11 years@Rob - What do you mean that
man actually changes CWD
? -
PeanutsMonkey over 11 years@Rob - So you mean to say that just because you are using tmux, it changes the current working directory when you run the command
man {command}
from say/home/{user}
to a location of the commandman
? -
ahnniu over 11 yearsThat would explain the behaviour I saw. Now, why it's changing the CWD, that's another question...
-
Rob over 11 years@PeanutsMonkey I assume it would change directory anyway, but I can see it with tmux.
-
PeanutsMonkey over 11 years@Rob - Sorry for being such a n00b Rob but I still don't get, what changes directory and from what to what?
-
ahnniu over 11 years@Rob, @PeanutsMonkey: I've updated my answer to try and capture the difference between
man
and usingless
normally.