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文件格式