2011-07-15 22:26:11 wens07 阅读数 3254

  现在常见的桌面系统有windows,类unix,mac;他们所使用的换行符都不相同

             如  windows:  (CR)(LF)  也就是\r\n

                      类unix:  LF  也就是\n

                          mac: CR 也就是\r

      所以你将一个系统上的文件转化为另一个系统时就会出现相应的问题,我是在学shell script时

遇到了这个问题的,将在windows下写好的shell script文件拿到ubuntu下运行老师跳出如下错误:

         [wens@22:13  /mnt/hgfs/SourceInsight/vbird_study/shell_scrips]$ ./hello_world.sh 
         bash: ./hello_world.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
在ubuntu下进行格式的转化有如下方法:

  •     使用vim进行转化
          进入指令模式:             
                      :set fileformat=unix/dos/mac
           输入以上命令即可进行格式的转化
  •     使用dos2unix或unix2dos命令                      
           但ubuntu下默认没安装该命令,要安装tofrodos包
                    sudo apt-get install tofrodos
                 其里面的命令已经改为改成todos和fromdos了,所以你想使用习惯的dos2unix和unix2dos命令,
           可以自己在~/.bashrc中进行别名设置

  •     使用sed的替换功能                 
          sed  -i 's/^M//g'  filename
            其中的^M要用  ctrl+v+m按出即回车,而不是直接输入^M

2010-06-24 19:18:49 iteye_13967 阅读数 29

DOS/Windows 和Linux/Unix的文件换行回车格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR (回车)和 LF (换行),而 UNIX 文本只有一个换行。

    1 )、把Dos/Windows 下的文件移至Linux/Unix系统

    虽然很多程序不在乎 DOS/Windows格式的 CR/LF文本文件,但是有几个程序却在乎——最著名的是 bash ,只要一遇到回车,它就会出问题。以下 sed调用将把 DOS/Windows格式的文本转换成可信赖的 UNIX 格式:

    $ sed -e 's/.$//' mydos.txt > myunix.txt

    该脚本的工作原理很简单:替代规则表达式与一行的最末字符匹配,而该字符恰好就是回车。我们用空字符替换它,从而将其从输出中彻底删除。如果使用该脚本并 注意到已经删除了输出中每行的最末字符,那么,您就指定了已经是 UNIX格式的文本文件。也就没必要那样做了!

    2 )、把Linux/UNIX文本移至 Windows系统,使用以下脚本执行必需的格式转换:

    $ sed -e 's/$/\r/' myunix.txt > mydos.txt

    在该脚本中,'$' 规则表达式将与行的末尾匹配,而 '\r' 告诉 sed在其之前插入一个回车。在换行之前插入回车,立即,每一行就以 CR/LF结束。请注意,仅当使用 GNU sed 3.02.80或以后的版本时,才会用 CR 替换 '\r'.

2013-09-13 16:57:43 zxh87 阅读数 554
        在linux上执行一个python文件时,经常报文件找不到。这是是因为格式的问题,在windows上换行是\r\n,而在unix上是\n,因此需要将文件转换成unix格式,可以直接使用命令 dos2unix file
2017-01-28 23:28:36 mrbcy 阅读数 666

有时我们在Windows下面写了一些脚本想要放到Linux下面执行的时候会出错。一个原因就是Windows使用DOS格式的文件,而Linux使用Unix格式的文件。

可以使用下面的命令查看文件的格式。

vim start_zookeeper_all.sh
:set fileformat

如果显示的结果是fileformat=dos,我们可以使用下面的命令方便的将其转化成Linux的文件格式。

vim start_zookeeper_all.sh       
:set fileformat=unix
:wq
没有更多推荐了,返回首页