2007年11月5日 星期一

換行字元的轉換

換行字元的轉換

November 4th, 2007 by Chuan-Hsien Lin
Last Modified on November 4th, 2007

有時候我們可能在 Windows 環境的文件檔案,可能因為換行字元表示方式不同,而造成檔案在 Linux 底下會出問題。

例如,我在 Windows 用筆記本新增了一個 run.sh 的 Shell Script,內容只有四行如下,

#!/bin/sh

ls
pwd

但是,當我到 Cygwin 環境下,要執行該 Schell Script,結果就出現一堆錯誤訊息,

$./run.sh
./run.sh: line 2: $'\r': command not found
./run.sh: line 3: $'ls\r': command not found

這正是 Windows 換行字元表示方法跟 Unix 不同,而導致問題。此時,我們可以使用一個叫做 dos2unix 的小程式,可以幫我們把換行字元作轉換。

先來看一下轉換前的檔案內容,

$ od -t x1 run.sh
0000000 23 21 2f 62 69 6e 2f 73 68 0d 0a 0d 0a 6c 73 0d
0000020 0a 70 77 64
0000024

接著,使用 dos2unix 來轉換換行字元,

$ dos2unix run.sh
run.sh: done.

$ od -t x1 run.sh
0000000 23 21 2f 62 69 6e 2f 73 68 0a 0a 6c 73 0a 70 77
0000020 64
0000021

至此,可以看的出來,原本的換行字元 0d 0a 被改變成 0a 了,這支小程式倒是挺方便使用的,如此一來,剛剛不能執行的程式,就可以快樂的執行了。

相反的,如果要將 Unix 的換行字元轉換成 Windows 的換行字元,則使用 unix2dos 即可。

以下是 dos2unix 指令語法,節錄自 Cygwin。

$ dos2unix --help
dos2unix version 0.1.3
converts the line endings of text files from
DOS style (0x0d 0x0a) to UNIX style (0x0a)

Usage: dos2unix [OPTION...] [input file list...]

Main options (not all may apply)
-A, --auto     Output format will be the opposite of the 
               autodetected source format
-D, --u2d      Output will be in DOS format
--unix2dos     Output will be in DOS format
-U, --d2u      Output will be in UNIX format
--dos2unix     Output will be in UNIX format
--force        Ignore binary file detection
--safe         Do not modify binary files

Help options
-?, --help     Show this help message
--usage        Display brief usage message
--version      Display version information
--license      Display licensing information

Other arguments
[input file list...]   for each file listed, convert in place.
                       If none specified, then use stdin/stdout

2007年11月4日 星期日

Unix 及 Windows 下的換行字元

Unix 及 Windows 下的換行字元

November 4th, 2007 by Chuan-Hsien Lin
Last Modified on November 4th, 2007

UNIX 和 Windows 的換行字元是不一樣的,UNIX 的換行字元只有 10 (New Line),而 Windows 的換行字元是由 13 (Carriage Return) 及 10 (New Line) 組成。

以下利用 Windows XP,以及 Cygwin 環境來實驗。

首先在 Windows 下利用筆記本新增一個 test.txt 檔案,內容如下,只有短短兩行,

test1
test2

用 od 指令看該檔案 ascii 碼,結果如下,

$ od -t c test.txt
0000000   t   e   s   t   1  \r  \n   t   e   s   t   2
0000014

用 od 指令看該檔案 hex,結果如下,

$ od -t x1 test.txt
0000000 74 65 73 74 31 0d 0a 74 65 73 74 32
0000014

可以發現,Windows 下用筆記本新增出來的檔案,換行是 \r \n,亦即 0x0D 0x0A。

再作個實驗,直接在 Cygwin 底下用 vi 新增一 test2.txt 檔案,文字內容同 test.txt,接著用 od 指令去看檔案內容,

$ od -t c test2.txt
0000000   t   e   s   t   1  \n   t   e   s   t   2  \n
0000014

