首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >printf和backspace

printf和backspace
EN

Unix & Linux用户
提问于 2018-10-16 18:25:17
回答 1查看 1.9K关注 0票数 1

我想和find -fprintf玩一玩。如果您不知道-fprintf是干什么的,那么它和-printf是一样的,但是写到您指定的文件中。

现在,当我运行这样的命令时:

代码语言:javascript
复制
find -maxdepth 1 -type d  -fprintf output "%p\b\n"

我在output中获得了以下内容(使用vim和几乎所有文本编辑器):

代码语言:javascript
复制
.^H
./directory-1^H
./directory-2^H
./directory-3^H

据我所知,^H是后置字符。用output打开less

代码语言:javascript
复制
./directory-
./directory-
./directory-

因此,问题是:

  1. 为什么vim和其他文本编辑器(尝试过的nanoemacs)不通过删除前面的字符来显示背景色,而less会这样做?
  2. 为什么编辑器不为\n打印一个字符,而不是开始新的一行呢?
  3. 打印一个后退空间和在键盘上点击一个后退空间有什么区别(一个字符实际上在键盘上的回放空间上被删除)?

我在我的电脑(笔记本电脑)上运行这个,没有任何地方。使用GNU/LinuxUbuntu16.04LTS与konsole和tmux。

EN

回答 1

Unix & Linux用户

发布于 2018-12-13 15:05:54

文件内容是应用程序对它们的贡献。

Unix设计的特点之一是,文件是未区分的字符序列,需要应用程序将它们喜欢的任何解释放在它们身上。应用程序可以并且确实以不同的方式解释文件内容,并且您正在经历这种情况的后果。

VIM是根据单一Unix规范的文本文件概念来解释文件内容的,它是一个包含零行或多行的文件,由终止,不包含字符。它将不可打印字符转换为各种可打印的表示形式,但始终是行的末尾,因为这是概念的一部分。

其他实用程序对文件内容的解释不同。其中一个家族将文件内容解释为T骨骼类型模型37 (TTY-37)输出数据的流。这个系列包括几个传统的Unix和GNU程序:lessmoremostulcolcrtncalgrotty等非默认模式。在这种解释中,字符将(概念性的)打印头移回一个位置,并对以前的位置进行过击。因为这些程序不是物理的TTY-37和墨水在纸上,他们实现了自己的想法在软件中什么是过分引人注目的意思。过度打击可能导致尝试使用粗体和下划线属性,在一个字符完全替代另一个字符,在组合字符,或完全没有。

再读

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/475883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档