unix2dos dos2unix
dos使用的断行字符为^M$
,称为CR与LF两个符号。而在linux下,则是仅有LF($)
这个断行符号。
linux执行指令的时候,是按照enter键来判断,而linux的enter是LF
符号,而dos下enter为CRLF
,多了一个^M
出来。因此执行shell script时会出现错误。
可以通过unix2dos,dos2unix来进行相互转换。
语法:
unix2dos [-kn] file [newfile]
-k表示保留档案原来的mtime,也就是修改时间。(即本次修改不更改档案的修改时间)
-n表示保留原来的档案,把转变后的档案输出到新档案newfile。
例子
unix2dos -k filename
dos2unix -kn filename newfile
dos换行符下的档案会比linux下的档案大,因为多^M
字符。
icnov
如果需要进行语系编码间的转换,可以用到icnov这个命令。
语法:
icnov –list
icnov -f old -t new filename [-o newfile]-icnov –list列出支持的语系
-f 表示from,后边接原来编码
-t 表示to,后边接想转换的编码
-o 表示保留原来档案,建立新档案,档案名称为newfile。
例子
icnov -f gb2312 -t utf8 -o file.utf8
没怎么用过这个命令,不过看鸟哥书上写的把utf8(繁体中文)转为简体中文的UTF8时,是先转到gb2312,再转到utf8(简体中文)。是这么写的:
iconv -f utf8 -t big5 vi.utf8 | iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8