我想将一些文本粘贴到终端并将其保存到文件而不使用编辑器,但只是'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