从终端复制长单行文本,并包含不需要的更改行

从终端复制长单行文本,并包含不需要的更改行

locate ... | less输出一条长路径,在终端中显示为多行,尽管它实际上是单行。

Ctrl我通过用鼠标选择文本并点击+ Shift+从终端复制路径C。当我将其粘贴到文本文件中时,我在文本中得到了不需要的更改行,与终端中显示的方式完全相同。

但我记得有时我可以复制由 输出的长路径locate ... | less,而不会引入不需要的行更改,有时我不能。我不知道我是否做了不同的事情。

所以我想知道如何确保问题不会发生?谢谢!

我的操作系统:Ubuntu 12.04。

我的终端:Gnome 终端 3.4.1.1

答案1

其真实行为如下:

如果您在其中less并且有一个包含很长行的文件,那么如果您向下滚动长行并向上滚动,则在复制整个文本时,您会得到多行。之后,当您将分割线向下滚动到终端底部并再次向上滚动时,换行符将再次被删除。

对于可视化:

在此输入图像描述

答案2

你可以复制输出线没有额外的换行符(换行符)如果文本是直接输出到航站楼。
终端可以跟踪实际线路的终点在哪里。

但是,如果这些行是由less类似pager程序输出的,则终端不知道换行符在哪里。寻呼机将终端用作全屏字符,并告诉终端“将这些字符放在那里”以及滚动等操作。但是,对于终端来说,无法查看换行符的用途。

答案3

不要复制终端上显示的内容(仅适合屏幕的内容),而是复制实际文本。使用外部实用程序之一谢尔或者剪辑(它们具有大部分相同的功能,我将在这个答案中使用 xsel)从 X 剪贴板复制数据或将数据复制到 X 剪贴板。要复制到剪贴板,请在标准输入上传递所需的内容。从剪贴板粘贴时,内容将写入标准输出。

在 less 中,使用该|命令通过命令通过管道传输一堆行。滚动到要执行操作的第一行,键入mm以设置标记,滚动到最后一行,然后键入|mxsel -b并按Enter。预定义了两个标记:^用于文件的开头,$用于文件的结尾。因此,要复制整个文件,请使用<|$xsel -b.要复制单行,请使用mm|mxsel -bEnter

删除-b复制到主要选择而不是剪贴板的选项。

答案4

如果目标是复制和粘贴,我会使用orcat代替,然后终端会按实际情况而不是显示时捕获它。lessmore

相关内容