(一)
最近在学习shell编程,可是在《Linux程序设计》指定的网站上下载了源码,使用的时候却一直出问题。提示:”bash: ./here1:/bin/sh^M:损坏的解释器: 没有该文件或目录“。之后用vi编辑器打开文件,发觉每一行的最后有浅蓝色的字符'^M'。才知道了问题所在
其实并没什么奇怪的,出现这种错误的原因是因为Linux和Windows文本文件的行结束标志不同。在Linux中,文本文件用"\n"(0a)表示回车换行,而Windows用"\r\n"(0d 0a)表示回车换行。所以在Linux中使用Windows的文本文件常常会出现错误。为了避免这种错误,Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"\r\n"转化成"\n",unixtodos把"\n"转化成"\r\n"。
命令dos2unix和unix2dos的使用非常简单,格式为:dos2unix filename
如果想更多的了解这两个命令,可以查看手册:
man dos2unix
它会告诉你dos2unix的高级用法
(二)
Ubuntu下默认没有安装dos2unix工具,而且也没有一个叫这个名字的工具(我在solaris里用过dos2unix,不知道为啥Ubuntu没有)。但是有一个替代工具——tofrodos , 下面就说一下它的安装和使用。
当然还是apt安装啦。
(1)安装tofrodos
sudo apt-get install tofrodos
实际上它安装了两个工具:todos(相当于unix2dos),和fromdos(相当于dos2unix)
安装完即可,现在你已经可以进行文本格式的转换啦。
比如: todos Hello.txt (即unix2dos Hello.txt)
fromdos Hello.txt (即dos2unix Hello.txt)
(2)做一些优化
由于习惯了unix2dos和dos2unix的命令,可以把上面安装的两个工具链接成unix2dos 和dos2unix,或者仅仅是起个别名,并放在启动脚本里。
步骤:
以下是代码片段:
ln -s /usr/bin/todos /usr/bin/unix2dos
ln -s /usr/bin/fromdos /usr/bin/dos2unix
或者在 ~/.bashrc里起个别名
vi ~/.bashrc
添加 alias unix2dos=todos alias dos2unix=fromdos
(三)
另外如果要在目录中大量替换, 可以使用find + xargs
比如:
find ./model -name *.sh | xargs fromdos
分享到:
相关推荐
以下是一个简单的示例,展示了如何在Java中将VBScript中的换行符转换为Java可识别的换行符: ```java public class Main { public static void main(String[] args) { String tempStr = "Hello\r\nWorld"; // ...
- - 去除数据文件中字符串的换行符; - - 使用此工具,必须有明确的行分隔符标记,且换行符标记不可在字符串中出现。否则无法使用,需要修改匹配搜索方式 ### 工具效率: 亲测200M文件5s中完成转换。 ### 使用...
例如,你可以将所有文本文件中的Windows风格换行符替换为Unix风格,以便在Linux服务器上正确显示。 另外,工具还提供了自动排序的功能。这对于整理大量文本数据,如日志文件或者数据库导出的数据,有着显著的帮助。...
用于转换又win下保存文件上传到Linux/Unix导致的,行尾出现 ^M 的问题。 使用方法: ./mod13-linux file1 file2 ... 说明: 内含编译好的 适用于linux的mod13-linux和unix的mod13-solaris。 给懒得用正则表达式替换...
标题“Linux和Windows中的换行符差异问题”指的是在Linux和Windows操作系统中,文本文件的换行方式存在差异,导致跨平台操作时可能会遇到显示不正常的问题。在Linux系统中,每行的结束通常只使用一个换行符(LF,...
Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动...
1.必须知道textarea中的换行符是 \n (个人检测发现按回车键是\n,好像在linux下是\r\n) 2.用nl2br之前,请仔细看好手册解释,我就是搞郁闷了,一般都理解为将\n转换成 ,其实不是的: 看php手册解释: nl2br – ...
在Linux或类Unix系统中,每行文本结束时使用的是单一的换行符(\n)。相反,Windows系统使用的是回车换行符组合(\r\n)来标记行的结束。这就导致了当一个在Linux环境下创建的文本文件在Windows中打开时,可能会出现...
2. `sinst2-1-1-1.exe`: 这可能是一个安装程序,用于在Windows上安装换行符转换工具或其他相关软件。 3. `3-26-2014 4-30-45 PM.png`: 这看起来是一个截图,可能是转换过程中的某个步骤或者结果的展示。 4. `dos2...
由于Linux和Windows文件系统所定义的换行符不同,所以从Linux或Android到Windows的文件需要转换一下换行符。 是一个很使用的小工具。 由本人亲自编写,本来在网上下载过别人写的工具,真是很扯淡。一气之下,本人就...
linux 下文件有^M, 如何转换,是因为mac,windows和linux 下的换行符不一样
在Linux系统中,每行文本的结束是以一个换行符(LF)表示的,而在Windows系统中,每行的结束则由两个字符组成:回车符(CR)和换行符(LF)。这种差异在跨平台操作时可能会导致文本文件显示不正常,例如,Windows下...
Linux系统使用的是LF(Line Feed,换行符)作为行结束标识,而Windows和DOS系统则采用CRLF(Carriage Return + Line Feed,回车加换行符)作为行结束标志。这就导致了在不同系统间交换文本文件时可能会出现格式问题...
在Windows系统中,文本文件的换行通常使用CRLF(Carriage Return, Line Feed,即回车加换行)组合,而在Unix和Linux系统中,只使用LF(Line Feed,换行)作为换行符。这两种不同类型的换行符在跨平台交互时可能导致...
本文将深入探讨MySQL数据库中的换行符以及在HTML文本区域(textarea)中使用的换行符,并解释如何在Web应用中进行有效的换行符转换。 1. MySQL数据库中的换行符 MySQL数据库存储文本数据时,通常使用标准的Unix...
例如,如果一个文本文件是在Windows环境下创建的,然后在Linux系统下打开,可能因为换行符的不同而导致显示问题,这时就需要进行“转行”操作,将Windows风格的换行符转换为Linux风格。 至于压缩包子文件的文件名称...
例如,使用Unix/Linux命令行工具`dos2unix`或`unix2dos`,它们可以方便地在不同操作系统间转换文本文件的行结束符。在Linux系统中,你只需输入`dos2unix input.txt output.txt`来完成转换。 总的来说,"Linux文本...
在编程世界中,尤其是涉及到文本处理时,换行符是一个重要的概念。... 首先,`\r`(回车)和`\n`(换行)是两...通过使用如`str_replace`这样的函数,我们可以轻松地完成跨平台的换行符转换,确保数据的一致性和兼容性。
1、由于windows平台与linux平台下的换行符不同,因此在不同平台间传送文件时,因经过转换,此工具即实现了此功能。 2、此资源包文件列表如下: a) unix2dos.c #unix2dos源代码 b) dos2unix.c #dos2unix源代码 c) ...