locate ... | less
输出一条长路径,在终端中显示为多行,尽管它实际上是单行。
Ctrl我通过用鼠标选择文本并点击+ Shift+从终端复制路径C。当我将其粘贴到文本文件中时,我在文本中得到了不需要的更改行,与终端中显示的方式完全相同。
但我记得有时我可以复制由 输出的长路径locate ... | less
,而不会引入不需要的行更改,有时我不能。我不知道我是否做了不同的事情。
所以我想知道如何确保问题不会发生?谢谢!
我的操作系统:Ubuntu 12.04。
我的终端:Gnome 终端 3.4.1.1
答案1
答案2
你可以复制输出线没有额外的换行符(换行符)如果文本是直接输出到航站楼。
终端可以跟踪实际线路的终点在哪里。
但是,如果这些行是由less
类似pager
程序输出的,则终端不知道换行符在哪里。寻呼机将终端用作全屏字符,并告诉终端“将这些字符放在那里”以及滚动等操作。但是,对于终端来说,无法查看换行符的用途。
答案3
不要复制终端上显示的内容(仅适合屏幕的内容),而是复制实际文本。使用外部实用程序之一谢尔或者剪辑(它们具有大部分相同的功能,我将在这个答案中使用 xsel)从 X 剪贴板复制数据或将数据复制到 X 剪贴板。要复制到剪贴板,请在标准输入上传递所需的内容。从剪贴板粘贴时,内容将写入标准输出。
在 less 中,使用该|
命令通过命令通过管道传输一堆行。滚动到要执行操作的第一行,键入mm
以设置标记,滚动到最后一行,然后键入|mxsel -b
并按Enter。预定义了两个标记:^
用于文件的开头,$
用于文件的结尾。因此,要复制整个文件,请使用<|$xsel -b
.要复制单行,请使用mm|mxsel -b
和Enter。
删除-b
复制到主要选择而不是剪贴板的选项。
答案4
如果目标是复制和粘贴,我会使用orcat
代替,然后终端会按实际情况而不是显示时捕获它。less
more