使用Cygwin环境工具,进入它的cygwin系统,初始化配置(./configure)项目时,有如下报错:
$’\r’: 未找到命令
未预期的符号 `$’do\r” 附近有语法错误
所以,在Cygwin环境中安装 dos2unix 工具包来转码。
dos2unix的使用方法,unix2dos的使用方法
dos2unix命令
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 使用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 显示版本号 |
转换./configure文件,
0 |
$ dos2unix ../configure |
转换./configure文件并另存为./configure.sh
0 |
$ dos2unix -n ./configure ./configure.sh |
unix2dos命令
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 使用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 显示版本号 |
综合使用方法:
Linux本身提供了dos2unix和unix2dos这两个命令来实现windows和linux文件的转换,
但是。dos2unix和unix2dos本身没有提供递归也就是批量修改的方式,这样一来我们就需要借助于xargs命令了
xargs的命令的作用就是将参数列表转换成小块分段传递给其他命令,借助于xargs,我们可以很简单的实现批量替换;
这里假设我需要替换的文件所在目录为 public/components目录下。
如果批量替换public/components 目录下的所有文件使用如下命令:
0 |
find public/components/ -name "*" | xargs dos2unix |
其中,”*”号表示所有文件。
要更改文件格式的后缀为.py ,那么借助于下面的命令就可以轻松的实现批量替换格式:
批量替换为linux文件格式:
0 |
sudo find public/components/ -name "*.py" | xargs dos2unix |
批量替换为dos文件格式:
0 |
sudo find public/components/ -name "*.py" | xargs unix2dos |
优点:批量替换,工作量小, 总的来说,方法二借助于 管道符和xargs来实现的批量命令,将方法二修改一下就可以实现很多的批量操作,
比如:
1.批量删除整个linux系统中后缀为.tmp的文件;那么命令可以这么写:
0 |
sudo find /home/test -name "*.tmp" | xargs rm -f |
2.删除整个linux系统中与apache相关的文件:
0 |
sudo find /home/test -name "*apache" | xargs rm -rf |