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