February 28, 2008
鼓勵此網誌:0
很多人視Linux 為猛獸,對於command line 模式更是懼怕萬分
其實…Linux 最棒的就是command line 下的那些小玩意兒~
在windows 裡,大家習慣圖形介面的操作環境,這當然是很友善的介面
但是對於一些一直重覆煩雜的工作來說…卻是很呆的操作介面…要不斷的輸入、移動滑鼠、點選…
今天介紹的小工具,或許不能馬上帶來幫助,但是當了解更多了之後,相信就能運用自如了~~^^
第一個指令是 cut
望文生意…就是剪下來,把你要的資料cut 出來
例,有一文字檔aa.txt 如下:
ID,Name,Phone,Birthday
1,David,12345678,66/1/3
2,ddy,22334452,64/3/11
3,cc,33445321,65/9/12
如果要取出所有人的名字和電話,可以這樣子下指令
(註) cat 相當於dos 下的type ,主要是把文字檔內容顯示在標準輸出(預設是螢幕)
常用參數說明:(原文來自於男人~~~man :p)
-b, --bytes=LIST
select only these bytes
LIST 是一種數列表示法,可以是 1,2,3 或是 1,3-5,7-9
選擇bytes的方式,可以抓取任意的範圍資料,左起為1,
-c, --characters=LIST
select only these characters
跟 -b 大同小異,老實說我分不出來有什麼差異啦 ^^ 在英文模式下一個character的長度=byte
也許在unicode 或是在中文處理上會有差異吧
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
DELIM 代表的是分隔符號,可以為任何字元,預設是TAB符號,通常直接將符號放在d的後方
如:d, or d:
但若分隔符號為空白時,可使用「'」單引號包起來,如:d' '
-f, --fields=LIST
select only these fields; also print any line that contains no
delimiter character, unless the -s option is specified
這個是搭配-d 參數使用的,每串被分隔字元分開的資料,視為一個欄位,左起由1起算
提到這個cut 指令,就想到awk 也能做到一樣的事,可參考我在前年寫的一篇使用awk 解析資料
cut 自是比awk 更簡單^^
順道再介紹二個指令,是我最近工作上有用到,就當作是自己的備忘…有需要的可參考一下
1. hd (一個能將檔案以 ASCII, decimal, hexadecimal, octal 格式 dump出來的工具)
語法:hd [參數] [FILE]
使用太簡單就不多說明,知道有這個東西就行了
2. dd (convert and copy a file)
是一個很強大也很危險的工具,應用很廣,可以做檔案轉換與複製
dd 它接受一個輸入(if) 和一個輸出(of)
輸入與輸出的範圍廣,可以是文件、檔案、或是一個設備(/dev/…)
所以有人使用它來備份軟碟資料…
(輸入為軟碟裝置,輸出為檔案)
也有人拿來做硬碟的MBR(硬碟的第一個磁區記錄開機資訊的區塊) 備份
先解釋一下參數
if=<輸入檔案或裝置>
of=<輸出檔案或裝置>
bs Bytes 一次讀取與寫入的Bytes數,例如 bs=512k , bs=512 (default value)
而bs 後面的數字表示可以使用單位如下
1c (1個字元(byte))
1w (1個字(word) 2個bytes)
1b (512 bytes)
1kB (1000bytes) (小寫k)
1K (1024bytes) (大寫K)
MB (1000*1000 bytes)
M (1024*1024 bytes)
GB (1000*1000*1000 bytes)
G (1024*1024*1024 bytes)
count 很重要的參數,要做幾次,在上述的例子裡面,輸入如果為有限的範圍,沒加count 就會做到全部的輸入都讀取完才會結束,但是如果輸入是沒有長度限制的…輸出就會一直快速增加…>< 這很危險,很快就會把硬碟塞爆,通常會讓count=1,下面的例子可以看見count 的需要
這是一個產生512 bytes的一個內容全為 0 的binary file (a.bin) 如果 count 沒有加的話…後果就是~~
a.bin 會一直無限制成長…@@ 直到硬碟爆掉
介紹到目前為止,還漏掉一個很常用的參數… conv
這個指令能夠將 a.txt 轉換為大寫字元 再寫入檔案b.txt
conv 能接的參數有 10幾種…我常用的就 lcase 與ucase 其它的有興趣的朋友再自己找資料囉
本著作係採用創用 CC 姓名標示-非商業性-禁止改作 2.5 Taiwan 授權條款授權.
其實…Linux 最棒的就是command line 下的那些小玩意兒~
在windows 裡,大家習慣圖形介面的操作環境,這當然是很友善的介面
但是對於一些一直重覆煩雜的工作來說…卻是很呆的操作介面…要不斷的輸入、移動滑鼠、點選…
今天介紹的小工具,或許不能馬上帶來幫助,但是當了解更多了之後,相信就能運用自如了~~^^
第一個指令是 cut
望文生意…就是剪下來,把你要的資料cut 出來
例,有一文字檔aa.txt 如下:
ID,Name,Phone,Birthday
1,David,12345678,66/1/3
2,ddy,22334452,64/3/11
3,cc,33445321,65/9/12
如果要取出所有人的名字和電話,可以這樣子下指令
| cat aa.txt | cut -d',' -f2,3 |
常用參數說明:(原文來自於男人~~~man :p)
-b, --bytes=LIST
select only these bytes
LIST 是一種數列表示法,可以是 1,2,3 或是 1,3-5,7-9
選擇bytes的方式,可以抓取任意的範圍資料,左起為1,
| cat aa.txt | cut -b1,4-5 |
-c, --characters=LIST
select only these characters
跟 -b 大同小異,老實說我分不出來有什麼差異啦 ^^ 在英文模式下一個character的長度=byte
也許在unicode 或是在中文處理上會有差異吧
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
DELIM 代表的是分隔符號,可以為任何字元,預設是TAB符號,通常直接將符號放在d的後方
如:d, or d:
但若分隔符號為空白時,可使用「'」單引號包起來,如:d' '
-f, --fields=LIST
select only these fields; also print any line that contains no
delimiter character, unless the -s option is specified
這個是搭配-d 參數使用的,每串被分隔字元分開的資料,視為一個欄位,左起由1起算
提到這個cut 指令,就想到awk 也能做到一樣的事,可參考我在前年寫的一篇使用awk 解析資料
cut 自是比awk 更簡單^^
順道再介紹二個指令,是我最近工作上有用到,就當作是自己的備忘…有需要的可參考一下
1. hd (一個能將檔案以 ASCII, decimal, hexadecimal, octal 格式 dump出來的工具)
語法:hd [參數] [FILE]
使用太簡單就不多說明,知道有這個東西就行了
2. dd (convert and copy a file)
是一個很強大也很危險的工具,應用很廣,可以做檔案轉換與複製
dd 它接受一個輸入(if) 和一個輸出(of)
輸入與輸出的範圍廣,可以是文件、檔案、或是一個設備(/dev/…)
所以有人使用它來備份軟碟資料…
| dd if =/dev/fd0 of = /tmp/tmpfile |
也有人拿來做硬碟的MBR(硬碟的第一個磁區記錄開機資訊的區塊) 備份
| dd if =/dev/hda of=~/hda_mbr.bak bs=512 count=1 |
先解釋一下參數
if=<輸入檔案或裝置>
of=<輸出檔案或裝置>
bs Bytes 一次讀取與寫入的Bytes數,例如 bs=512k , bs=512 (default value)
而bs 後面的數字表示可以使用單位如下
1c (1個字元(byte))
1w (1個字(word) 2個bytes)
1b (512 bytes)
1kB (1000bytes) (小寫k)
1K (1024bytes) (大寫K)
MB (1000*1000 bytes)
M (1024*1024 bytes)
GB (1000*1000*1000 bytes)
G (1024*1024*1024 bytes)
count 很重要的參數,要做幾次,在上述的例子裡面,輸入如果為有限的範圍,沒加count 就會做到全部的輸入都讀取完才會結束,但是如果輸入是沒有長度限制的…輸出就會一直快速增加…>< 這很危險,很快就會把硬碟塞爆,通常會讓count=1,下面的例子可以看見count 的需要
| dd if =/dev/zero of=~/a.bin bs=512 count=1 |
這是一個產生512 bytes的一個內容全為 0 的binary file (a.bin) 如果 count 沒有加的話…後果就是~~
a.bin 會一直無限制成長…@@ 直到硬碟爆掉
介紹到目前為止,還漏掉一個很常用的參數… conv
| dd if =a.txt of=b.txt conv=ucase |
conv 能接的參數有 10幾種…我常用的就 lcase 與ucase 其它的有興趣的朋友再自己找資料囉
本著作係採用創用 CC 姓名標示-非商業性-禁止改作 2.5 Taiwan 授權條款授權.















技術(6)




















































