打开主菜单

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的編碼可以顯示正常。

系統指令编辑

多工功能编辑

預校時間工作编辑