【发布时间】:2021-06-23 12:37:03
【问题描述】:
也许是一个奇怪的问题,但是
在 ubuntu linux 上将 cat 粘贴到文本文件(cat > textfile 并在完成时按 Ctrl+D 发出 EOF 信号)时,我遇到了一个奇怪的结果。
事实证明,stdin 行缓冲区可以防止行超过 4k(请参阅Line Buffered Cat)
gnu cat(与posix cat)的选项和stdbuf(stdbuf -i0 -o0 cat > textfile)的使用都不会导致文件超过4k。
显然我做错了什么,因为cat 在使用 nano 或 vim 创建时会标准输出这类文件。
我真的很想继续使用这种方便的方式来动态创建文件或从 cli 管道输入其他命令而不受此限制。
谢谢
版本:cat (GNU coreutils) 8.28
编辑:它显然不是 cat 本身,而是标准输入在终端中缓冲的方式,但是 vim 和 nano 设法将其切换 (另见Disable buffering for stdin and stdout using setvbuf())
【问题讨论】:
-
我怀疑这个限制与 cat 无关,而是终端缓冲区的问题。
-
我也怀疑这个,所以我用 nano 和 vim 尝试了这个,它们都有相同的终端界面
-
vim不使用终端缓冲区。它将终端置于原始模式。我怀疑 nano 也是如此。 -
所以解决方案是以某种方式禁用终端缓冲区... sigh 我试过了
-
这可能是了解您正在使用哪个剪贴板实现的起点:unix.stackexchange.com/questions/254740/…
标签: linux command-line-interface posix stdin cat