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的编码可以显示正常。

系统指令[编辑]

多工功能[编辑]

预校时间工作[编辑]