如何在没有鼠标的情况下从xterm复制文本?
-
10-07-2019 - |
题
我想在另一个xterm中使用从命令行运行的命令的部分输出,或者作为不同命令的一部分。例如:
> grep error error.log
error: can't find file ~/<some very long path>/thisfile
我想这样做:
>ls ~/<some very long path>/
我知道有两种方法可以做到这一点:
1.用鼠标复制~/<some very long path>/
。
2.使用head
/ tail
/ awk
/ sed
/ perl
/ cut
/ etc ...的某种组合来从输出中仅提取我需要的内容然后使用 里面的反叛。
有没有办法在不使用鼠标的情况下复制文字?想到的例子是VIM内部的可视化模式,但我不知道如何在xterm中做到这一点。
解决方案
您可以使用GNU屏幕的复制和粘贴命令。
快速教程:
- 打开屏幕:
screen
(或screen myprog my args here
) - 运行程序,生成要复制的输出
- 进入复制模式:控制 + a + [
- 将光标移动到起点
- 点击输入
- 将光标移动到终点
- 点击输入
- 粘贴:控制 + a + ] 醇>
屏幕比这更强大(我使用它来标记几个虚拟终端而不需要特殊的终端模拟器,并且当X崩溃或其他什么时我也不会丢失我的会话)。要退出屏幕,只需结束shell会话,或键入 Ctrl + a , Ctrl + \ 。
其他提示
我发现 XSel 在类似情况下非常有用。它是一个操纵X选择的工具。例如,这会将命令的输出存储到剪贴板:
grep error error.log | xsel -bi
OP说他不想这样做,但这是一种unix utils方式来为后代做这件事。如果你学习这些小的unix实用程序,它们就会非常强大。
ls $(dirname $(grep error error.log | head -1 | cut -d <!> quot; <!> quot; -f 5-))
注意:内存中的语法
您可以使用xterm设备号将输出直接发送到相关的xterm。这是命令。
xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0
(或watever是设备名称,您可以使用命令'w'获取它以打开xterm)
试试<!> amp;希望这可以解决你的问题。
不隶属于 StackOverflow