ls
我通常使用管道命令less
,并希望在分页时执行命令,例如,我遇到一个我想删除的文件,所以我想在rm {filename}
分页时执行命令。我还希望在浏览手册页时可以使用相同的方法。如果不行,那有什么不同?
答案1
您可以使用 less 中的 bang ( ) 访问命令行!
。
例如,如果你输入:
touch temp.txt
ls | less
!rm temp.txt
并且 temp.txt 应该消失了。
编辑:默认情况下,man 现在使用的页面较少(出于某种原因,我认为它使用了more
,也许过去确实如此)。您可以使用相同的技巧,但它需要完整路径(例如 /home/user/...)才能使其工作。
这是因为调用 man 会更改当前工作目录。在我的计算机(xubuntu,使用xfce-terminal
)上,它会转到/usr/share/man
。如果您的控制台显示 CWD,您可以看到它发生了变化,或者您可以通过输入以下内容从内部查看它man
:
!pwd
答案2
实现此目的的通用方法是暂停当前作业,执行命令并恢复旧作业。
ls | less
(阅读文本,注意文件名)
Control-z
暂停当前活动命令
您应该得到类似这样的一行:[1]+ Stopped ls | less
([1] 是职位编号。)
rm testfile
fg
或fg %1
(1 为职位编号)
您可以同时暂停多个进程。例如
ls | less
Control-z
(output: [1]+ Stopped ls | less
)
man rm
Control-z
(output: [2]+ Stopped man rm
)
rm -i testfile*
fg %1
恢复作业 1(将手册页留在后台打开),或
fg %2
恢复作业 2(man rm)
如果您有多个暂停的进程,您可以使用 列出它们jobs
。