linux之dos2unix命令解決vi打開文件行尾巴顯示^M

1 問題

有時候我們用vi打開文件,行尾巴顯示^M,我之前也不知道這個是爲什麼,後面才瞭解到,DOS格式的文本文件在Linux平臺,用較低版本的vi打開文件行尾會顯示^M,DOS下的文本文件是以\r\n作爲斷行標誌的,表示成十六進制就是0D 0A。而Unix下的文本文件是以\n作爲斷行標誌的,表示成十六進制就是0A。

 

 

 

2 解決辦法 

我們可以使用dos2unix來解決vi打開文件行尾會顯示^M,也就是把這個dos文件轉換成unix文件,文本文件是以\r\n作爲斷行變成\n斷行。

dos2unix file

 

 

3 dos2unix說明

dos2unix命令用來將DOS格式的文本文件轉換成UNIX格式,一般使用

dos2unix file

轉多個文件

dos2unix file1 file2

 

 

 

 

4 自己測試

比如我們有個dos文件的腳本文件,test.sh
我們查看下內容

cat -v test.sh

#!/bin/sh^M
^M
echo chenyu ^M

我們用hexdupm命令看下這個test.sh文件

hexdump -C test.sh
00000000  23 21 2f 62 69 6e 2f 73  68 0d 0a 0d 0a 65 63 68  |#!/bin/sh....ech|
00000010  6f 20 63 68 65 6e 79 75  20 0d 0a                 |o chenyu ..|
0000001b

然後我們執行這個腳本

./test.sh
-bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory

提示上面的錯誤,我們可以用dos2unix轉unix格式文件解決

dos2unix
dos2unix: converting file test.sh to Unix format ...

我們用hexdupm命令再看下這個test.sh文件

hexdump -C test.sh
00000000  23 21 2f 62 69 6e 2f 73  68 0a 0a 65 63 68 6f 20  |#!/bin/sh..echo |
00000010  63 68 65 6e 79 75 20 0a                           |chenyu .|
00000018

再去執行

./test.sh
chenyu

刷刷的

反之unix2dos命令是把unix格式的文件轉成dos文件格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章