九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來到小浪云!


一文搞清UNIX/Linux與Windows文件換行符格式差異


avatar
小浪云 2025-01-02 187

Windowslinux系統(tǒng)之間對同一個文件進(jìn)行交替操作時,常常會遇到一些奇怪的問題,比如無法執(zhí)行shell腳本或者找不到shell腳本等情況。本文由花神廟碼農(nóng)撰寫,將針對這一問題進(jìn)行總結(jié),供大家參考。

換行符格式差異

  • 換行符(EOL)是一個特殊的字符或字符序列,用于表示一行文本的結(jié)尾和新行的開頭;
  • 在不同操作系統(tǒng)中,表示換行符的實(shí)際代碼有所不同:– microsoft Windows和DOS系統(tǒng)使用CR + LF表示換行;– 類unix系統(tǒng)如Linux、OS X、FreeBSD使用LF;– 而MAC系統(tǒng)使用CR;
  • CR對應(yīng)ASCII碼的0x0D( ),LF對應(yīng)ASCII碼的0x0A( )。DOS系統(tǒng)下的換行符為( ),類Unix系統(tǒng)下為( )。在類Unix系統(tǒng)中,DOS系統(tǒng)下的’ ’會被顯示為 ^M。

接下來,以名為test-dos.sh的文件為例,詳細(xì)說明不同操作系統(tǒng)下的換行符格式差異。

#!/bin/bash echo?"Hello?World?!" 

格式影響

直觀影響

  • Unix/Mac系統(tǒng)下的文件在Windows里打開的話,所有文字會變成一行(由于Windows下編輯器的處理,這種情況一般不會發(fā)生);
  • 而Windows里的文件在Unix/Mac下打開的話,在每行的結(jié)尾可能會多出一個^M符號;

功能影響

  • 在windows上編寫的shell、python等腳本在Linux上?法正常的執(zhí)?,會有 ^M 相關(guān)提?:
[qxhgd@localhost?crlf]$?./test-dos.sh -bash:?./test.sh:?/bin/bash^M:?bad?interpreter:?No?such?file?or?directory 
  • 如果在make編譯的時候,執(zhí)行mksh(一個shell文件)可能會有類似下面的提示:
make[3]:?./mksh:?Command?not?found 

格式查看

Windows下查看

  • 利用編輯器,如visual studio Code、UltraEdit、Notepad2等軟件,如在狀態(tài)欄顯示為CR+LF則為Windows格式,如果顯示為LF則為Linux格式:一文搞清UNIX/Linux與Windows文件換行符格式差異一文搞清UNIX/Linux與Windows文件換行符格式差異
  • 利用支持擴(kuò)展搜索的編輯器,如Notepad++,查找 :一文搞清UNIX/Linux與Windows文件換行符格式差異

Linux下查看

[qxhgd@localhost?crlf]$?cat?-v?test-dos.sh #!/bin/bash^M echo?"Hello?World?!"^M 

顯示Tab:

[qxhgd@localhost?crlf]$?cat?-T?test-dos.sh #!/bin/bash ^Iecho?"Hello?World?!" 
  • od命令 od可以單獨(dú)使用:
[qxhgd@localhost?crlf]$?od?-c?test-dos.sh 0000000???#???!???/???b???i???n???/???b???a???s???h?? ?? ???e???c???h 0000020???o???????"???H???e???l???l???o???????W???o???r???l???d???????! 0000040???" 0000041 

也可以和cat配合使用:

cat?test-dos.sh|?od?-c 
  • hexdump命令
[qxhgd@localhost?crlf]$?hexdump?-c?test-dos.sh 0000000???#???!???/???b???i???n???/???b???a???s???h?? ?? ???e???c???h 0000010???o???????"???H???e???l???l???o???????W???o???r???l???d???????! 0000020???" 0000021 

狀態(tài)欄下會顯示:

?

“test-dos.sh” [noeol][dos] 2L, 33B

命令模式下執(zhí)行set ff:

??fileformat=dos 
  • gedit

— 首先使用gedit打開文件:

[qxhgd@localhost?crlf]$?gedit?test-dos.sh 

