众所周知在Windows与Unix的之间的字符集编码和正则字符定位符是有很大的差异的,如果在不同系统之间传递文件总会带来因为字符集编码和字符定位符的不同带来很多的错误。
这里先说一下字符集编码,在unix,一般使用的是Utf-8,而在Windows中系统中用的就比较多了,大部分有GB2312(中文简体)、BIG5(中文繁体)等等,那么如果使用的字符集不正确源文件打开就会有乱码,这个时候我们就需要用iconv来对源文件进行转换,以适应不同系统环境,iconv的用法如下:
用法: iconv [选项...] [文件...]
转换给定文件的编码。
输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
信息:
-l, --list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息
-?, --help 给出该系统求助列表
--usage 给出简要的用法信息
-V, --version 打印程序版本号
这样我们就可以通过这个指令写成脚本用于实际生产环境中,一般来说这个软件在系统安装时都有默认安装,如果没有可以到gnu的网站上下载源码包安装,这个安装没有什么依赖包,安装很简单的,这里就不赘述了
wget
除了字符集编码以外在Windows与Unix之间使用的正则定位符还有一些区别,如在Windows编辑的文件在unix系统中打开会,在每一行的行尾都会有“^M”,这个就是两者间的正则定位符不一样的问题了。在Windows中行尾结束符为“^M$”,而在unix系统中则为“$”,这样我们在使用的时候就会有很多的困扰,那么这个就需要使用unix2dos dos2unix2个指令来对正则定位符进行转换,在使用这2个指令的时候,在yum源配置正确的时候可以直接安装,使用方法如下:
[root@localhost ~]# yum -y install unix2dos dos2unix
dos2unix与unix2dos:
-k:保持输出文件的日期不变
-q:安静模式,不提示任何警告信息。
-V:查看版本
-c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII。
-o:写入到源文件
-n:写入到新文件
两者的参数选项使用方法都是一样的,区别是dos2unix是把DOS(即Windows)转成UNIX格式,而unix2dos则相反
平时我们在不同系统之间进行交换文件时就需要注意这些问题,以免造成错误。