1. 程式人生 > >我使用過的Linux命令之dos2unix

我使用過的Linux命令之dos2unix

用途說明

dos2unix命令用來將DOS格式的文字檔案轉換成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文字檔案是以\r\n作為斷行標誌的,表示成十六進位制就是0D 0A。而Unix下的文字檔案是以\n作為斷行標誌的,表示成十六進位制就是 0A。DOS格式的文字檔案在Linux底下,用較低版本的vi開啟時行尾會顯示^M,而且很多命令都無法很好的處理這種格式的檔案,如果是個shell指令碼,。而Unix格式的文字檔案在Windows下用Notepad開啟時會拼在一起顯示。因此產生了兩種格式檔案相互轉換的需求,對應的將UNIX格式文字檔案轉成成DOS格式的是unix2dos命令。

常用引數

將DOS格式文字檔案轉換成Unix格式,最簡單的用法就是dos2unix直接跟上檔名。

格式:dos2unix file

如果一次轉換多個檔案,把這些檔名直接跟在dos2unix之後。(注:也可以加上-o引數,也可以不加,效果一樣)

格式:dos2unix file1 file2 file3

格式:dos2unix -o file1 file2 file3

上面在轉換時,都會直接在原來的檔案上修改,如果想把轉換的結果儲存在別的檔案,而原始檔不變,則可以使用-n引數。

格式:dos2unix oldfile newfile

如果要保持檔案時間戳不變,加上-k引數。所以上面幾條命令都是可以加上-k引數來保持檔案時間戳的。

格式:dos2unix -k file

格式:dos2unix -k file1 file2 file3

格式:dos2unix -k -o file1 file2 file3

格式:dos2unix -k -n oldfile newfile

注:unix2dos命令的使用方式與dos2unix命令的類似。

使用示例

示例一 DOS格式文字檔案在Linux下的表現

現在有一個指令碼檔案job.sh,是在Linux下用vi編輯的。

[[email protected] ~]# cat job.sh 
#!/bin/sh

date >job.txt

現在把它轉換成DOS格式文字檔案。

 
[[email protected] ~]# unix2dos job.sh 
unix2dos: converting file job.sh to DOS format ...

嘗試著執行一下。 
[[email protected] ~]# ./job.sh 
-bash: ./job.sh: 許可權不夠
[[email protected] ~]# chmod +x job.sh 
[[email protected] ~]# ./job.sh 
-bash: ./job.sh: /bin/sh^M: bad interpreter: 沒有那個檔案或目錄

DOS格式的指令碼檔案時無法解釋執行的,因為指令碼檔案的第一行是用來指定直譯器的,Linux系統認為直譯器是/bin/sh^M,而不是/bin/sh。

我們來通過Linux下的一些命令來看一下DOS格式檔案的真面目。 
[[email protected] ~]# cat -v job.sh     <== cat -v可以看到檔案中的非列印字元,而不帶-v引數的cat命令不行。 
#!/bin/sh^M
^M
date >job.txt^M
^M
[[email protected] ~]# hexdump -C job.sh       <== hexdump -C可以看到檔案每個位元組的十六進位制表示。 
00000000  23 21 2f 62 69 6e 2f 73  68 0d 0a 0d 0a 64 61 74  |#!/bin/sh....dat|
00000010  65 20 3e 6a 6f 62 2e 74  78 74 0d 0a 0d 0a         |e >job.txt....|
0000001e
[[email protected] ~]# vi job.sh     <== 使用vi開啟時可以看到底下有[dos]的格式提示。有些版本vi顯示的是行尾為^M。 

#!/bin/sh

date >job.txt

~                                                                                                                                   
~              

"job.sh" [dos ] 4L, 30C

現在我們把DOS格式改回Unix格式的,看看效果。

[email protected] ~]# dos2unix job.sh 
dos2unix: converting file job.sh to UNIX format ...
[[email protected] ~]# ./job.sh

