linux 中的col命令

col命令:

看介绍是过滤掉reverse line feeds

要明白什么是reverse line feeds,我们要先明白什么是line feeds

首先介绍一下new line(换行符)

https://en.wikipedia.org/wiki/Newline

,在linux中,换行符new line,就是line feed (\n)这个ASCII符号

new line 在不同操作系统下是不一样的,

在windows中是 \r\n ,在unix中是\n,

之所以造成这种原因,是因为传统的打字机实现,

使用打字机到一行的最后一个字符的时候,应该执行下面的两步操作:

1.向下换新的一行(换行)

2.回到行首(回车)

按理说这就应该是\n 和\r的雏形了,但是实际受打印机的机械结构限制,只使用这两个命令会有一些问题,如还没回到行首又打起来..回到行首的过程中把纸张碰脏了...

所以不同的打字机会有一些底层的驱动内部实现,同时对外暴露出的接口就形成了一些不同的规范

所以才出现了\n派和\r\n派

... reverse line feed 是干吗的呢,就是向上走一行..

除了向上走一行,我们还可以向左走半行 或者 向左走部分..

比如说打字机的一个打粗体的hack,打字的时候,想加粗一个字 ,我们可以控制打字机退回到前面的一个字符(backspace)..在重新打一遍,打了两遍就是加醋了

 (上面这些控制字符都会被过滤掉)

下面看一个实例:  

man ascii

我们可以看到NAME和ascii是被加粗的

man ascii | vi -

我们可可以看到这里就是历史遗留的hack.. ^H(脱字符+H)是backspace,也就是退回去让他们重打一遍加粗

man ascii | col

这里就不是加粗的了,因为backspace控制符已经被过滤掉了。

猜你喜欢

转载自www.cnblogs.com/eret9616/p/12287723.html