$ od -t x1 test2.txt
0000000 74 65 73 74 31 0a 74 65 73 74 32 0a
0000014

此時會發現,在 Cygwin 下用 vi 新增出來的檔案, 其換行字元只會使用一個 \n,即 0x0A。

2007年10月8日 星期一

颱風天在書店當MIS

昨天有颱風來襲,因為風雨很強勁,所以很多地方是停止上班上課的,不過是禮拜六的關係,所以對我來說並沒有賺到一天假的喜悅,只是照常睡的飽飽的而 已。睡到了中午起床後,電腦才正開完機,結果咻的一聲,停電了!!!颱風天只能待在家就算了,連電都沒了,這下好了,什麼事都不能做,真是雪上加霜,於是 想乾脆去公司加班算了,至少還有電,順便看看 F 同事在不在,放假前有聽說他還會來加班的。

於是我穿著雨衣,冒著風雨交加騎著車出門,這一出門才嚇一大跳,在家時還沒感覺到這颱風的恐怖,因為在家時頂多是感覺風雨很大,但一出門騎到大街上 去,到處都亂七八糟的,有的招牌掉的掉,數木都吹倒了,大馬路上一堆東西滾來滾去的,所幸車輛不多,而且越空曠風勢越大,幾度都差點被吹倒,這時才覺得後 悔,應該躺在床上睡覺才是。不過也不是到處都停電,怎好像只有我家那區停而已,真是倒楣!騎到了公司樓下後,發現公司的燈都關的,沒有人在,還有停在公司 周圍的機車全部都吹倒,這情景實在有夠誇張,於是我也不敢停在這,打消了念頭,繼續在街上看看有什麼地方可以待著。

繞來繞去,幾乎什麼店都沒開,正在返家的路上,原本已經絕望的,突然發現有間金石堂是開著的,這下可好極了,總算有棲身之處。這家店是我去過最小間 的金石堂了,所以裡面書不多,只是這是離我家最近的書局,所以以前還蠻常來的。一進店裡,裡面空蕩蕩的,沒有半個客人,只有一個店長在忙著而已,這可真是 悽涼。算了,我能找的到有電又營業的地方,已經是萬幸了,就在裡面無聊的亂翻翻書。過了一會,這個店長突然過來跟我聊起天來,可能也因為沒客人,他也挺無 聊的。原來這是他開的第二間書店,但第一間之前都虧錢,所以關掉了,至於這間也只是打平而已,說起他當初也只是有個創業夢想,只是不是這麼好經營,幸好這 只是副業,接著說很羨幕我,因為我還沒結婚,他說男人不幸的兩個事情就是,第一:結婚,第二:有了小孩,當然我是跟他說,你這樣是幸福啦;其實我心裡真的 覺得他很幸福。

結果後來他得知我是寫程式的,會些電腦,於是問我能不能幫忙他看他店裡電腦的問題,就是他樓上那台電腦,用 VNC 連不到樓下的電腦,但樓下這台可以 VNC 連的到上面那台電腦,稍微幫他檢查了一些網路設定、測試一下後,確認原因是,樓下這台電腦開啟了防火牆,而且另一個原因是,樓下這台沒執行 VNC Service,那當然連不到。就這樣幫他解決了問題,然後他調侃著說,以後來他這買書會給我打折,哈哈!這倒是不錯。

過了一陣子,店裡的天花板突然漏水了,於是店長就又無奈的去處理這些麻煩事,也真是辛苦他了!就這樣子,我們兩個人在店裡消磨了一個下午。

2007年9月22日 星期六

記憶

外婆已經年事已高,每每我們回去探望她,她總是都不記得我們是誰,只記得看護跟住在鄰居的親戚而已,說是有老年痴呆的症狀,所以我們每次都得跟她重新介紹一下我是誰、我媽媽是誰,頓時她似乎又記起什麼,然後又可以跟我媽寒喧個幾句。

