Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347541
  • 博文数量: 60
  • 博客积分: 1793
  • 博客等级: 上尉
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-17 18:21
文章存档

2012年(30)

2011年(30)

我的朋友

分类: LINUX

2012-09-09 20:48:34

DOS 与 Linux 断行字符是不同的。 而我们可以利用 cat -A 来观察以 DOS (Windows 系统) 建立的档案的
特殊格式, 也可以发现在 DOS 使用的断行字符为 ^M$ ,我们称为 CR 与 LF 两个符号。 而在 Linux 底下,则是仅有 LF ($) 这个断行符号。这个断行符号对于 Linux 的影响很大喔! 为什么呢?

在 Linux 底下的指令在开始执行时,他的判断依据是 『Enter』,而 Linux 的 Enter 为 LF 符号, 不过,由于 DOS 的断行符号是 CRLF ,也就是多了一个 ^M 的符号出来, 在这样的情况下,如果是一个 shell script 的程序档案,呵呵~将可能造成『程序无法执行』的状态~ 因为他会误判程序所下达的指令内容啊!这很
伤脑筋吧!

那怎么办啊?很简单啊,将格式转换成为 Linux 即可啊!『废话』, 要以 vi 进入该档案,然后一个一个删除
每一行的 CR 吗?当然没有这么没人性啦! 我们可以透过简单的指令来进行格式的转换啊!


[root@laopi ~]# dos2unix [-kn] file [newfile]
[root@laopi ~]# unix2dos [-kn] file [newfile]
选项与参数:
-k  :保留该档案原本的 mtime 时间格式 (不更新档案上次内容经过修订的时间)
-n  :保留原本的旧档,将转换后的内容输出到新档案,如: dos2unix -n old new

因为断行字符以及 DOS 与 Linux 操作系统底下一些字符的定义不同,因此, 不建议你在 Windows 系统当中将档案编辑好之后,才上传到 Linux 系统,会容易发生错误问题。 而且,如果你在不同的系统之间复制一些纯文本档案时,千万记得要使用 unix2dos 或 dos2unix 来转换一下断行格式啊!

阅读(3272) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~