2010年1月7日 星期四

UNIX 指令簡介

UNIX 作業系統最早在 1970 年代由 AT&T(現在的 USL)所發展。因為 UNIX 可以在不同的硬體上執行,所以廠商大部分都會將 UNIX 做些修改。後來演變成為幾個主要的 UNIX 流派:USL 的 System V、加州大學柏克萊分校的 BSD(Berkeley Standard Distribution)、Linux 與 Microsoft 開發的 Xenix 等等。

萬流歸宗
時至今日,大家都想把不同流派的 UNIX 統一為單一標準。(國際上所推行的 POSIX 標準,對此影響深遠)本書所討論的是大多數人所認可「較標準」的 UNIX,也就是 SVR4 與 Solaris 2.0。

SVR4 是由 USL(AT&T 轄下的一個部門)與 Sun Microsystems 共同發展的,它結合了 SVR3 和 BSD 的特性。此舉加入了不少原 BSD 系統上的指令(加上一些新的 SVR4 指令)。除此之外,SVR4 還提供了一個「BSD 相容套件」,支援一些原本在 BSD 系統上的指令,目的在於讓使用者可以輕鬆地轉換到 SVR4。

Solaris 2.0 是 SunSoft(Sun Micosystem 的軟體部門)所發展的分散式計算環境,它包含了 SunOS 5.0 和 OpenWindows 的額外功能。簡單的說,就是整合了 SunOS 4.1 與 SVR4 的結果,所以 Solaris 2.0 雖然是根基於 SVR4 的系統,但有不少 BSD/SunOS 的特點。為了讓其他使用者(主要是 BSD 的使用者)可以很快熟悉 Solaris 2.0 環境,Solaris 2.0 提供了 BSD/SunOS 相容套件和執行檔相容套件。

附屬套件
另一個讓 UNIX 系統五味雜陳的原因,就是附屬套件的概念(Bundle)。UNIX 系統有非常多的功能,往往超出使用者的實際需求。今日的 UNIX 系統通常會將各功能製作成可個別增減的套件,供使用者選擇。結果造成某些套件是系統內定所需,有些卻要額外付費才能取得。附屬套件通常可以讓使用者選擇所需來購買。一般的附屬套件包括:

Basic System 基本系統指令和公用工具
Programming 編譯器、除錯器和函式庫
Text Processing 包含 Troff、巨集和相關工具
Networking 用來連上網路的工具,包括 rlogin、rcp 等等。
Windowing 圖形操作介面,如 OPEN LOOK 和 Motif。

如何搭配這些附屬套件全看廠商決定。比如說,Solaris2.0 出貨時就包括了 OpenWindows,這是一個以 OPEN LOOK 為基礎的視窗環境;不需要另外購買。但對其他廠商來說,圖形介面可能要另外付費。同樣的,某些廠商會隨貨附贈文字處理軟體,有些廠商就要另外收費。

速查手冊內容
本書主要講解的是 SVR4 的通用功能,與 Solaris 2.0 相容套件的功能。另外還有 emacs 和 RCS 的解說章節。雖然這並非標準 SVR4 的一部份,但許多 UNIX 系統上還是會安裝這些軟體,因為實在非常好用。

請注意,若您的系統上未安裝這些套件,手冊中某些指令就無法在您的系統上使用。

本書最主要的是第二章的 UNIX 指令解說。主要是針對使用者和程式設計師所使用的指令,系統管理方面的指令予以忽略。第二章的解說內容如下:

* SVR3 的指令
* SVR4 新增的指令和選項
* 一些 Solaris 2.0 相容套件中的指令

SVR3 使用者請注意,在第二章中出現的部份指令, SVR3 中並沒有提供。這些指令如下:

// p1-3 code

新手導覽
若你是 UNIX 新手,這麼多的指令可是相當嚇人的。下面是一些常用指令的分類表:

通訊指令
cu 連到 UNIX 系統上
ftp 檔案傳輸協定
login 登入到 UNIX 系統
mailx 收發電子郵件
rlogin 登入遠端的 UNIX 系統
talk 送訊息到其他終端機上
telnet 連線到另一個系統上
vacation 自動回覆信件
write 送簡短訊息到其它終端機上

