如何在使用less命令的同时或在手册页中执行Linux命令?


9

我通常使用命令来传递命令lsless并希望在分页时执行命令,例如,我遇到了一个我想删除的文件,因此我想rm {filename}在分页的同时执行命令。我也希望在细读手册页时可以使用相同的方法。如果没有,那有什么不同?

Answers:


8

您可以!在短时间内使用bang()访问命令行。

因此,例如,如果您键入:

touch temp.txt
ls | less
!rm temp.txt

temp.txt应该消失了。

编辑:默认情况下,似乎男人现在使用较少的页面(出于某种原因,我认为它曾经使用过more,也许在过去它使用过)。您可以使用相同的技巧,但是它需要完整的路径(例如/ home / user / ...)才能起作用。

这是因为调用人更改了当前工作目录。在我的机器(xubuntu,使用xfce-terminal)上,它转到/usr/share/man。如果您的控制台显示CWD,您可以看到它已更改,或者您可以man通过输入以下内容从内部看到它:

!pwd

男人实际上会更改CWD,因此您需要使用完整路径。
罗布

@Rob-你是什么意思man actually changes CWD
PeanutsMonkey

我设置了tmux以在状态栏中显示我的CWD。man man人开放时做(或做任何事情)都会改变我的CWD。我的linux机器目前不可用,我不确定是否有其他方法可以检查CWD,但是对我来说,这似乎是它的作用。
罗布

@Rob-所以您的意思是说,仅仅因为您正在使用tmux,当您将命令man {command}从say 更改为命令/home/{user}的位置时,它会更改当前的工作目录man
PeanutsMonkey 2012年

那可以解释我看到的行为。现在,为什么要更改CWD,这是另一个问题……
Ash

4

通用的方法是挂起当前作业,执行命令并恢复旧作业。

ls | less (读取文本,注意文件名)
Control-z以暂停当前活动命令

您应该得到类似于以下内容的行:[1]+ Stopped ls | less
([1]是作业号。)

rm testfile

fgfg %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(手册rm)

如果您有多个暂停的进程,则可以使用列出它们jobs

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.