a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 64|回复: 0

[LPI认证] linux认证辅导:Win格式文件转Linux格式几招

[复制链接]
发表于 2012-8-4 12:13:19 | 显示全部楼层 |阅读模式
在Linux下处理文件,有时会看到行尾有一堆的 ^M 。这是Windows风格的换行符,“晕到死”两行之间用0d 0a分隔,让人很讨厌,但这是有历史原因的。
5 R+ P+ E5 S4 ?  小故事:为什么换一行需要0d 0a呢?! t' z# ?! ~1 m4 {
  话当年long long ago,那时候打印机是最古老的机械式,它打完一行之后,要做两件事:第一件事是让打印头从行尾移回到行头,那个移来移去的打印头,被人形象的称为“车”(carriage),“车”回到左边的过程,很自然的大家就称之为“回车”(Carriage Return)。第二件事是把纸向上移一行,这个过程叫Line Feed。所以在ASCII码表中,0d是CR,0a是LF。
" v/ T& d/ }: T, h5 B) n' z  e  这就是Windows下0d 0a的来历,可能Linux认为这个很笨很落伍,一个Line Feed就能直接弄出一个新行来嘛,所以Linux下一直用0a来代表新行。
( H; g. f% z' R  故事说完了,言回正题,在Linux发现了这些文件后,怎么处理呢?
* y( ]2 }& [- x- M  一、乾坤大挪移:拷贝到Win,用UE、WINHEX等转成LINUX格式的文件。(靠,名字恁帅,但招式太土了!)。' o# Z3 w# ?  S- q7 h4 q, l4 A
  二、二两拔千金:用vim打开,在Normal模式下输入:%s/[Ctrl-v][Enter]//g,其中Ctrl-v是让回车键被认为是特殊字符,而不是命令结束。
+ f3 D3 k$ x, X8 d3 f3 H" S  三、一招定江山:有时候下载下来的一堆源文件都是这样的,总不能用vi一个一个打开吧,于是有了这招: dos2unix, 例子:需要把当前目录下所有源文件改成unix格式:dos2unix *.h *.cpp' U' u; J% Y" u% y  ~
  补充一下:其实严格说来^M是0a,这里面具体技术细节就不探讨了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-2 09:30 , Processed in 0.479767 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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