可以執行了,不再報“-bash: ./job.sh: /bin/sh^M: bad interpreter: 沒有那個檔案或目錄”這個錯了。 
[[email protected] ~]#

示例二 dos2unix -k和dos2unix -n的使用示例

[[email protected] ~]# cat <<EOF >1.txt 
> 1
> 2

> 3
> EOF
[[email protected] ~]# file 1.txt 
1.txt: ASCII text
[[email protected] ~]# ls -l 1.txt 
-rw-r--r-- 1 root root 6 11-14 09:08 1.txt
[[email protected] ~]# date 
2010年 11月 14日 星期日 09:28:42 CST
[[email protected] ~]# unix2dos -k 1.txt      <== 保持檔案時間戳 
unix2dos: converting file 1.txt to DOS format ...
[[email protected] ~]# ls -l 1.txt 
-rw-r--r-- 1 root root 9 11-14 09:08 1.txt
[[email protected] ~]# dos2unix -n 1.txt 2.txt     <== 將1.txt轉換到2.txt 
dos2unix: converting file 1.txt to file 2.txt in UNIX format ...
[[email protected] ~]# ls -l 1.txt 2.txt 
-rw-r--r-- 1 root root 9 11-14 09:08 1.txt
-rw-r--r-- 1 root root 6 11-14 09:30 2.txt
[[email protected] ~]# file 1.txt 2.txt 
1.txt: ASCII text, with CRLF line terminators
2.txt: ASCII text
[[email protected] ~]# cat -v 1.txt 
1^M
2^M
3^M
[[email protected] ~]# cat -v 2.txt 
1
2
3
[[email protected] ~]#

長按圖片識別圖中二維碼(或搜尋微信公眾號FrontEndStory)關注“前端那些事兒”,帶你探索前端的奧祕。


相關推薦

使用Linux命令dos2unix

用途說明 dos2unix命令用來將DOS格式的文字檔案轉換成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文字檔案是以\r\n作為斷行標誌的,表示成十六進位制就是0D 0A。而Unix下的文字檔案是以

Linux命令dos2unix

      最近在linux下安裝fastdfs伺服器的時候,發現修改好相關的配置檔案之後;啟動nginx靜態資源伺服器,上傳圖片成功後,輸入storage伺服器給出的圖片儲存路徑。       例如 http://192.168.1.5/group1

使用Linux命令file

用途說明 file命令是用來檢測並顯示檔案型別(determine file type)。 常用引數 -b  不顯示檔名稱,只顯示檔案型別。在shell指令碼中時有用。 -i     顯示MIME類別。 -L  直接顯示符號連線所指向的檔案的類別。 -f na

Linux自學

記錄學習 作為一只菜鳥,並且沒有任何Linux的經驗,我從網上下載的視頻自學Linux。歡迎各位新手或大師指點,開通博客意在記錄自己學習的點滴。 由於項目在公安行業內,系統的版本無法跟現代的大型網後臺的系統版本相提並論。公安系統的版本大多停留在四五年前,因為是自學,下載的視頻也是四五年前的,所以後

Linux命令stty

repl 位置 而不是 connector 啟動 previous dsr 根據 pass 用途說明 stty命令用於顯示和修改終端行設置(change and print terminal line settings)。 常用參數 stty命令不帶參數可以打印終端行設置,

Linux命令kill

多種方式 輸入 字符 指定 避免 選項 con 擴展 firefox 精通Linux的kill命令    不管你使用哪種操作系統,你一定會遇到某個行為失常的應用,它把自己鎖死並拒絕關閉。在Linux(還有Mac)。你能夠用一個"kill"命令強制終結它。在這個教程中,我

Linux命令netstat

unknown 網絡相關 mes packet forward 提示 send 狀態 統計 Linux命令之netstat詳解 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerad

linux 命令 apt-get

檢查 end 修正 blog font span man 損壞 /var/ apt-get 是一個下載安裝軟件包的簡單命令行接口 使用方法: apt-get [OPTIONS] [COMMANDS] [PACKAGE_NAMES] OPTIONS:

