色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2025-01-02 186

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

換行符格式差異

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

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

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

格式影響

直觀影響

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

功能影響

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

格式查看

Windows下查看

  • 利用編輯器,如visual studio Code、UltraEdit、Notepad2等軟件,如在狀態欄顯示為CR+LF則為Windows格式,如果顯示為LF則為Linux格式:一文搞清UNIX/Linux與Windows文件換行符格式差異一文搞清UNIX/Linux與Windows文件換行符格式差異
  • 利用支持擴展搜索的編輯器,如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可以單獨使用:
[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 

狀態欄下會顯示:

?

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

命令模式下執行set ff:

??fileformat=dos 
  • gedit

— 首先使用gedit打開文件:

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

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

格式修改

Windows下

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

Linux

利用特殊工具轉換

  • vim vim命令模式下,執行set ff=unix或set fileformat=unix即可將DOS格式轉換為unix格式;
  • dos2unix 需要額外用命令安裝,一般的Linux系統不帶的;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轉換成unix格式,todos是用于將unix轉換成dos格式的,使用例子如下:
[qxhgd@localhost?crlf]$?fromdos?test-dos.sh 

利用文本處理工具

  • sed

— 轉換一個文件:

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

— 轉換多個文件:

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 

相關閱讀

主站蜘蛛池模板: 国产99久久精品 | 精品视频网 | 久久99国产精品久久 | 18到20女人一级毛片 | 久久精品a | 天天爱天天色天天干 | 在线精品免费视频 | 国产视频一区二区在线播放 | 两个人看的www高清免费资源 | 国产成人+亚洲欧洲 | 国产欧美一区二区久久 | 色一色在线观看视频网站 | 在线播放国产精品 | 亚洲第三区 | 日本免费高清 | 青青草原在线免费观看视频 | 中国与黑人xxxx视频 | 国产欧美日韩综合一区二区三区 | 永久看日本大片免费35分钟 | 国产精品久久永久免费 | 国产黄色a | 美女免费黄网站 | 日色网站| 精品久久久一二三区 | 精品国产一区二区三区免费看 | 992tv又爽又黄的免费视频 | 一级做a爰片久久毛片 | 任你躁国语自产对白 | 在线观看一级毛片免费 | 精品视频在线免费 | 一级做a爰全过程免费视频毛片 | 巨胸喷奶水免费www视频 | 国产三级网 | 99午夜高清在线视频在观看 | 91草草 | 国产成人欧美视频在线 | 黄页网址大全免费观看19 | 一级在线视频 | 一级真人毛片 | 亚洲国产欧美久久香综合 | 麻豆精品久久久一区二区 |