Windows和Linux下面對于行末符的表示不同,Windows下面是\r\n,而Linux則是\n
因此,如果在Windows下面編輯的腳本文件,如shell腳本文件,在Linux下面執(zhí)行失敗,會提示多一個^M符號,用VIM打開也會發(fā)現(xiàn)增加這個符號。
解決辦法:
1. 用VIM打開,設(shè)置編碼為unix
:set fileformat=unix
然后,保存,結(jié)尾unix格式。
2. 使用VIM的替換功能,替換行末的\r符號即可
:%s/^M//g
3. 使用sed來進(jìn)行批量處理
sed ’s/^M//’ filename > tmp_filename4. 批量處理(推薦使用)
sudo apt-get install dos2unix
find . * | xargs dos2unix (對當(dāng)前目錄下面的所有文件執(zhí)行轉(zhuǎn)換格式的命令)
一個需要注意的點:dos2unix需要root權(quán)限,我開始的時候沒有用sudo運(yùn)行,提示轉(zhuǎn)換失敗,后來利用sudo執(zhí)行即可。
問題的根源來源于:
在Windows下面拉取Git上面的代碼,結(jié)果給版本庫所有的文件都加上了行末符號,而在Linux下面再次編輯該文件就發(fā)現(xiàn)所有的問題都出現(xiàn)問題,提交的時候又不能
把所有的文件都提交成Windows的編碼,因為這部分修改是沒有意義的,所以需要批量轉(zhuǎn)換。
posted on 2012-07-07 22:54
deercoder 閱讀(2131)
評論(0) 編輯 收藏 引用 所屬分類:
Unix/Linux 、
Shell/Bash