2015年8月21日 星期五

在linux環境下,Windows與Linux檔案格式的差異性分析

    大家應該都有遇過這樣的問題,如果拿一個在windows環境下編輯的文字檔,拿到linux下作vim,在結尾的部分會出現^M的符號,其實這是因為windows以及linux換行符號不同所造成的。

首先介紹最常使用的三種作業系統,他們的換行符號如下所示:
       
      Linux:     "\n"
Windows:     "\r\n"
      MAC:     "\r"    (MAC的部分可能尚需查證,作者是網路上找的資料,並未實際求證)


以下我們作個實驗,首先在Windows系統下編輯一個檔案名為windows.txt,而內容則輸入"aaa"接著換行再輸入"bbb",編輯完成後把此檔案傳到Ubuntu為作業系統的電腦底下。

另外在Ubuntu為環境的電腦下,用vim編輯一個內容相同的檔案,名為linux.txt。



Linux底下有個好用的指令叫作"od",他可以用來查閱非文字檔內容,在這裡我們用這個指令查閱檔案內容,並以ASCII方式印出內容。

指令用法為 "od -c 檔名"


下圖是用上面的命令對windows.txt與linux.txt印出的結果:











我們可以明顯的看到 第一個印出來的windows.txt內容,換行符號確實是"\r\n",而linux.txt的換行符號卻是"\n",另外linux下編輯的檔案,也自動在第二行"bbb"的最後面多加了一個"\n"(作者vim這個檔案時,當輸入完"bbb"並沒有再按Enter鍵)

因此windows編輯的檔案要拿到linux下處理的時候,必須要特別小心注意!!


=========================================================
另外下面是一個可以把檔案中的內容,一行一行印出的shell script名子叫Danny_test.sh:

FILE_NAME="./windows.txt"

echo "" >> $FILE_NAME

if [ -f "$FILE_NAME" ]; then
        exec < $FILE_NAME
 
        while read line
        do
                #line=`echo $line| sed 's/\r//g'`
                line=`echo $line`
                echo $line
        done
fi

執行結果如下圖:









結果發現,只印出第一行aaa,bbb卻沒印,這裡有兩個原因:

1. 因為windows的換行符號\r\n跟linux的\n不同所造成
2. 因為windows下編輯的檔案結尾若沒有換行是不會加上\n的,linux下會自行加\n


接著分別解決方法
1. 使用sed 來將\r替換掉即可===>  line=`echo $line| sed 's/\r//g'`
2. echo "" >> windows.txt ,這樣作檔案的後面就會加上\n了


因此Danny_test.sh可以這樣寫:

FILE_NAME="./windows.txt"

echo "" >> $FILE_NAME

if [ -f "$FILE_NAME" ]; then
        exec < $FILE_NAME
 
        while read line
        do
                line=`echo $line| sed 's/\r//g'`
                echo $line
        done
fi

執行結果:


2015年8月5日 星期三

申請網卡MAC Address流程

每張網卡當出產時都需要有一組自己獨有的MAC Address,因此這樣的MAC位址是必須要申請的,還需要付一點費用。

負責管理MAC位址的是IEEE這個組織,要申請時請上他們的網站。
入口網如下面連結:
http://standards.ieee.org/develop/regauth/oui/index.html

我這邊來說明一下向IEEE申請時有以下幾種方案,如下圖所示,因為網頁都是英文版的因此我再詳細的對這三種方案說明一下:








1. MA-L(Mac Address Large)
申請這種方案感覺是最划算的,因為這方案可以使用的MAC Address數量最多,因為總共12位16進制的MAC,廠商ID會佔前六碼,其他六位數都由廠商自行使用,也就是說總共有16^6=16777216這麼多組可以使用,也就是約有1677萬個MAC Address可以使用。
接著我們來看一下申請所需的費用,如下圖所示:









第一欄位是申請MA-L方案所需的費用,大概是US.2575元。

第二欄位比較貴,因為第二欄位的種類是Private的,我的解讀是申請此種類的是無法在IEEE的網站上搜尋到公司對應的Address位址,因此還要額外再加上2980的費用。

第三欄位則是比第一欄貴了一點,它也是會對你的公司以及對應的MAC作隱藏的動作讓別人無法搜尋到,不過隱藏的時間只有一年。




2.MA-L(Mac Address Middle)
這個是IEEE新的方案,以往只有Large以及Small可以選,這個方案擁有的Mac Address數量大概有16^5=100萬個。費用表如下圖所示:










3.MA-S(Mac Address Small)
最後這個方案,針對的對象應該是比較偏向個人,因為它分配到的MAC總數量只有16^3=4096個,費用也只需要US.645元,感覺不太划算。










上面介紹完各種方案之後就看自己怎麼選擇囉!



各方案的申請網址(點選左邊欄位的Application)
MA-L       https://standards.ieee.org/regauth/application/mal/show


查詢公司申請的MAC(也可以透過點選左邊欄位 Public Listing到下面連結)