如何从剪贴板中捕捉<< EOF'任意文本数据


3

我想将一些文本粘贴到终端并将其保存到文件而不使用编辑器,但只是'cat'。
但是文本中的行或标签太长,使用“cat> test.txt”或“cat <<'EOF'> test.txt”(“here document”)之类的简单命令无法实现。

在“此文档”模式下的bash中,如果粘贴的文本数据包含选项卡,则会导致自动完成。
如果我用'--noediting'开始bash,在某些系统上,粘贴行的长度限制为256个字符,其余的粘贴文本将被丢弃。
如果我直接粘贴到cat的输入(没有<<'EOF'),最大线也是256。

如果我做:

stty raw; cat >test.txt; stty sane

,行长度不再受限制,但没有办法将EOF发送到cat的输入。
如果我启用eof char:

stty raw icanon eof '^d'; cat >test.txt; stty sane

长队丢失了。

另外,如果我不禁用echo:

stty -echo

,Solaris 10和Putty的组合导致大块文本~1500chars丢失,有时会导致空文件。

我得到的最接近的是用超时杀死猫:

( sleep 15; pkill cat ) & stty raw -echo; cat >test.txt; stty sane; echo done

或者使用bash --noediting with raw:

bash --noediting
stty raw -echo icrnl
cat <<'EOF' >test.txt; stty sane

3
你能否更清楚地说出你的问题,你打算做什么?
Sepahrad Salour 2013年

1
请不要downvote。如果您不理解这个问题,那就意味着您不是专家。你的反对票会排斥那些可以回答的人。
盆地

我不是downvote你可以看到我的声誉,但请说清楚你的问题和编辑你的帖子,谢谢
Sepahrad Salour 2013年

1
我仍然不确定你要做什么。我猜你试图从你的X剪贴板粘贴到文件而不打开编辑器。此外,我不确定您是否正在寻找可编写脚本或交互式的解决方案。这些不明确的事情可能是你的挫折的原因。谷歌搜索我的想法是你的问题带我到这个问题。也许xclip -o > test.txt是你的伎俩。
提姆

@Tim我在Citrix XenApp服务器上的Windows会话中使用Putty连接到Solaris,我从Windows 7连接到XenApp客户端。我无法复制文件,我只有剪贴板。
盆地

Answers:


1

如果您正在使用bash,则可以在粘贴之前禁用制表符完成,然后使用以下bind命令重新启用它:

bind '\C-i:self-insert'
# paste away
bind '\C-i:complete'

这很笨重,但它确实有效。

在bash命令行上手动输入时,可以先按CTRL-V然后按Tab键输入文字选项卡。显然你在粘贴时不能这样做,而且我对此感到非常恼火,我用一个“粘贴特殊”命令修补了我最喜欢的终端程序iTerm2,该命令通过CTRL-V,标签序列发送文字标签。

我今晚只写了并提交了这个补丁,所以如果你想要一个版本的iTerm2这样做你必须使用Xcode 从我的GitHub分叉编译你自己的。希望它会合并到主应用程序中,如果有的话,我会更新这个答案。编辑:我所做的更改现在位于iTerm2的主要分支中。使用“编辑” - >“使用文字选项卡粘贴”命令。

如果你使用不同的操作系统或终端程序抱歉,我无能为力。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.