对二进制数据使用标准输入和输出是否安全?

B.T*_*ner 14 command-line bash kubuntu 18.04

我需要将一个二进制文件分成两个。我想知道是否可以使用 head 和/或 tail ,但后来我想知道...使用二进制数据进行重定向、管道等是否安全?新行是否被弄乱了,或者空值被忽略了,或者退格或删除做了一些特别的事情?(bash,kubuntu 18.04 LTS)

Eri*_*ntz 20

是的,如果您将其通过管道传输到另一个进程或将其保存到文件中,则是安全的。如果让二进制 stdout 打印到终端,则可能存在“怪异”,因为它可能包含转义序列(随机),可能会暂时弄乱终端显示。

  • 在这种情况下,您可以输入“reset”并按回车键进行修复。 (6认同)
  • @BaardKopperud 我以为我在某处读到了一些 tset/reset 不起作用的极端情况 (4认同)
  • 另请参阅[显示二进制文件后修复终端](https://unix.stackexchange.com/q/79684/85039) 和[为什么控制台有时需要在 CTRL+C 后重置](https://unix.stackexchange)。 stackexchange.com/q/403906/85039)。正如第一个链接中所建议的,`stty sane; tput rs1` 命令序列将在`reset` 不工作的极端情况下起作用。除了 Bakuriu 提到的这种情况外,还可能包括终端线/列的宽度,或者我猜测与串行通信相关的设置(波特率/奇偶校验)。 (3认同)