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?
- 9,380
2 Answers
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
- 3,064
- 4
- 30
- 31
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.
- 65,804
- 7
- 115
- 169