刪除linux檔案行尾^M__linux

來源:互聯網
上載者:User

今天用WinSCP修改了管理機linux系統下的一個檔案,結果重啟以後就連不上管理機了。。。無奈用DEBUG口進去,ifconfig一看,咋,我改好的網址都沒有了,重啟網路服務也沒有用。
於是cat下修改的interface檔案,沒問題啊,都改成功了啊,有圖為證:
沒辦法,要不我再把IP改回去試試?說幹就幹,直接vi編輯器開動~~~一開啟驚呆了,哪來的這麼多的^M啊。每行後面標配。

網上搜了一下,原來Window系統中用/r/n來表示換行,linux中用/n來表示換行,Windows的文字檔,直接拿到linux中使用可能會會出錯,因為多出了“/r”字元,這就是我們看到的^M。那要如何去掉呢,總不能一行行刪吧。
網上一搜,給出的是這五種解決方案:

方法1: 在命令模式下:輸入:%s/^M//g 然後,斷行符號即可替換 注,其中”^M”的輸入,分別是“Ctrl+v”、“Ctrl+M”鍵產生的
方法2: 使用vi開啟文字檔
vi dos.txt
命令模式下輸入
:set fileformat=unix
:w 方法3: 使用sed 工具
sed ’s/^M//’ filename > tmp_filename 方法4: 既然window下的斷行符號符多了‘\r’,那麼當然通過刪除‘\r’ ,也可以實現:
tr -d ‘\r’ 方法5:(最常用的方法)
在終端下敲命令:
$ dos2unix filename
直接轉換成unix格式,就OK了。~

好吧,一個個實踐看看。
首先是方法一,直接用Regex刪掉每行^M,先vi interface,再Esc,然後shift+:進入命令列模式,準備輸入%s/^M//g,人家強調了是用Ctrl+v,Ctrl+M產生^M,但是我咋就是按不出來呢。無奈直接輸入^M,果然刪不掉。然後不死心的我開啟了自己的linux系統,哎呦,果然Ctrl+v,Ctrl+M就能產生^M並順利刪除每行的^M。管理機是裁剪過的linux系統,不知道是不是因為這個原因才不行呢。

然後是方法二,在我自己linux系統中成功實施,但是在管理機中還是不行,pass!
方法三,pass;
方法四,pass;

直接實施方法五,傻乎乎的就直接在命令列模式下輸入$ dos2unix interface,納尼,為什麼說$ Command not found?
繼續換我自己linux系統也不行,為啥子,人家作者說了是他的最愛啊。後來我終於明白,我應該這樣輸dos2unix interface,去掉那該死的$

原因:
原文作者是以普通使用者登入,$就代表普通使用者,等待你輸入指令,就和你用root登入的#一樣一樣的。

啪啪打臉。以前以user登入後直接切換到root,真沒注意過這點區別,我流下了悔恨的淚水。

最後,由於經常需要改管理機IP,WinSCP使用又很方便,但總不能每次改完再輸一次dos2unix interface這個指令吧。鑒於每次改完IP都需要重啟,那就每次重啟後都自動執行一遍這個指令好了,於是在rc.local最末尾添加如下指令:dos2unix /etc/network/interface,這樣再也不怕修改管理機IP了。

總結:多看多思考多總結。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.