答案1
无需安装其他软件即可将标准输出复制到剪贴板
虽然一开始我觉得这似乎是不可能的(而且有点绕弯子),但它是完全可以做到,无需额外的软件。唯一需要的是python
,就像从全新安装一样。
该解决方案利用了python
将文本复制到剪贴板的功能,并使其可供其他应用程序使用,如下所述 (ao)这里。
那个工程
- 第一步是创建一个空的文本文件,假设
terminal_log.txt
终端中运行的命令后跟
| tee /path/to/terminal_log.txt
,例如pwd | tee /path/to/terminal_log.txt
输出将在终端中,并写入
terminal_log.txt
- 同时,脚本(见下文)在后台运行,检测文件的更改
- 如果文件发生更改,更改将被复制到剪贴板
上面例子的结果:
pwd | tee /path/to/terminal_log.txt
如果我打开gedit
并按Ctrl+V
/home/jacob/Desktop
如何设置
- 创建一个空的(日志)文件,
terminal_log.txt
- 将下面的脚本复制到一个空文件中。在 head 部分,将路径设置为
terminal_log.txt
,另存为read_output.py
使用命令启动脚本
python /path/to/read_output.py
在(另一个)终端中运行您的命令,然后:
| tee /path/to/terminal_log.txt
命令的输出被复制到剪贴板
如果您经常使用它,您可以将其作为启动应用程序运行。
剧本
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import time
#--- enter the path to the log file below
f = "/path/to/terminal_log.txt"
#---
output1 = open(f).read().strip()
while True:
time.sleep(1)
output2 = open(f).read().strip()
if output1 != output2:
tx = output2.replace(output1, "")
clipboard = gtk.clipboard_get()
clipboard.set_text(tx)
clipboard.store()
output1 = output2
附加信息
command | tee /path/to/terminal_log.txt
不会复制stderr
到剪贴板。要将和复制stdout
到stderr
剪贴板,请使用:
command > >(tee /path/to/terminal_log.txt) 2> >(tee /path/to/terminal_log.txt >&2)
正如解释的那样这里