我从svn上下载了一些软件的源代码,想要构建它:
$ ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
Character ^M是一个r回车字符。当我把文件的行尾改为Linux格式时,它就开始工作了,但是有很多这样的文件,很难手工完成。如何改变行结束在目录及其子目录的所有文件Linux格式?
让dos2unix转换目录中的每个文件
find . -type f -exec dos2unix {} ;
您可以使用dos2unix(它可能在一个名为"tofrodos"的包中),这会就地更改文件。
dos2unix input
或者,如果您想做得非常简单,您可以使用tr从文件中删除所有r。
tr -d 'r' < input > output
类似这样的代码将查找所有以"*.sh"结尾的文件,并在它们上面调用dos2unix
来转换行尾:
find . -name "*.sh" -exec dos2unix {} ;
查找所有文件,将-type f
传递给find
,不指定-name
参数。详细信息请参见Unix/Linux查找命令教程。
有像dos2unix/unix2dos这样的工具,旧的工具来自dos/todos。