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