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 来转换一下断行格式啊!
阅读(3277) | 评论(0) | 转发(0) |