Linux系統(tǒng)命令指南
您可能希望使一個(gè)文件與另一個(gè)文件相似,以便為某些代碼提供補(bǔ)丁。diff 還經(jīng)常作為分析工具,用于驗(yàn)證程序或腳本 — 例如 sed 腳本 — 的輸出是否是所預(yù)期的輸出。
date 命令可用于顯示或設(shè)置日期。如果用戶具有超級用戶權(quán)限,則他或她可以通過在以下命令中提供一個(gè)數(shù)字型字符串來設(shè)置日期:
$ date 0101010004
此命令將日期設(shè)置為 2004 年 (04) 1 月 1 日 (0101) 凌晨 1 時(shí) (0100)。
但是,任何用戶可以用所需的格式來顯示日期。注意在格式序列之前需要一個(gè)加號 +。如果沒有出現(xiàn)此命令的預(yù)期輸出,則嘗試將它包含在單引號中:
$ date +´%H%M%S´
204748
您可以在序列中包含空格,這時(shí)您需要使用雙引號:
$ date +%H %M %S
20 47 51
在日期的主頁上列有三十多種不同的格式序列,這些序列可以按需要結(jié)合起來,以獲得您最后的輸出格式。
date 的輸出還可以用于腳本中,如:
$ date -d ´2 day´
Thu Jan 29 19:02:02 EST 2004
-d 選項(xiàng)指示 date 顯示其后字符串中所描述的時(shí)間。在上例中,我們要求顯示從現(xiàn)在起(2004 年 1 月 27 日)兩天后的日期。我們也可以要求顯示三天前的日期,其命令為:
$ date -d ´-3 day´
Sun Jan 25 20:56:59 EST 2004
date 多種功能的另一個(gè)示例是能夠向其輸出附加字符串,為生成唯一的文件名提供了一種便利的方法。
$ ls -l | cat > $(date +ls_%d%b%y%H%M.out)
$ ls ls_*.out
ls_04Feb041633.out
在這里,我們將一個(gè)長文件列表的輸出傳送給 cat,它將我們的輸出再傳送到一個(gè)名為 ls_04Feb041609.out 的文件。注意我們?yōu)槲募褂昧艘粋€(gè)變量,由美元符號 $ 表示。依次將 ls_ 和 .out 附加到日期,其格式為月份中的日 (%d)、本地的月份名稱縮寫 (%b)、年份的最后兩位數(shù)字 (%y)、小時(shí) (%H) 和分鐘 (%M),從而產(chǎn)生此文件名。
Sort 和 Uniq。 您可以從管道或從命令行所指定的文件對文本文件的行進(jìn)行 sort 操作。除非另外指定,sort 對多列輸出的第一列進(jìn)行操作。在默認(rèn)情況下,除非使用 -n 選項(xiàng),數(shù)字型的列按字母順序排序。
Sort 列可以用兩種不同的格式指定。如果使用 -k 選項(xiàng),則列的位置從 1 開始進(jìn)行編號。您還可以使用 +POS1 格式,從第一列編號為零開始進(jìn)行列的編號。以下兩個(gè)命令產(chǎn)生相同的輸出:
$ ls -l *.out | sort +5 -7
$ ls -l *.out | sort -k 6,8
-rw-rr 1 bluher users 375 Dec 5 2002 fdisk.out
-rw-rr 1 bluher users 2447 Dec 28 20:15 ls.out
-rw-rr 1 bluher users 590 Jan 4 21:24 greps.out
-rw-rr 1 bluher users 78 Jan 4 21:25 sgrep.out
...
在默認(rèn)情況下,sort 命令的列分隔符是空格和制表符。可以使用 -t SEP 選項(xiàng)指定其他分隔符,其中 SEP 是您指定的分隔符號。sort 的默認(rèn)順序是從最低到最高,利用 -r 選項(xiàng)可以將順序顛倒。
Sort 可用于很多不同的任務(wù)。例如,它可用于對文件輸出進(jìn)行排序(如 /etc/passwd),或者如我們在下面所看到的那樣,對 du 的輸出進(jìn)行排序。當(dāng)使用 -m 選項(xiàng)時(shí),sort 將文件合并,實(shí)際上并沒有對它們進(jìn)行排序。但是,如果您希望將它們排序,就應(yīng)該在文件合并前對它們排序。
Sort 經(jīng)常與 uniq 命令一起使用,從已排序的文件中刪除完全相同的行。uniq 命令在管道中經(jīng)常跟在 sort 命令的后面,還可以使用 -c 選項(xiàng)來計(jì)算某一行所出現(xiàn)的次數(shù),或者使用 -d 選項(xiàng),只報(bào)告完全相同的行:
$ sort -m test.out test2_sort.out | uniq -c
1 Another test.
1 Testing testing
2 This is a test.
在這里我們合并兩個(gè)文件 test.out 和 test2_sort.out。然后我們使用 -c 選項(xiàng),將輸出傳送到 uniq,這樣最后的結(jié)果是按字母順序排列的列表,完全相同的行被刪除,并帶有一個(gè)關(guān)于每行出現(xiàn)頻率的報(bào)告。
打印機(jī)控制
在多數(shù)情況下,打印機(jī)命令的使用相對較為明確。通過在 lpr 命令后面指定文件名,將作業(yè)發(fā)送到打印機(jī)。如果沒有提供文件名,則假定使用標(biāo)準(zhǔn)輸入。使用 lpq 命令,您可以獲得關(guān)于發(fā)送到打印機(jī)的作業(yè)的狀態(tài)報(bào)告。當(dāng)您指定作業(yè)號時(shí),Lprm 將作業(yè)從行打印機(jī)后臺打印隊(duì)列中刪除。
$ lpr grep2.out
$ lpq
Printer:lp@linux ´lpdfilter drv=upp method=auto color=yes´
Queue:1 printable job
Server:pid 1929 active
Unspooler:pid 1930 active
Status:waiting for subserver to exit at 21:24:14.637
Rank Owner/ID Class Job Files Size Time
active bluher@linux+928 A 928 grep2.out 779 21:24:14
done bluher A 877 (STDIN) 117258 13:09:53
$ lprm 928
Printer lp@linux:
checking perms ´cfA928linux.local´
dequeued ´cfA928linux.local´
在這里,當(dāng)我們將作業(yè)發(fā)送到打印機(jī)后,我們查詢其狀態(tài)。Lpq 向我們顯示編號為 877 的作業(yè)已經(jīng)完成,而我們剛發(fā)送的作業(yè)編號為 928。我們使用命令 lprm 928 將活動的作業(yè)從隊(duì)列中刪除。
磁盤信息
無論您是維護(hù)自己的系統(tǒng)還是支持具有很多用戶的企業(yè),監(jiān)視磁盤空間都是系統(tǒng)管理員更重要的職責(zé)之一。du、df 和 fdisk 命令提供了可用磁盤空間的不同視圖。
du 命令提供對每個(gè)目錄的文件空間使用情況的評估。在默認(rèn)情況下,測量的單位是塊的數(shù)目,塊的大小通常在安裝您的系統(tǒng)時(shí)確定。
在以下的示例中,系統(tǒng)是使用 1024 字節(jié)的塊安裝的。如果沒有指定目錄,則 du 開始對當(dāng)前目錄進(jìn)行計(jì)算。-h 選項(xiàng)以易于讀懂的形式提供大小的值:
$ du -h Documents
105k Documents/jj
573k Documents/John
682k Documents
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論