ToB企服应用市场:ToB评测及商务社交产业平台

标题: 一文搞清UNIX/Linux与Windows文件换行符格式差异 [打印本页]

作者: 千千梦丶琪    时间: 2022-6-24 07:05
标题: 一文搞清UNIX/Linux与Windows文件换行符格式差异
  格式差异


后文仅以test-dos.sh文件为例来说明,具体内容如下:
  1. #!/bin/bash
  2. echo "Hello World !"
复制代码
格式影响

直观影响


功能影响


  1. [qxhgd@localhost crlf]$ ./test-dos.sh
  2. -bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory
复制代码

  1. make[3]: ./mksh: Command not found
复制代码
格式查看

Windows下查看


Linux下查看


  1. [qxhgd@localhost crlf]$ cat -v test-dos.sh
  2. #!/bin/bash^M
  3. echo "Hello World !"^M
复制代码
显示Tab:
  1. [qxhgd@localhost crlf]$ cat -T test-dos.sh
  2. #!/bin/bash
  3. ^Iecho "Hello World !"
复制代码

  1. [qxhgd@localhost crlf]$ od -c test-dos.sh
  2. 0000000   #   !   /   b   i   n   /   b   a   s   h  \r  \n   e   c   h
  3. 0000020   o       "   H   e   l   l   o       W   o   r   l   d       !
  4. 0000040   "
  5. 0000041
复制代码
也可以和cat配合使用:
  1. cat test-dos.sh| od -c
复制代码

  1. [qxhgd@localhost crlf]$ hexdump -c test-dos.sh
  2. 0000000   #   !   /   b   i   n   /   b   a   s   h  \r  \n   e   c   h
  3. 0000010   o       "   H   e   l   l   o       W   o   r   l   d       !
  4. 0000020   "
  5. 0000021
复制代码

状态栏下会显示:
   “test-dos.sh” [noeol][dos] 2L, 33B
  命令模式下执行set ff:
  1.   fileformat=dos
复制代码

– 首先使用gedit打开文件:
  1. [qxhgd@localhost crlf]$ gedit test-dos.sh
复制代码
– 搜索\r\n,如果搜索到了就表示是DOS格式:

格式修改

Windows下


Linux下

利用特殊工具转换


  1. [qxhgd@localhost crlf]$ dos2unix test-dos.sh
  2. dos2unix: converting file test-dos.sh to Unix format ...
  3. [qxhgd@localhost crlf]$ dos2unix -n test-dos.sh test-unix.sh
  4. dos2unix: converting file test-dos.sh to file test-unix.sh in Unix format ...
复制代码

  1. [qxhgd@localhost crlf]$ fromdos test-dos.sh
复制代码
利用文本处理工具


– 转换一个文件:
  1. sed ‘s/^M//’ test-dos.sh> test-unix.sh
复制代码
– 转换多个文件:
  1. find ./ -type f print0 | xargs -0 sed -i 's/^M$//'
复制代码

   – 1、vi test-dos.sh
– 2、:%s/^M//g或:%s/\r//g
– 3、esc退出 :wq保存退出
  其中^M 必须是同时按 Ctrl+V+M(按住Ctrl键,然后依次V、M键)或依次按Ctrl + V然后Ctrl + M,表示回车。

  1. tr -d "\015" test-dos.sh                  
  2. cat test-dos.sh|tr -d ‘/r' > test-unix.sh
  3. tr -d '\r' < test-dos.sh > test-unix.sh
复制代码

  1. cat test-dos.sh | perl -pe ‘~s/\r//g’ > test-unix.sh
  2. perl -p -e 's/\r//g' test-dos.sh> test-unix.sh
  3. perl -pi -e 's/\r\n/\n/g' test-dos.sh
复制代码
如本文对你有些许帮助,欢迎大佬加关注、评论、点赞,有关必回关

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4