LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 896|回复: 5

谁能解释一个关于col的简单用法?[基本解决]

[复制链接]
发表于 2004-5-30 19:00:23 | 显示全部楼层 |阅读模式
man tcsh | col -b > tcsh.txt
为什么这样就可以把col的man的内容存成文本?
>的用法清楚,|的用法也知道。
主要有两点疑问:
1.man tcsh的结果好像不是纯粹的plain text output,是类似于vi的界面,为什么这样也可以通过管道传递内容?
2.col中-b参数到底如何理解,我看过,但是还是没有很明白
谢谢指教
发表于 2004-5-30 19:14:39 | 显示全部楼层
找到一份col的中文手册,情兄弟过目
col 过滤掉反向(以及半反向)换行符(LF: line feed or NL: new line), 这样输出按正常顺序,即只包括正向和半正向换行符, 而且在可能的地方使用tab替换白空格.这对 nroff(1) 和 tbl(1) 的输出处理很有用处.

col 从标准输出读入,并写出到标准输出上.

选项如下:

-b
不输出任何退格符,在每列的位置上只打印最后写的那个字符.
-f
允许正向半换行符(``fine''模式). 通常,处于半行分界线上的字符打印在下一行.
-x
输出多个空格以替换tab.
-l num
在内存中至少缓冲 num 行. 默认情况下,缓冲128行.

col 所能理解的用于回车操作的控制序列以及它们的十进制值都列在下面的表中:

ESC-7
反向换行符(escape后接7)
ESC-8
反向半换行符(escape后接8)
ESC-9
正向半换行符(escape后接9)
backspace
反向移动一列(8);在第一列则忽略.
carriage return
(13)
newline
正向换行符(10);同时执行回车(carriage return)操作
shift in
转到正常字符集(15)
shift out
转到备选的字符集(14)
space
正向移动一列(32)
tab
正向移动到下一个tab(9)
vertical tab
反向换行符(11)

丢弃所有不被承认的控制字符和escape序列.

当读取字符时, Col 保持着与字符集的联系,而且在输出时确保字符集是正确的.

如果输入设备试图回复到最近被刷新的行, col 会显示一条警告消息.  
 楼主| 发表于 2004-5-30 19:17:46 | 显示全部楼层
谢谢javalee,这只是中文版的man啊,但不是我英文差,我看明白了它要说的意思,只是不明白到底对实现上面的功能有什么用?就是说不加-b为什么不行呢?
还有就是第一个问题,man tcsh出来的不是plain text啊,是类似vi的一个界面,为什么还可以用管道?
发表于 2004-5-30 19:40:26 | 显示全部楼层
加上-b的作用,就是去掉文件中所有的控制字符的意思,
如果你只man cmd >file,的话,用vi的时候会出现很多控制字符,不便于编辑
-b的作用恰恰在此!
 楼主| 发表于 2004-5-30 19:45:22 | 显示全部楼层
原来如此,这和说明里面写的
-b
不输出任何退格符,在每列的位置上只打印最后写的那个字符.
好像看不出什么关系嘛,我就说看不懂什么意思。还是javalee一语中地啊,
那么我想知道这个man cmd出来的东西到底是什么,这和cmd -h出来的东西是不是只差一些控制字符呢?
就是说man cmd就是在cmd的说明文档里面加入了很多的控制字符?我还以为它是调用vi来显示cmd的使用说明呢,到底是怎样的呢?
发表于 2004-5-30 20:11:39 | 显示全部楼层
man command 出来的是此命令(如ls)非常详悉的文档,而command --help出来的是比较简单的使用方法!
除了man,还有常用的info
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表