使用Cygwin环境工具,进入它的cygwin系统,初始化配置(./configure)项目时,有如下报错:
$’\r’: 未找到命令
未预期的符号 `$’do\r” 附近有语法错误
所以,在Cygwin环境中安装 dos2unix 工具包来转码。
dos2unix的使用方法,unix2dos的使用方法
dos2unix命令
$ dos2unix -h
用法:dos2unix [选项] [文件 ...] [-n 输入文件 输出文件 ...]
--allow-chown 允许修改文件所有者
-ascii 只转换换行符(默认)
-iso 在 DOS 和 ISO-8859-1 字符集之间转换
-1252 使用Windows 1252 编码页(西欧)
-437 使用DOS 437 编码页(US)(默认)
-850 使用DOS 850 编码页(西欧)
-860 使用DOS 860 编码页(葡萄牙)
-863 使用DOS 863 编码页(加拿大法語)
-865 使用DOS 865 编码页(北欧)
-7 转换8 位字符到7 位空间
-b, --keep-bom 保留UTF-8 BOM头
-c, --convmode 转换模式
convmode ascii、7bit、iso或mac,默认为ascii
-f, --force 强制转换二进制文件
-h, --help 显示本说明文字
-i, --info[=FLAGS] 显示文件信息
文件 ... 需要分析的文件
-k, --keepdate 保留输出文件时间
-L, --license 显示软件协议
-l, --newline 加入额外的换行符
-m, --add-bom 添加UTF-8 BOM头(默认为UTF-8)
-n, --newfile 写入新文件
infile 新文件模式中的原始文件
outfile 新文件模式中的输出文件
--no-allow-chown 不允许修改文件所有者(默认选项)
-o, --oldfile 写入原文件(默认)
file ... 旧文件模式中要转换的文件
-q, --quiet 安静模式,不显示所有警告
-r, --remove-bom 移除UTF-8 BOM头(默认)
-s, --safe 跳过二进制文件(默认)
-u, --keep-utf16 保留UTF-16编码
-ul, --assume-utf16le 假定输入文件格式为UTF-16LE
-ub, --assume-utf16be 假定输入文件格式为UTF-16BE
-v, --verbose 显示更多信息
-F, --follow-symlink 根据符号链接转换其目标文件
-R, --replace-symlink 取代符号链接为转换后的文件
(原链接目标文件保持不变)
-S, --skip-symlink 保持符号链接及其目标不变(默认)
-V, --version 显示版本号
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$dos2unix-h
用法:dos2unix[选项][文件...][-n输入文件输出文件...]
--allow-chown允许修改文件所有者
-ascii只转换换行符(默认)
-iso在DOS和ISO-8859-1字符集之间转换
-1252使用Windows1252编码页(西欧)
-437使用DOS437编码页(US)(默认)
-850使用DOS850编码页(西欧)
-860使用DOS860编码页(葡萄牙)
-863使用DOS863编码页(加拿大法語)
-865使用DOS865编码页(北欧)
-7转换8位字符到7位空间
-b,--keep-bom保留UTF-8BOM头
-c,--convmode转换模式
convmodeascii、7bit、iso或mac,默认为ascii
-f,--force强制转换二进制文件
-h,--help显示本说明文字
-i,--info[=FLAGS]显示文件信息
文件...需要分析的文件
-k,--keepdate保留输出文件时间
-L,--license显示软件协议
-l,--newline加入额外的换行符
-m,--add-bom添加UTF-8BOM头(默认为UTF-8)
-n,--newfile写入新文件
infile新文件模式中的原始文件
outfile新文件模式中的输出文件
--no-allow-chown不允许修改文件所有者(默认选项)
-o,--oldfile写入原文件(默认)
file...旧文件模式中要转换的文件
-q,--quiet安静模式,不显示所有警告
-r,--remove-bom移除UTF-8BOM头(默认)
-s,--safe跳过二进制文件(默认)
-u,--keep-utf16保留UTF-16编码
-ul,--assume-utf16le假定输入文件格式为UTF-16LE
-ub,--assume-utf16be假定输入文件格式为UTF-16BE
-v,--verbose显示更多信息
-F,--follow-symlink根据符号链接转换其目标文件
-R,--replace-symlink取代符号链接为转换后的文件
(原链接目标文件保持不变)
-S,--skip-symlink保持符号链接及其目标不变(默认)
-V,--version显示版本号
转换./configure文件,
$ dos2unix ../configure
0
$dos2unix../configure
转换./configure文件并另存为./configure.sh
$ dos2unix -n ./configure ./configure.sh
0
$dos2unix-n./configure./configure.sh
unix2dos命令
$ unix2dos -h
用法:unix2dos [选项] [文件 ...] [-n 输入文件 输出文件 ...]
--allow-chown 允许修改文件所有者
-ascii 只转换换行符(默认)
-iso 在 DOS 和 ISO-8859-1 字符集之间转换
-1252 使用Windows 1252 编码页(西欧)
-437 使用DOS 437 编码页(US)(默认)
-850 使用DOS 850 编码页(西欧)
-860 使用DOS 860 编码页(葡萄牙)
-863 使用DOS 863 编码页(加拿大法語)
-865 使用DOS 865 编码页(北欧)
-7 转换8 位字符到7 位空间
-b, --keep-bom 保留UTF-8 BOM头(默认)
-c, --convmode 转换模式
convmode ascii、7bit、iso或mac,默认为ascii
-f, --force 强制转换二进制文件
-h, --help 显示本说明文字
-i, --info[=FLAGS] 显示文件信息
文件 ... 需要分析的文件
-k, --keepdate 保留输出文件时间
-L, --license 显示软件协议
-l, --newline 加入额外的换行符
-m, --add-bom 添加UTF-8 BOM头(默认为UTF-8)
-n, --newfile 写入新文件
infile 新文件模式中的原始文件
outfile 新文件模式中的输出文件
--no-allow-chown 不允许修改文件所有者(默认选项)
-o, --oldfile 写入原文件(默认)
file ... 旧文件模式中要转换的文件
-q, --quiet 安静模式,不显示所有警告
-r, --remove-bom 移除UTF-8 BOM头
-s, --safe 跳过二进制文件(默认)
-u, --keep-utf16 保留UTF-16编码
-ul, --assume-utf16le 假定输入文件格式为UTF-16LE
-ub, --assume-utf16be 假定输入文件格式为UTF-16BE
-v, --verbose 显示更多信息
-F, --follow-symlink 根据符号链接转换其目标文件
-R, --replace-symlink 取代符号链接为转换后的文件
(原链接目标文件保持不变)
-S, --skip-symlink 保持符号链接及其目标不变(默认)
-V, --version 显示版本号
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$unix2dos-h
用法:unix2dos[选项][文件...][-n输入文件输出文件...]
--allow-chown允许修改文件所有者
-ascii只转换换行符(默认)
-iso在DOS和ISO-8859-1字符集之间转换
-1252使用Windows1252编码页(西欧)
-437使用DOS437编码页(US)(默认)
-850使用DOS850编码页(西欧)
-860使用DOS860编码页(葡萄牙)
-863使用DOS863编码页(加拿大法語)
-865使用DOS865编码页(北欧)
-7转换8位字符到7位空间
-b,--keep-bom保留UTF-8BOM头(默认)
-c,--convmode转换模式
convmodeascii、7bit、iso或mac,默认为ascii
-f,--force强制转换二进制文件
-h,--help显示本说明文字
-i,--info[=FLAGS]显示文件信息
文件...需要分析的文件
-k,--keepdate保留输出文件时间
-L,--license显示软件协议
-l,--newline加入额外的换行符
-m,--add-bom添加UTF-8BOM头(默认为UTF-8)
-n,--newfile写入新文件
infile新文件模式中的原始文件
outfile新文件模式中的输出文件
--no-allow-chown不允许修改文件所有者(默认选项)
-o,--oldfile写入原文件(默认)
file...旧文件模式中要转换的文件
-q,--quiet安静模式,不显示所有警告
-r,--remove-bom移除UTF-8BOM头
-s,--safe跳过二进制文件(默认)
-u,--keep-utf16保留UTF-16编码
-ul,--assume-utf16le假定输入文件格式为UTF-16LE
-ub,--assume-utf16be假定输入文件格式为UTF-16BE
-v,--verbose显示更多信息
-F,--follow-symlink根据符号链接转换其目标文件
-R,--replace-symlink取代符号链接为转换后的文件
(原链接目标文件保持不变)
-S,--skip-symlink保持符号链接及其目标不变(默认)
-V,--version显示版本号
综合使用方法:
Linux本身提供了dos2unix和unix2dos这两个命令来实现windows和linux文件的转换,
但是。dos2unix和unix2dos本身没有提供递归也就是批量修改的方式,这样一来我们就需要借助于xargs命令了
xargs的命令的作用就是将参数列表转换成小块分段传递给其他命令,借助于xargs,我们可以很简单的实现批量替换;
这里假设我需要替换的文件所在目录为 public/components目录下。
如果批量替换public/components 目录下的所有文件使用如下命令:
find public/components/ -name "*" | xargs dos2unix
0
findpublic/components/-name"*"|xargsdos2unix
其中,”*”号表示所有文件。
要更改文件格式的后缀为.py ,那么借助于下面的命令就可以轻松的实现批量替换格式:
批量替换为linux文件格式:
sudo find public/components/ -name "*.py" | xargs dos2unix
0
sudofindpublic/components/-name"*.py"|xargsdos2unix
批量替换为dos文件格式:
sudo find public/components/ -name "*.py" | xargs unix2dos
0
sudofindpublic/components/-name"*.py"|xargsunix2dos
优点:批量替换,工作量小, 总的来说,方法二借助于 管道符和xargs来实现的批量命令,将方法二修改一下就可以实现很多的批量操作,
比如:
1.批量删除整个linux系统中后缀为.tmp的文件;那么命令可以这么写:
sudo find /home/test -name "*.tmp" | xargs rm -f
0
sudofind/home/test-name"*.tmp"|xargsrm-f
2.删除整个linux系统中与apache相关的文件:
sudo find /home/test -name "*apache" | xargs rm -rf
0
sudofind/home/test-name"*apache"|xargsrm-rf