我需要一个工具或实用程序,可以获取文本文件并以某种方式将每一行复制到剪贴板,以便我可以通过连续按 Ctlr-V 逐行粘贴文本。
例如,如果文本包含这些行
line 1
line 2
line 3
然后我会得到:
Ctlr-v: line 1
Ctlr-v: line 2
Ctlr-v: line 3
在调试 telnet 会话时,我需要它来将行粘贴到终端中。一行一行的复制粘贴,非常繁琐。
是否存在这样的工具,或者可以使用 xclip 或类似工具创建它?
如果这有什么区别的话,它适用于基于 Debian 的发行版。
注意:请参阅 don_chrissti 的评论,了解对我有用的已接受解决方案的变体。
添加:
这是我最终得到的脚本。请注意使用双反斜杠来保留文本文件中的换行符。
while IFS= read -r line; do
printf %s\\n "$line" |
xclip -l 1 -quiet -selection primary
done < telnet
它非常适合通过 telnet 测试 smtp 连接,这是我对它的使用。
答案1
和xclip
:
while IFS= read -r line; do
printf %s "$line" |
xclip -l 1 -quiet -selection clipboard -in
done < file.txt
如果需要包含换行符,请替换%s
为。%s\n
xclip-l 1
保留CLIPBOARD
对一个请求的选择(例如由其他应用程序执行Ctrl-V),然后退出。您需要-quiet
在xclip
前台执行此操作。
xclipboard
如果你有一个像运行这样的应用程序,那将不起作用。这些应用程序试图始终成为选择的所有者CLIPBOARD
,因此会不断地从xclip
.
如果您正在运行这样的应用程序,您可以暂停或终止它,或者您可以使用选择PRIMARY
(-selection primary
,或默认-selection
情况下省略primary
)并使用鼠标中键粘贴。许多终端仿真器可以将PRIMARY
选择粘贴到上面Shift-Insert,有些则可以粘贴到上面Ctrl-Shift-Insert。
如果您想知道谁正在窃取 CLIPBOARD 选择xclip
,这可能有效:
xwininfo -id "$(xclip -selection clipboard -o -t CLIENT_WINDOW | od -vAn -tu8)" -wm
前提是该应用程序提供 CLIENT_WINDOW 目标(运行xclip -selection clipboard -o -t TARGETS
以查看是否提供)。
另请参阅expect
(以及dejagnu
基于 的测试框架expect
)和 GNUscreen
自动将文本插入终端应用程序。