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

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2025-01-02 211

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 

相關閱讀

主站蜘蛛池模板: 成人免费在线电影 | 蜜桃黄网| 成人网视频 | 久久毛片 | 欧美精品久久久 | 国产激情视频在线 | 国产免费一区二区三区免费视频 | 女朋友的闺蜜3韩国三级 | 成人免费大片黄在线播放 | 九九色综合| 久在线| 国产成人福利在线观看 | 天天操天天操 | 中文字幕国产视频 | 天天干视频在线 | 国产精品福利网站 | 久久久久国产精品午夜一区 | 中文字幕av色 | 精品久久久久久久 | 日韩欧美中文 | 国产精品久久久久久 | 亚洲成av人片在线观看 | 欧美高清视频一区 | av毛片免费 | 亚洲国产成人精品久久 | 免费麻豆视频 | 亚洲视频在线观看免费 | 天堂网色 | 欧美在线色视频 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 久久久久久久久久久蜜桃 | 欧美一级片在线看 | 国产馆 | 国产精品久久久久久一区二区三区 | 国产精品色 | 一区二区三区在线免费看 | 成人亚洲精品久久久久软件 | 亚洲视频免费一区 | 欧美日韩在线观看视频 | 国产精品精品视频一区二区三区 | av黄色在线观看 |