How do I execute a Linux command whilst using the less command or within the man pages?

10,964

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.

Share:
10,964

Related videos on Youtube

PeanutsMonkey
Author by

PeanutsMonkey

Updated on September 18, 2022

Comments

  • PeanutsMonkey
    PeanutsMonkey over 1 year

    I generally pipe the command ls with less 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 command rm {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
    PeanutsMonkey over 11 years
    @Rob - What do you mean that man actually changes CWD?
  • PeanutsMonkey
    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 command man?
  • ahnniu
    ahnniu over 11 years
    That would explain the behaviour I saw. Now, why it's changing the CWD, that's another question...
  • Rob
    Rob over 11 years
    @PeanutsMonkey I assume it would change directory anyway, but I can see it with tmux.
  • PeanutsMonkey
    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
    ahnniu over 11 years
    @Rob, @PeanutsMonkey: I've updated my answer to try and capture the difference between man and using less normally.