比較指令
cmp 比較兩個檔案
comm 比較檔案中的項目
diff 比較兩個檔案
diff3 比較三個檔案
dircmp 比較目錄
sdiff 比較兩個檔案時,將兩個檔案同時顯示出來

檔案管理
cat 合併或顯示檔案
cd 切換目錄
chmod 改變檔案存取權限
cp 複製檔案
csplit 將檔案在特定位置斷開
file 檢查檔案類型
head 顯示檔案開頭幾行
install 設定系統檔案
ln 建立檔案別名
ls 列出檔案或目錄
mkdir 建立目錄
more 分頁顯示檔案
mv 移動或對檔案重新命名
pwd 顯示工作目錄
rcp 將檔案複製到遠端系統上
rm 刪除檔案
rmdir 刪除目錄
split 將檔案對半斷開
tail 顯示檔案的最後幾行
wc 計算行數、字詞數與字元數

雜項指令
banner 建立橫標
bc 計算機
cal 顯示日曆
calendar 備忘錄
clear 清除螢幕
kill 終結執行中的程式
man 取得指令說明
nice 降低程式優先權
nohup 登出後不將程式結束
passwd 設定密碼
script 將登入過程寫成 script
spell 檢查拼字
su 切換成超級使用者 ( superuser )

列印指令
cancel 取消列印
lp 文件送至印表機
lpstat 檢查印表機狀態
pr 將文件格式化及分頁

程式設計
cb C 原始碼的「美容」程式(自動縮排、括弧對稱 ...)
cc C 的編譯器
cflow C 函式流程圖
ctags C 函式參考
ctrace C 除錯器
cxref C 交互參考 ( cross-reference )
lint C 除錯器
ld 連結編輯器
lex 語法分析器
make 以特定順序執行指令
od 將輸入以多種格式顯示
sdb 符號式(symbolic)除錯器
strip 從 object 檔中除去一些資料
truss 追蹤 signal 和系統呼叫
yacc lex 用的編譯器

搜尋指令
egrep grep 指令的加強版
fgrep 在檔案中尋找字串
find 在系統中依檔名尋找檔案
grep 在檔案中尋找文件樣式(text pattern)
string 在二元檔中尋找文件樣式(text pattern)

Shell 程式設計
echo 將輸入的文字放在輸出上
expr 進行數學運算和比較
line 讀入一行輸入
sleep 處理時暫停
test 檢查條件是否成立

儲存媒介
compress 把檔案壓縮成為 .Z 檔以節省空間
cpio 複製備份檔
pack 把檔案包裝壓縮成為 .z 檔以節省空間
pcat 列出 .z 檔的內容
tar 將數個檔案合併成一個 .tar 檔,以便存入磁帶機
uncompress 解開 .Z 的檔案
unpack 解開 .z 的檔案
zcat 顯示壓縮檔的內容


系統狀態
at 在指定的時間執行指定的命令
chgrp 改變檔案的群組
chown 改變檔案擁有者
crontab 自動化指令
date 顯示或設定日期時間
df 顯示可用磁碟空間
du 顯示磁碟使用狀況
env 顯示環境變數
finger 顯示關於使用者的資訊
ps 顯示行程 (process)
ruptime 顯示系統的負載
shutdown 切換為單人模式
stty 設定或顯示終端機設定
who 顯示有目前登入系統的使用者

文書處理
cut 設定顯示的欄位
ex vi 的行編輯器
fmt 格式化文字行,儘可能把每一文字行的長度調整到相同(大致相同)
fold 把每一文字行的長度調整到相同
join 將不同的欄位資料併入資料庫中
nawk 新版的 awk,它是資料庫檔案所使用的樣式比對(Pattern-matching)語言
paste 將欄位位置互換或合併
sed 非互動式文字的編輯器
sort 排序或是合併檔案
tr 字元轉譯(或重新定義)
uniq 找出檔案中獨一無二或是重複的行
vi 全螢幕式編輯程式
xargs 處理參數

Troff
除了 deroff 之外,其餘都是相容套件中的一部份
deroff 移除 troff 碼
eqn 方程式前置處理器
nroff 終端機顯示用的排版工具
pic 繪圖用的前置處理器
tbl 表格前置處理器
troff 製版用排版程式

沒有留言:

張貼留言

推到 Twitter!
推到 Plurk!
推到 Facebook!