Linux學習路的感悟

content data 更新 選擇 ati 關系 icp gtk 能夠 首先要跟大家說聲抱歉,這麽久一直沒有更新,有負大家對我的期望。 半年的Linux運維的學習到目前已工作一個月零9天,這一路走來的艱辛和掙紮只有自己最清楚。 首先要感謝

linux 命令 watch

html shell ati watch命令 art track pwd -s 周期 watch能夠幫你監測一個命令的執行結果,省得你一遍遍的手動執行。在Linux下。watch是周期性的執行下個程序。並全屏顯示執行結果。你能夠拿他來監測你想要的一切命令的結果變化,

Linux命令CP詳解

linux命令之cp詳解Linux命令之CP詳解嘿嘿,又一周過去了,大家過的怎麽樣呢,在這一周時間裏,小編可是又學到不少新知識呢。今天呢,小編就和大家分享一下Linux中我們常用的CP的命令,這裏的cp可是copy的簡寫噢。(容我嘚瑟一下) 學過linux的都知道,在我們操作的過程中,我們常常會用到cp這個命

linux命令head、tail命令具體解釋

-c pri fadein rip lin comment pen inux ont head 語法 樣例 tail 語法 樣例 head和tail組合使用方法舉例 head 語法 head [-n -k ].

Linux命令——id

命令 linux id id命令是查看用戶相關屬性信息。顯示真實有效的id(UID)和組ID(GID),UID是對應用戶的單一身份標識,GID則是對應多個UID。常用參數:  -g或--group  顯示用戶所屬群組的ID。  -G或--groups  顯示用戶所屬附加群組的ID。  -n或--n

linux 命令top

設置 smd gnome ont str 優先級 ive set tld top命令是顯示當前系統正在執行的進程相關信息。包含進程ID、內存占用率等;top命令格式例如以下: top [OPTIONS] OPTIONS: -b 批處理 -c

移位運算、Arrays中的copyOf、java.util.AbstractCollection、linux命令tail

xca eid width gte 技術分享 blank strac eba tail 移位運算:http://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html。 ---------- Arrays中的c

Linux命令uptime

and sin bsp 登錄 logs 0.00 mage 查看 工具包 這是什麽 uptime用來查看系統已經啟動了多長時間了。 它顯示的信息和w命令的頭(第一行)是一樣一樣的。 舉個栗子 舉一個實際的應用場景: 比如發現服務器上的某些沒有加入開機啟動的服務掛了一

Linux命令命令查找方式

命令查找順序1 命令類型 linux中命令類型分為兩類,一類為shell中自帶的命令,即內部命令,而其它的在文件系統之上的命令程序,即外部命令. 內部命令的優點: 命令程序在內存中,使用更快捷 相關命令: type,enable type -

測試過程中常用的linux命令【查看文件指定行的內容】

sed head tail 在開展測試工作的過程中,通常要接觸到服務器,對於linux服務器,總結一些常用的命令。 準備工作為了能直觀展示命令結果,使用腳本創建一個文件,在顯示文件內容的同時,也直觀的顯示行號。#!/bin/bash FileName=TestFile.log touch ./$

測試過程中常用的linux命令【查找指定的文件內容】

vi grep 之前遇到過這種情況,在查看日誌定位問題時,會將log 傳輸到本地,然後用本地的文本編輯工具打開文件,然後查找關鍵字,再進行分析。 這樣做無疑會降低效率。整理了幾個常用的命令,可以進行快速的查找。測試文件:文件名稱為execution.log, 文件內容如下:[error] Timed o

Linux命令bc

命令 logs oca cal clas 交互 浮點 linux blog bc命令是一種支持任意精度的交互執行的計算器語言。 bash內置了對整數四則運算的支持,但是並不支持浮點運算,而bc命令可以很方便的進行浮點運算,當然整數運算也不再話下。 如果沒有可以下載