Unix:Mac OS X
本書將會簡單介紹Mac OS X的Unix。
前言
[編輯]簡介本書的目的,以及如何在Mac OS X啟動Unix環境。
Mac OS X的Unix應用 Wikibook作者
[編輯]本書歡迎任何人仕貢獻內容。唯所有貢獻皆以GNU自由文檔協議證書發放。單就本文而言,請使用正體中文寫書。歡迎轉換為簡體中文,但請有心人到簡體中文的維基書架開始一份簡體版本。 本書的版權不歸於任何人。以下列出的作者是對本書作出貢獻的人,但不代表他/她具有本書的版權。歡迎各位貢獻者留下名字和留言。
- Chainsaw Riot
- Gina
- 其他無名貢獻者
敬請各位不要對本書進行Vandalism(注釋:①汪達爾人的行為或作風②對公私財物、尤指文化、藝術品的破壞; 野蠻行為)行為。各位如想修改本書,可參考這份指引。或先到沙盒進行測試。
本書的目的
[編輯]Mac OS(注釋:Operating System 作業系統)一直都是蘋果的Macintosh(注釋:①麥金塔機②美國Apple公司於1984年推出的一種系列微機③蘋果公司生產的一種型號的計算機)電腦的預設作業系統。由最初版本只能同時執行一個應用程式,到後來版本可以進行相當原始的多工作業(Multitasking),但這種所謂的多工作業,常常會因為一個程式錯誤而令整個系統,包括其他正在執行的程式錯誤。直到蘋果的第十代Mac OS X,開始使用Unix(注釋:一種多用戶的計算機作業系統)作為系統核心,才能真正說得上為一個多人、多工的作業系統。(Multiuser, Multi tasking Operating System) 由於大部份的蘋果電腦使用者對Unix十分陌生,故本文將會簡介如何應用Mac OS X的Unix。請注意,就算對Unix無認識,蘋果電腦使用者也能使用圖形用戶介面(稱為Aqua)有效地進行大部份工作。 本文以10.2或以上的Mac OS X作為藍本。如果10.2或10.3版本有差異,會特別註明。
使用Terminal.app
[編輯]當一部使用Mac OS X的電腦開著之後,將會自動進入圖形用戶介面。要進入Unix環境,需要使用Terminal.app應用程式。 Terminal.app位於Applications裡的Utilities目錄。假如日後要常常使用Terminal.app,可將它拖拉到Dock。
三分鐘課程:Unix簡史
[編輯]理論
[編輯]以下將以實踐的方法介紹一些Unix的理論和傳統。
Shell Prompt
[編輯]Terminal.app啟動後,應見到以下的文字出現。
Last login: Fri Aug 27 00:00:01 on ttyp1 Welcome to Darwin! [localhost:~] user%
第一行是回報你上一次執行Terminal.app的時間。之後的ttyp1,是Session名稱,下文會再解釋。
Welcome to Darwin!是Unix系統的問候語句,而Darwin是Mac OS X的核心名稱。
第三行,名為Shell Prompt。方括號裡的文字是系統的名稱,在Mac OS X安裝時會要求輸入。也有時可能會是電腦自行產生的名稱,如dhcp-254-111。之後的,是使用者的登入帳號。
有時Shell Prompt會以#作結,表示你正在使用Superuser身份登入。
指令輸入
[編輯]Mac OS X下的Unix環境,與傳統Mac OS作業的最大分別是使用指令介面(Command Line Interface, CLI)。使用者不是以視覺化的按鈕,清單等等向電腦下達指令,而是輸入文字指令控制電腦。
在圖像介面Aqua之下,使用者將鼠標指向畫面最右上角得知時間。但在Unix環境之下,需要輸入date指令。在Terminal.app鍵入date再按鍵盤上的Return鍵,電腦會向你回報現在的時間。
[localhost:~] user% date Thu Sep 2 20:48:14 HKT 2004
請注意,指令必需準確輸入。如有錯誤,會引致指令失效。例如將date輸入為fate,不但不能令電腦回報時間,更會出現「找不到指令」的警告訊息。
[localhost:~] user% fate fate: Command not found.
另外,也需要注意大小寫。Date, dAte, DaTe皆不同於date。
[localhost:~] user% Date Date: Command not found. [localhost:~] user% dAte dAte: Command not found. [localhost:~] user% DaTe DaTe: Command not found.
差不多所有的Unix指令都是小寫。除了一部份的指令(如:CpMac)含有大寫字母。
請注意:由Mac OS X 10.3 Panther開始默認Shell中tcsh改為bash shell。上例的會得出不同的結果。
nirvana:~ hongcc$ Date Thu Dec 9 16:06:38 HKT 2004 nirvana:~ hongcc$ dAte Thu Dec 9 16:06:43 HKT 2004 nirvana:~ hongcc$ DaTe Thu Dec 9 16:06:47 HKT 2004
Bash Shell容許部份的大小寫錯誤。但有部份指令在Bash Shell仍有大小寫之分,所得出的結果也有不同,例如指令whoami(回報你登入的用戶名稱)。
nirvana:~ hongcc$ whoami hongcc nirvana:~ hongcc$ whoAMi uid=501(hongcc) gid=501(hongcc) groups=501(hongcc), 79(appserverusr), 80(admin), 81(appserveradm) nirvana:~ hongcc$ WhOaMi uid=501(hongcc) gid=501(hongcc) groups=501(hongcc), 79(appserverusr), 80(admin), 81(appserveradm)
故此,輸入指令時仍建議注意大小寫。
語法
[編輯]Unix指令可以有三種輸入模式。 第一種是單一輸入指令,如上例的Date,你只需輸入一個指令便可達到你想要的效果。
[localhost:~] user% date Sun Sep 5 02:07:41 HKT 2004
很多指令也可加入參數(Argument),改變指令的工作方法。例如輸入以下指令。
[localhost:~] user% date -u Sat Sep 4 18:27:45 GMT 2004
上例之中,我們輸入了date指令,再加上了-u這個參數。透過輸入這個參數,電腦輸出的時間,由本地時間(筆者所在地是香港,故時間標示HKT)改為格林威治時間(GMT)。 一個指令可以同時輸入多於一個參數,例如ls這個指令,如果單一輸入,電腦會輸出以下文字。
[localhost:~] user% ls 123.py Public Adobe SVG 3.0 Installer Log Shared Desktop Sites Documents app.sh Incomplete chan2 Library mainwebsite_html Movies memdel Music test.py Pictures testme
可能你已經知道,ls是用來列出現在所在位置的所有檔案,作用有如DOS的DIR指令。ls指令都可都可以加入參數改變其工作方法,例如可加入-F參數。輸入時請注意大小寫。
[localhost:~] user% ls -F 123.py* Public/ Adobe SVG 3.0 Installer Log Shared/ Desktop/ Sites/ Documents/ app.sh* Incomplete/ chan2* Library/ mainwebsite_html/ Movies/ memdel* Music/ test.py* Pictures/ testme/
-F參數令ls輸出時標示檔案的類別。例如檔案後尾有/表示為目錄,有*表示為可執行檔。ls也有另一個參數叫做-A。
[localhost:~] user% ls -A .CFUserTextEncoding Library .DS_Store Movies .MCXLC Music .Trash Pictures .java Public .jpi_cache Shared .lpoptions Sites .mplayer app.sh 123.py chan2 Adobe SVG 3.0 Installer Log mainwebsite_html Desktop memdel Documents test.py Incomplete testme
-A會列出所有檔案,包括隱藏檔案。假如想要ls同時列出所有檔案之餘,又要標示檔案類別,可以同時使用兩個參數。輸入方法有兩種,分別是ls -A -F和比較 常用的ls -AF。(可以省下兩下接鍵呢!)
[localhost:~] user% ls -AF .CFUserTextEncoding Library/ .DS_Store* Movies/ .MCXLC Music/ .Trash/ Pictures/ .java/ Public/ .jpi_cache/ Shared/ .lpoptions Sites/ .mplayer/ app.sh* 123.py* chan2* Adobe SVG 3.0 Installer Log mainwebsite_html/ Desktop/ memdel* Documents/ test.py* Incomplete/ testme/
檔案
[編輯]在unix之下,差不多甚麼都可以檔案形式存在。除了一般被視為檔案的東西(如Report, 相片, mp3),很多意想不到的東西都可以以檔案存在。 在Unix之下,檔案可分為普通檔案(Plain File, 符號為 - "Dash"),目錄(Directory, 符號為d),隱藏檔案(Hidden File,符號為. "Dot")以及符號式連結(Symbolic Link, 符號為l, "ell") 在Unix環境輸入ls -la,電腦會列出一個檔案列表如下:
[localhost:~] user% ls -la total 200424 drwxr-xr-x 13 user staff 1054 Sep 19 21:29 . drwxrwxr-t 6 root wheel 204 Jan 7 2004 .. -rw-r--r-- 1 user staff 3 Aug 1 2003 .CFUserTextEncoding -rwxr-xr-x 1 user staff 12292 Sep 19 14:12 .DS_Store -rw-r--r-- 1 user staff 0 Aug 1 2003 .MCXLC drwx------ 6 user staff 204 Sep 19 12:24 .Trash -rw------- 1 user staff 191 Sep 7 00:19 .bash_history drwxr-xr-x 2 user staff 68 Aug 13 2003 .java drwxr-xr-x 4 user staff 136 Aug 13 2003 .jpi_cache -rw-r--r-- 1 user staff 19 May 23 22:10 .lpoptions drwxr-xr-x 3 user staff 102 Jan 8 2004 .mplayer drwxr-xr-x 39 user staff 1326 Sep 19 14:12 Desktop lrwxr-xr-x 1 user staff 7 Sep 19 21:29 link -> test.py
Shell
[編輯]Shell是一種軟體,將你輸入的文字指令轉化為電腦明白的語言,令電腦進行你所指令的工作。Shell有多種,Mac OS X內建有c shell (csh), Z Shell (zsh), Bourne Shell (sh), Bourne Again Shell (bash)。而Mac OS X的默認Shell是設定為tc Shell(簡稱為tcsh)(OS 10.3以後改為bash!),屬於csh的改進版本。1其中一個特徵是tcsh(csh, zsh也是)是shell prompt是以%作結。 你可根據你的需要轉用另一個Shell,如Bourne Again Shell (bash)。如使用Bash Shell,Shell prompt會以$作結。你可以輸入echo $SHELL看看你預設使用的Shell類型。
[localhost:~] user% echo $SHELL /bin/tcsh
直接由tcsh轉為Bash shell的方法,是輸入bash。
[localhost:~] user% bash bash-2.05a$
不同Shell的使用方法也雷同,一般使用者不會發覺有分別,除非你會編寫Shell Script。本書將以tcsh作為藍本。
1. tcsh的長寫有說是Turbo C Shell。但其實這個說法不太合理,加入t字的原因是一個名為TENEX的作業系統令原作者發起編寫tcsh的念頭。
應用
[編輯]檔案處理
[編輯]文字處理
[編輯]OS X中文Emacs設定使用
參考炎龍的筆記本 [1]
LaTex
在OS X可以安裝teTex
安裝方法一是自己從原始碼編譯或是從Gerben Wierda的i-installer安裝,中文環境則使用CJK套件和中文字型。
請參考李果正先生的網頁
[2]
編譯teTeX套件(OS X要有安裝程式發展套件):
首先下載source, 在CTAN的ftp下載
tetex-src-2.0.2.tar.gz
tetex-texmf-2.0.2.tar.gz
tetex-texmfsrc-2.0.2.tar.gz
下載後建立目錄,將來teTeX就會安裝在其中。
sudo mkdir /usr/local/share
sudo mkdir /usr/local/share/texmf
然後開始解壓縮前面三個檔案,開始安裝teTeX!
sudo tar zxvf tetex-texmf-2.0.2.tar.gz -C /usr/local/share/texmf
sudo tar zxvf tetex-texmfsrc-2.0.2.tar.gz -C /usr/local/share/texmf
解壓縮完後執行ls -F /usr/locaal/share/texmf會有如下結果:
ls -F /usr/local/share/texmf
ChangeLog dvipdfm/ metafont/ tex/
LICENSE.texmf dvips/ metapost/ texconfig/
LICENSE.texmfsrc etex/ mft/ texdoctk/
aliases fontname/ omega/ updates.dat
bibtex/ fonts/ pdfetex/ web2c/
context/ ls-R pdftex/ xdvi/
doc/ makeindex/ source/
接下來是要安裝tetex的系統
mkdir src
sudo zxvf tetex-src-2.0.2.tar.gz -C ./src
然後在src/tetex-src-2.0.2目錄下進行configure
cd src/tetex-src-2.0.2
/configure --help可以看到configure參數的說明,在OS 10.2.4下 那位原作者建議使用--prefix=/usr/local, --disable-multiplatform. --without-xdvik, --without-oxdvik的參數,另外--mandir='${prefix}/share/man' 將說明安裝於此。
/configure --prefix=/usr/local --disable-multiplatform --without-xdvik --without-oxdvik --mandir='${prefix}/share/man'
configure完成後
make
這個make會執行三四十分鐘,這時候可以趁機休息一下....完成後
sudo make install
基本上,teTeX已經安裝完成!
I-installer的安裝方式和CJK和中文字型的安裝設定,可參考[Okios討論區[3]CatEye的說明,是中文LaTex的重點。
上網
[編輯]BBS:使用telnet命令
telnet -8 ip or 網域名稱
參數8是採用8位元編碼,若沒有加入此參數,所post的亞洲字元如中文字元將成為亂碼。不過用iTerm[4]這個terminal.app我覺得比OS X原來的好用許多,中(繁、簡)、日、韓文相容,如果BBS有櫻花輸入法輸入的日文字(如bbs.bahamut.org),可以選用Big5 HKSCS的編碼可以顯示正常。