我多麼希望外婆能記得我是誰,多麼懷念以前她關切孫子的話語、耳提面命的叫我要孝順,這些話好些年沒有聽過了,有時,我多麼想知道外婆現在腦海裡到底想些什麼?想做些什麼?只是她現在話都不多,有時也不大理人。深深覺得能被別人記住,被別人放在心裡,是很多麼的珍貴,是一種福分啊。

聽過一句話說,『人是因為被需要而活著』,覺得這話說也挺有道理的。

2007年9月19日 星期三

移除新倉頡

移除新倉頡

September 19th, 2007 by Chuan-Hsien Lin
Last Modified on September 19th, 2007

自從安裝了 office 之後,莫名奇妙被安裝了新倉頡,在網路上搜尋移除的方法,看到最簡單的一個方法是,先新增新倉頡,再去移除就可了。

2007年9月16日 星期日

新相機

禮拜六跟同事相約一起去台北健檢,回程時順便我去買了相機,已經期待已久的 Canon IXUS 860 IS 終於開賣了,因為同事開車臨停在馬路邊的關係,所以我也沒去各店家比較太多,反正之前我就鎖定要買這台了,問了三家價錢都一樣是含 2G SD、多一顆台製電池,賣 NT$ 14200,於是直接在我常去的店家買了。

規格如下:

  • 800萬像素
  • 3 吋 23 萬像素螢幕
  • IS 光學防手震
  • 臉孔對焦
  • 28mm - 105mm 3.8 倍光學變焦廣角鏡頭
  • 最大光圈為 f/2.8-5.8
  • 感光度 ISO 80/100/200/400/800/1600
  • 可拍攝 1024 x 768 每秒 15 格或 640 x 480 每秒 30 格之無間斷影片
  • 可使用之快門範圍為 15 秒至 1/1600 秒
  • 採用 NB-5LH 鋰電池。
  • 尺寸︰92.6 x 58.8 x 25.9 mm、重量︰155 g。

有了相機之後,迫不及待的想出去玩,拍拍照,想測試看看這台相機的性能呢。

2007年7月31日 星期二

我是隱形人

今天早上起床後,整個頭超暈的!昨天晚上在公司時也是,暈到根本沒辦法想事情,不知最近怎麼了?身體虛虛的。今天早上實在暈的不想去上班了,於是就打電話請同事幫我請假,想休息一下。

下午四五點時,我在 msn 上傳訊跟 S 同事聊天,S 同事是坐我隔壁的,竟然不知道我請假沒去上班,還說,"早上你不是有來上班嗎?",我整個傻眼!

過陣子,又有一個 D 同事傳訊過來,說下班了,等等公司樓下的 7-11 集合,挖哩咧!

我是隱形人!

不過 A 同學倒是蠻熱心的,早上九點我沒準時上線,他就打電話來問我怎了,人間還是有溫暖的阿!

2007年7月22日 星期日

差點就受困貓空纜車

昨天跟一群同事與人出去聯誼,地點選在貓空要喝茶聊天的,而我們計畫是要撘貓空纜車上去貓空的,我們約莫下午四點多開始去排隊,這時人潮多了起來,排隊的人潮跟在淡水排渡輪差不多的盛況,好不容易在這種炎熱的天氣下,已經排到快輪到我們了,結果發現天空中的纜車怎都沒在動,於是有廣播說有點故障,請大家耐心等待,結果一等就等了一個小時,廣播還是一直說請耐心等待,後來實在不耐煩,我們就放棄了,就直接在附近的餐廳吃東西,真是倒楣,排了很久沒搭到,不過就算搭到的話,會更慘。

2007年5月1日 星期二

現在的小孩子也很幽默

剛剛在附近的公園運動,迎面而來兩個小朋友騎著腳踏車邊聊天,結果一個小朋友突然作勢要往旁邊的小徑騎走了,對另一個小朋友說,喂,我沒有油了,我先去加油一下喔!

我聽到這對話就往他們的腳踏車看了一下,愣在那。小朋友也蠻耍寶的嘛。