我正在查看机器上软件的手册页,我需要复制粘贴其中一些文本,但是该文本不只一页。我知道我可以将输出定向到文件,并使用基于UI的软件(例如gedit)复制所需的文本。但这可以从终端完成吗?
约瑟夫建议使用命令行方法(对我来说有点复杂,在Linux上使用正则表达式还不够好)。但是我想知道是否仍然可以使用鼠标在终端上执行此操作。
我希望能得到一个通用的答案,但是,我正在使用Ubuntu。
我正在查看机器上软件的手册页,我需要复制粘贴其中一些文本,但是该文本不只一页。我知道我可以将输出定向到文件,并使用基于UI的软件(例如gedit)复制所需的文本。但这可以从终端完成吗?
约瑟夫建议使用命令行方法(对我来说有点复杂,在Linux上使用正则表达式还不够好)。但是我想知道是否仍然可以使用鼠标在终端上执行此操作。
我希望能得到一个通用的答案,但是,我正在使用Ubuntu。
Answers:
我有一些不完善但可能有用的想法。
使用终端滚动条。
详细信息(假设xterm
;其他终端需要进行调整。)
xterm
,它在您通过Ctrl + Button2获得的菜单中。)less
未与该-c
选项一起运行(我的LESS
环境变量中启用了此选项,但它会干扰我们将要执行的操作,因此必须键入-c
将其关闭。)less
您喜欢的任何命令,向上或向下滚动,使要复制的第一行在屏幕上可见。/
搜索-此处的目的是less
将所有行发送到终端,以便可以复制它们。可能的困难:您的回滚缓冲区可能不够大。可以xterm
使用saveLines
资源或-sl
命令行选项更改它,但是我不知道在已经运行的xterm中更改它的方法。
使用|
(管道)命令less
将文本发送到xclip
。
细节:
less
您喜欢的任何命令,向上或向下滚动,将要复制的最后一行放置在屏幕顶部。如果要一直复制到最后,可以跳过此步骤和下一步。m
(mark)命令在您选择的结束位置设置一个标记。标记本身就是一个有用的功能,您应该已经从中了解了标记,vi
但是以防万一您不知道这些mx标记:设置标记,其中x
可以是任何字母,然后再'x返回您那里。x
字母应该与您在m
命令中使用的标记字母相同,或$
与“一直到结尾”相同。键入xclip
那里。复制整个手册页的简单情况减少为g|$xclipEnter。
警告(即发生在我身上的可怕事情):xclip
将是半背景,作为less
进程组的一部分运行。如果尝试暂停less
,请在同一终端上启动另一个作业,然后将其粘贴到该作业中,它将无法正常工作。然后,当您稍后将man
/ less
作业前景化时,粘贴将突然通过。我认为这应该被视为xclip
错误...
得到xclip
:
sudo apt-get install xclip
要么
yum install xclip
在基于RPM的系统上。
man man | your_magic_here | xclip -selection clipboard
-selection clipboard
通过单击鼠标中键来删除选择粘贴(称为主要选择)。请注意,这your_magic_here
是一个文本过滤器(sed
/ awk
/ perl
/ ...)的占位符,该文本过滤器根据您的特定用例选择了手册页的所需部分,您没有对其进行描述,因此恐怕我无法具体说明举个例子。
假设您使用gnome-terminal
并less
作为寻呼机man
可以:
less
为man
与-X
键禁用备用屏幕,例如:LESS=-X man less
这将允许将输出追加man
到终端仿真器历史记录缓冲区。请参阅此答案以获取更多详细信息/unix//a/38638/87918。
gnome-terminal
从最后一页到第一页,用鼠标选择文本,将鼠标拖动到窗口的上边缘。文本选择的详细过程描述在这里:这在Gnome Terminal中不起作用。相反,您要做的是使用鼠标左键开始选择,并在选择时将鼠标光标拖到窗口边缘(或窗口外部)。GT将为您滚动内容,从而扩展选择范围。GT的滚动速度足够快,这是一个相当方便和直观的过程,可以说比xterm更好。