剪贴板实用程序可将多行一一粘贴回

剪贴板实用程序可将多行一一粘贴回

我需要一个工具或实用程序,可以获取文本文件并以某种方式将每一行复制到剪贴板,以便我可以通过连续按 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),然后退出。您需要-quietxclip前台执行此操作。

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自动将文本插入终端应用程序。

相关内容