有时我喜欢使用cat >/etc/configfile <<EOF
东西,粘贴内容,然后发送,EOF
将其刷新到文件中。一两行就很好,但是当行数更多时,一些内容会丢失,一些额外的换行符会被添加,等等。如果我使用 ,情况也是如此patch <<EOF
,即使是一个总共少于 2000 个字符的简单补丁。
我怀疑我的终端(urxvt)做错了什么,它粘贴内容的速度非常快,但错过了一些东西,当我使用 cygwin 的 mintty 时,它慢得要命,但没有跳过一行。另外,如果我输入 Vim 并将其粘贴到那里,则不会丢失任何内容。 shell 并不重要,发生在 zsh、bash 和 ash 上。
答案1
我无法重现您所描述的行为。您的终端模拟器可能对粘贴缓冲区的大小有限制,但重复的换行符(如果您确实有的话)听起来像是一个错误。
您确定要考虑外壳处理吗?在一个这里的文档用 分隔的<<EOF
字符$
和`
被 shell 解释为变量替换或命令替换的开始。例如,如果您的选择包含
value=$PATH
more=$stuff stuff
hello=`ls`
然后将其粘贴到EOF
包含类似内容的文件中
value=/usr/local/bin:/usr/bin:/bin
more= stuff
hello=hello.txt
world.txt
为了避免这些替换,请告诉 shell 通过引用此处文档标记(cat <<'EOF'
或cat <<\EOF
或cat <<"EOF"
或任何其他变体)按字面意思解释此处文档内容。
确保粘贴您想要的选择。X11有多种选择;老式 X11 应用程序在选择时自动进行复制,使用 PRIMARY 选择,而具有单独复制命令的新型 X11 应用程序使用 CLIPBOARD 选择。
解决您的问题的方法不是粘贴,而是使用诸如剪辑或者谢尔将所选内容复制到文件中。对于主要选择:
xclip -o >/etc/configfile
xclip -o | patch
xsel >/etc/configfile
xsel | patch
对于剪贴板选择,请致电xclip -selection clipboard
或xsel -b
。