— 搜索 ,如果搜索到了就表示是DOS格式:一文搞清UNIX/Linux與Windows文件換行符格式差異

格式修改

Windows下

  • 可以利用編輯器修改,如visual studio code,點(diǎn)擊狀態(tài)欄右下方的CRLF,選擇“行尾序列”可修改為LF的格式;
  • 有的編輯器,如Notepad2,有Line Endings可供選擇:一文搞清UNIX/Linux與Windows文件換行符格式差異
  • 利用支持?jǐn)U展搜索的編輯器,如Notepad++,可將 替換掉:一文搞清UNIX/Linux與Windows文件換行符格式差異

Linux

利用特殊工具轉(zhuǎn)換

  • vim vim命令模式下,執(zhí)行set ff=unix或set fileformat=unix即可將DOS格式轉(zhuǎn)換為unix格式;
  • dos2unix 需要額外用命令安裝,一般的Linux系統(tǒng)不帶的;unix2dos與dos2unix作用正相反。
[qxhgd@localhost?crlf]$?dos2unix?test-dos.sh dos2unix:?converting?file?test-dos.sh?to?Unix?format?... [qxhgd@localhost?crlf]$?dos2unix?-n?test-dos.sh?test-unix.sh dos2unix:?converting?file?test-dos.sh?to?file?test-unix.sh?in?Unix?format?... 
  • tofrodos 這一組一共兩個命令,todos和fromdos,fromdos用來將dos轉(zhuǎn)換成unix格式,todos是用于將unix轉(zhuǎn)換成dos格式的,使用例子如下:
[qxhgd@localhost?crlf]$?fromdos?test-dos.sh 

利用文本處理工具

  • sed

— 轉(zhuǎn)換一個文件:

sed?‘s/^M//’?test-dos.sh>?test-unix.sh 

— 轉(zhuǎn)換多個文件:

find?./?-type?f?print0?|?xargs?-0?sed?-i?'s/^M$//' 
  • vi

?

— 1、vi test-dos.sh — 2、:%s/^M//g或:%s/ //g
— 3、esc退出 :wq保存退出

其中^M 必須是同時按 Ctrl+V+M(按住Ctrl鍵,然后依次V、M鍵)或依次按Ctrl + V然后Ctrl + M,表示回車。

  • tr
tr?-d?" "?test-dos.sh?????????????????? cat?test-dos.sh|tr?-d?‘/r'?>?test-unix.sh? tr?-d?' '??test-unix.sh 
cat?test-dos.sh?|?perl?-pe?‘~s/ //g’?>?test-unix.sh perl?-p?-e?'s/ //g'?test-dos.sh>?test-unix.sh perl?-pi?-e?'s/  / /g'?test-dos.sh 

相關(guān)閱讀

主站蜘蛛池模板: 91精品国产乱码久久久 | 日韩欧美亚洲 | 日本久久网 | 中文字字幕在线中文乱码范文 | 午夜精品在线 | 在线黄av | 国产精品久久久久一区二区三区 | 日韩在线精品视频 | 亚洲国产精品久久久 | 精品一二区 | 欧美一级片a | 一区二区免费看 | 91色网站| 天天草天天 | 亚洲久久一区 | av网址在线 | 中文字幕成人av | 毛片免费在线观看 | 狠狠av| 国产免费视频 | 日日噜噜噜夜夜爽爽狠狠视频, | 亚洲精品久久久久久一区二区 | 欧美一区在线视频 | 国产亚洲精品美女久久久久久久久久 | 国产精品福利久久久 | 久久久www成人免费精品 | 99国产精品久久久久老师 | 三区在线观看 | 99久久国产综合精品麻豆 | 欧美精品1区2区3区 精品国产欧美一区二区 | 亚洲精品精品 | 中文字幕二区三区 | 欧美xxxx色视频在线观看免费 | 99re在线视频免费观看 | 粉嫩一区二区三区国产精品 | 91亚洲精品国偷拍自产在线观看 | 自拍偷拍在线视频 | 亚洲永久字幕 | 国产精品久久久久久久久久久免费看 | 免费一区二区三区 | 狠狠色综合网站久久久久久久 |