我正在查看机器上软件的手册页,我需要复制粘贴其中一些文本,但是该文本不只一页。我知道我可以将输出定向到文件,并使用基于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更好。