我想和find -fprintf玩一玩。如果您不知道-fprintf是干什么的,那么它和-printf是一样的,但是写到您指定的文件中。
现在,当我运行这样的命令时:
find -maxdepth 1 -type d -fprintf output "%p\b\n"我在output中获得了以下内容(使用vim和几乎所有文本编辑器):
.^H
./directory-1^H
./directory-2^H
./directory-3^H据我所知,^H是后置字符。用output打开less:
./directory-
./directory-
./directory-因此,问题是:
vim和其他文本编辑器(尝试过的nano和emacs)不通过删除前面的字符来显示背景色,而less会这样做?\n打印一个字符,而不是开始新的一行呢?我在我的电脑(笔记本电脑)上运行这个,没有任何地方。使用GNU/LinuxUbuntu16.04LTS与konsole和tmux。
发布于 2018-12-13 15:05:54
Unix设计的特点之一是,文件是未区分的字符序列,需要应用程序将它们喜欢的任何解释放在它们身上。应用程序可以并且确实以不同的方式解释文件内容,并且您正在经历这种情况的后果。
VIM是根据单一Unix规范的文本文件概念来解释文件内容的,它是一个包含零行或多行的文件,由␊终止,不包含␀字符。它将不可打印字符转换为各种可打印的表示形式,但␊始终是行的末尾,因为这是概念的一部分。
其他实用程序对文件内容的解释不同。其中一个家族将文件内容解释为T骨骼类型模型37 (TTY-37)输出数据的流。这个系列包括几个传统的Unix和GNU程序:less、more、most、ul、colcrt、ncal、grotty等非默认模式。在这种解释中,␈字符将(概念性的)打印头移回一个位置,并对以前的位置进行过击。因为这些程序不是物理的TTY-37和墨水在纸上,他们实现了自己的想法在软件中什么是过分引人注目的意思。过度打击可能导致尝试使用粗体和下划线属性,在一个字符完全替代另一个字符,在组合字符,或完全没有。
https://unix.stackexchange.com/questions/475883
复制相似问题