UNIX 操作系统操作简介

UNIX 是个多人多工操作系统。另外,UNIX 有很多种,如 AT&T UNIX (SVR4)、

SunOS 4.1.3、HP-UX R8、AIX V3、 XENIX、Linux 等等,国内学校工作站以使用

SunOS 为主流,各系统大同小异,以下介绍其基本指令的操作。

 ○ 第一节  命令格式 ○
        命令 [选项] [处理对象]
        例:  ls -la mydir

  □ 命令一般是小写字串,注意大小写有别。

  □ 选项通常以减号(-)再加上一个或数个字元表示,用来选择一个命令的不同操作

  □ 同一行可下数个命令,命令间应以分号隔开。

  □ 命令之後加上 & 可使该命令背景执行。

     ⊙ 一般在 shell 下执行程式,我们必须等刚下过的指令执行结束後,才能继

        续下指令,这就是前景执行,如果程式执行时间太长,不想等待它,可将该

        程式放至背景执行,此时就可继续做别的事了。

  □ UNIX 命令列有不少保留字,如 "\", "&", "|", ">", "<", "(", ")", "/",

     "!", "$", "*", "'" 等,这些字元均有特殊解译,如果命名或参数要用到保留

     字,请在保留字之前加上反斜线 "\",例如 \! 代表 !, \\ 代表 \ 。

  □ 线上求助指令 -- man   可在线上用来查询各种命令用法(manual page)的指令

     例∶man ls     查询 ls 这个指令的用法

         man man    查询 man 指令的用法

     以下大部份指令仅列简要说明,详细用法可用 man 查询。为节省篇幅,举例不

     多,读者需时常上机使用才能真正熟悉指令的用法。
 ○ 第二节  文件及目录指令 ○
  □ 和 DOS 相似,UNIX 采用阶层式目录管理结构,由根目录( / )开始一层层将子

     目录建下去,各阶层目录以 / 隔开。

  □ home directory∶使用者 login 时,工作目录的位置,是由系统管理者所设定

  □ "~" 符号代表自己的 home directory,例如 ~/myfile 是指自己 home 目录下

     myfile 这个文件;~b82000/bin/qkmj 代表 b82000 的 home 目录下, bin 目

     录内 qkmj 文件。

  □ 档名有区分大小写,长度可达 256 字元 (随系统而异),且不限点号(.)的数目

  □ 隐藏档∶档名或目录名以 . 开头即为隐藏档。

  □ .   表示目前所在目录

     ..  表示上一层目录

  □ UNIX 的万用字元有三种,'*' 和 '?' 用法和 DOS 相同,另可用 [....]

     代表区间内的任一字元,如 test[0-5] 即代表 test0, test1, ...,test5

     的集合。

  □ 以下是 ls -l 指令输出的例子,分别介绍各栏位的意义

      total 63

      drwx------  4 b1503045     1536 Feb 13 16:37 Mail

      drwx------  2 b1503045      512 Jan  9 16:26 News

      drwx------  2 b1503045      512 Feb  7 00:46 bin

      drwx------  2 b1503045     1024 Nov  1 16:43 c

      -rw-------  1 b1503045     3051 Feb  7 01:49 dial-up

      -rw-r-----  1 b1503045    37106 Feb 13 02:00 wwwfaq1

      drwx------  2 b1503045      512 Aug 11  1994 doc

      lrwxrwxrwx  1 b1503045       11 Sep  5 20:36 docs -> /remote/doc

      drwxr-xr-x  2 b1503045      512 Feb  7 00:43 pub

     ↓━━┬━━↓ ━━┬━   ━┬━ ━━┬━━━ ━━┬━━

                                                       凼

        文件形式∶

         -  一般文件。

         d  目录。

         l  符号链结档,(symbolic link file)用 ln -s 命令造成的,上例中

            ,cd docs 和 cd /remote/doc 的效果是一样的。

         c  字元式周边设备,以一个字元一个字元方式传输,如终端机。

         b  区块式周边设备,能一次大量传输,如磁盘机。

         s  socket 档。

        文件存取权限∶共九个字元,每三个分为一组,共三组 rwx 的组合。

        前三个 rwx 是文件拥有人的权限,中间三个是所属群体(group)的权限,

        最後三个是其他人的使用权限。rwx 代表的意义如下∶

            对文件而言  对目录而言

         r  可读此档    可得知目录内有哪些文件

         w  可修改此档  可在此目录内建档及杀档

         x  可执行此档  可进入此目录内

         -  无此使用权  无此使用权

        ⊙ 所谓的所属群体(group),在台大计中 ccsun 工作站,同系学生定为

           同一 group;在系计中 cctwin 工作站,同年级学生定为同一 group。

        ⊙ 以上例而言,wwwfaq1 这个文件自己可以读写,同一 group 的人只能读

           ,其他人对此档完全没有存取权。

        ⊙ 自己的文件,可用 chmod 指令改变其存取权,有两种使用方法,如下∶

              八进位法  -- chmod <八进位数> <文件>

              此方法如同在画体育选课志愿卡,共三个八进位数字,r=4,w=2,

              x=1,-=0。例如 -rwxr-xr-x 为 755,rw-r----- 为 640。如上例,

              若下 chmod 644 dial-up 即可将 dial-up 这个档的存取权从 600

              变成 644,亦即让其他人均可读此文件。

              其实最前面还有一个八进位数,但很少用到,其意义如下∶

                4000  程式执行时,设定使用者识别码(SUID)位元为 on

                2000  程式执行时,设定使用者所属团体识别码(SGID)位元为 on

                1000  sticky bit on,程式执行後会常驻记忆体。

              符号法  -- chmod <who op 存取权> [<who op 存取权> ...] <文件>

              <who>   u (user)  文件拥有者

                      g (group) 所属 group

                      o (other) 其他使用者

                      a (all)   包括 u, g, o

              <op>    + 加上存取权

                      - 除去存取权

                      = 重新设定存取权

              <存取权> 有 r, w, x, s, t (常用前三者)

              例如,chmod u-w wwwfaq1 让自己不能更改 wwwfaq1 这个文件,

              chmod a+x a+r bin 允许所有人进入 bin 目录并可查看有哪些文件。

        文件连结(link)次数。

        文件拥有者。超级使用者(系统管理员)为 root。

        文件大小,单位为 byte。

        文件内容最近一次更新时间。

     凼 文件名称。

  □ 指令简介

     ⊙ ls      列出目录内文件名称(如 DOS 的 dir/w)

        ls -l   除了列出档名外,并列出档案属性及拥有者、档案大小及建立时间

                等资讯

        ls -a   列出所有文件,包括隐藏档

        ls -R   递回地列出所有文件(子目录内所有文件亦列出)

        ls -F   依文件格式分类

                可执行档档名後加'*',目录名称後加上'/',link档档名加上'@'

     ⊙ pwd     查询目前所在之目录名称

     ⊙ cd      更换目前工作目录位置

                若只打 cd 不加目录名,则回到自己的 home directory

                回到上一层目录,必须打 cd .. ,cd 和 .. 中间要有空白

     ⊙ cat     查看文字档内容

     ⊙ more    以一页一页方式显示一个文字档

                当最後一行出现 --more(16%)-- ,表示你已看了 16% 的文章。此

                时可用 more 内的指令∶

                space   往下卷动一页

                Enter   往下卷动一行,若先键入数字再按Enter可下卷指定的行数

                q 或 Q  停止输出,回到系统提示符号

                h       显示可用指令及其功能

     ⊙ cp <原始档> <复制档>    就是 copy 啦!

     ⊙ mv <原始档> <目的档>    若原始档和目的档在同一目录下,可更改档名,

                                若加上路径名,可在目录间搬移文件

     ⊙ rm      删除文件,若加上 -i 会徵求确认後删除

        rm -r <目录名>  删除该目录及该目录之下的所有文件

        rm -rf  同上,但不会先徵求确认

                注∶UNIX没有undelete,杀档前请确定你的大脑很清醒

     ⊙ mkdir   建立子目录

     ⊙ rmdir   删除子目录,目录内须无文件

     ⊙ chmod   设定文件或目录的存取权限

     ⊙ lpr     将文件放进 printer queue 中等候列表

     ⊙ lpq     显示 printer queue 的内容

     ⊙ lp      列印资料

     ⊙ lpstat  查询列印状态与印表机相关资讯

     ⊙ pr      文字档之格式化输出

  □ 进阶指令

     ⊙ grep    於文件中寻找特定字串

                例∶grep fopen *.c 可印出所有 *.c 文件中,有 fopen 字串的

                    那一行。

     ⊙ tail    印出文件最後 10 行内容

        tail -200   印出文件最後 200 行内容

     ⊙ which   查询某个执行档是放在那个路径之下

     ⊙ od      以八进位察看文件内容

     ⊙ ln      连接(link)文件

        ln -s   symbolic link

     ⊙ wc      计算文件的行数、字数及字元数

     ⊙ touch   更改文件修改或被存取时间

     ⊙ diff    文件比较

     ⊙ find    文件搜寻

     ⊙ df      显示可使用之文件储存空间及文件数目

     ⊙ du      计算磁盘机使用情形

     ⊙ umask   建档时,取消部份存取权

     ⊙ tee     将 stdin 输出到 stdout 并复制一份於文件中
 ○ 第三节  通信指令 ○
  □ 指令简介

     ⊙ rusers  查看有哪些人上机

     ⊙ ku      比 rusers 更好用,并提供 finger, talk, write, mail 等功能。

     ⊙ mesg y  接受其他使用者讯息(系统预设值)

        mesg n  拒绝其他使用者讯息

     ⊙ talk    线上一对一交谈系统,对方必须在线上才能使用,可让同一主机或

                使用相同网路协定的不同主机的使用者交谈,若要使用中文请用

                ctalk。

                ○例如,若你使用台大计中工作站,发现你的朋友 b2503000 正在

                  使用 ccsun22 这台机器,可下 talk b2503000@ccsun22 这个指

                  令,接著等待回音,若对方愿意和你聊天,则萤幕画面将会分为

                  上下两部份,上半部份为自己输入的讯息,下半部份则是对方的

                  应答。

                ○按下 Ctrl-C 可结束对话

                ○若 b2503000 要和你聊天时,会出现如下画面

                  Message from Talk_Daemon at 11:21

                  talk:  connection requested by b2503000@ccsun22

                  talk:  respond with talk b2503000@ccsun22

                  若想回答请输入 talk b2503000@ccsun22 再按 Enter 即可

                ○此时若萤幕内容混乱,在某些软体中可按 Ctrl-L 重绘萤幕文字

                  ,若你正在编辑文件,该文件也不会受影响,仍可继续编辑。

                ○若你不想和他 talk ,可用 mesg n 命令拒绝。

                ○若远方机器与本地机器相容,亦可使用此命令和远方机器使用者

                  聊天,例如∶talk u8234567@ccsun19.cc.nctu.edu.tw

                  即可和交大 ccsun19 上的 u8234567 聊天

     ⊙ finger  可查询本地机器或远方机器使用者简要资料

                例∶finger b1503045@cc.ntu.edu.tw

     ⊙ mail    读取及传送电子邮件

                以下指令可利用 mail 传送文字档

                mail user < filename

     ⊙ write   送讯息给其他在系统中的使用者,也可视为功能较差的 talk 程式

                ,记得按 Ctrl-D 结束

     ⊙ rlogin,rsh,telnet   远端登录(login)

  □ 进阶指令

     ⊙ vacation    自动回应来信
 ○ 第四节  系统资讯 ○
  □ 指令简介

     ⊙ quota -v    察看自己可用磁盘空间大小(单位∶KB)及文件个数

     ⊙ date    现在的日期、时间

     ⊙ who     查询目前和你使用同一机器的有哪些人及login时间地点

     ⊙ w       查询目前上机者详细状况

     ⊙ whoami  察看自己帐号名称

     ⊙ groups [帐号名] 查看某人的 group

     ⊙ yppasswd    更改密码

     ⊙ ypchsh  更改自己的 login shell

     ⊙ ypchfn  更改自己的全名(full name,不是帐号名)

     ⊙ cal     印出月历或年历

     ⊙ tty     显示目前所用终端机名称

     ⊙ history 查看自己下过的指令

  □ 进阶指令

     ⊙ nslookup    向 Name Server 查询 hostname 及 IP
 ○ 第五节  处理程序(Process)的控制 ○
  □ 指令简介

     ⊙ ps      显示 process 的状态(process status)

                PID  栏∶即 ProcessID,一个正在执行的程式在系统中的唯一编号

                Owner栏∶该 process 的拥有者

     ⊙ kill    停止处理程序,通常先用 ps 命令查得 Process ID,再杀之

        kill -9 立即停止一个 process

        kill -9 -1  杀掉系统内所有属於自己的 process

        ○ 若在工作站上无法离线时,可先 login 另一台工作站,然後再 rsh

           到原来当掉的工作站,下 kill -9 -1 指令即可正常退出。

     ⊙ jobs    列出现在正在执行的工作

     ⊙ fg      将中止的 job 回到前景继续执行

     ⊙ bg      背景执行

  □ 进阶指令

     ⊙ at      在指定时间执行命令

     ⊙ batch   依序执行多个命令

     ⊙ crontab 要求系统定期执行特定命令

     ⊙ nice    调整 process 的优先权

     ⊙ nohup   使 process 在 logout 後继续执行
 ○ 第六节  其他命令 ○
  □ 指令简介

     ⊙ cc      C Compiler

     ⊙ compress    将文件压缩成 *.Z 格式

     ⊙ uncompress  将 *.Z 格式的压缩档解压

     ⊙ alias   替命令取别名

                例∶alias  dir  'ls -al'

                以後打 dir 就等同於下 ls -al 命令

     ⊙ set     查看或设定 shell 变数

        ○ 这里介绍几个重要的变数∶

              home∶你的 home directory.

              path∶和 DOS 的 path 变数功能一样,系统会顺著 path 中的目录

                    去找可执行档。

              term∶终端机形态,常用 vt100、vt102、ansi。

        ○ set <变数名>=<设定值> 就可以设定变数的值,$<变数名> 代表此变数

           的值。例如∶set term=vt100 ; set path=($home/bin $path)

           另外须注意 path 的第一个目录最好不要设为 . ,这是系统安全的考量

     ⊙ setenv  查看或设定环境变数

     ⊙ echo    回应讯息到标准输出

     ⊙ sort    资料排序

     ⊙ su      权限转换为指定使用者

     ⊙ banner  放大特定字串

     ⊙ calendar    重要事项提醒

     ⊙ spell   拼字检查

     ⊙ sleep   暂停一段时间不使用 CPU(通常用在 Shell Script)

     ⊙ test    测试文件型态或检查字串、数值大小(通常用在 Shell Script)

     ⊙ wait    等待 process 执行结束(通常用在 Shell Script)
 ○ 第七节  终端机常用控制键 ○
  □ Ctrl-C     中断程式的执行。

     Ctrl-Z     暂停程式的执行,稍後可下 fg 或 bg 指令继续,若未下 fg 或

                bg 指令继续执行,该 process 仍会留在系统内。

     Ctrl-S 或 Pause 键    萤幕暂停输出

     Ctrl-Q     萤幕恢复输出

     Ctrl-D     EOT (End of Transmission)

  □ 有时候按了键盘,萤幕却没任何反应,看起来好像当机,可能就是不小心按了

     Ctrl-S 键,此时按 Ctrl-Q 就可恢复正常。

  □ 若你输入中文时,萤幕却出现乱码,请先於 UNIX 提示符号下打 stty pass8,

     系统就不会过滤字元的 bit7(the most significant bit)。

  □ 若你进编辑器或者其他的全萤幕程式,出现萤幕文字上卷的问题时,请先於

     UNIX 提示符号下打 stty rows 24 或 resize 就可恢复正常。
 ○ 第八节  管道(pipe)及输出入重导(redirection) ○
  □ UNIX 把输出入设备亦视为文件,这些设备可能是键盘,萤幕,印表机,也可以

     是磁盘档,以下是 UNIX 的标准输出入设备∶

     ⊙ 标准输入(stdin)

        平时为键盘,可用 < 转向。

        例∶mail b82000 < myfile 可将 myfile 文件寄给 b82000

     ⊙ 标准输出(stdout)

        平时为萤幕,可用 > 转向,用 >> 可将结果附加(append)在文件尾端。

        例∶finger b81045 > myfile 可将查询结果写在 myfile 文件上。

     ⊙ 标准错误输出(stderr)

        平时为萤幕,如 stdout 被转向,仍可在萤幕看到错误讯息。 stderr 可用

        >& 转向,用 >>& 将错误讯息附加在文件尾端。

  □ 管道∶管道的符号是 "|",用来连接两个命令。"|" 左边指令的输出作为 "|"

     右边指令的输入。例∶ls -l .. | more 可将上一层目录内容以一页一页方式

     输出;who | grep b.503 | sort | more 可将目前上线的电机系学生名单经过

     排序後分页输出。
 ○ 第九节  Shell 与 Shell Script 简介 ○
  □ DOS 的 COMMAND.COM 就是一种 shell,负责解译你所下的指令并执行它。同样

     的,UNIX 上也有这样的东东,它是在你成功 login 以後由系统自动启动的。

     UNIX 上有不少种 shell,sh, csh, ksh, tcsh, bash 等皆是,一般都是用csh

     ,login shell 可用 ypchsh 命令改变,但你必须先知道你要换的新壳子在那

     个目录下。tcsh 有类似 DOSKEY 的功能,值得推  。

  □ DOS 中有所谓的批次档,用以方便处理一些例行工作。UNIX 也有批次处理,它

     就叫做 Shell Script,而且比 DOS 的批次档强很多,写法几乎是一个高阶语

     言。Shell Script 是个文字档,但其地位和其它的命令或可执行档是完全相同

     的,只要用 chmod 指令将 Shell Script 存取权设为可执行即可。欲知 Shell

     Script 写法及其相关细节,请参阅 manual page 或 UNIX 相关书籍。

  □ $home 目录下的 .login 档就是一个典型的 Shell Script,类似 DOS 的

     autoexec.bat。
 ○ 第十节  X Window 视窗系统简介 ○
  □ 若你在工作站主机 login,可打 startx 或 openwin 指令进入 X Window 系统

     ,进入 XWindow 後按滑鼠左键或右键不放,可看到系统选单,选择你要执行的

     程式,选 Exit 就可离开 XWindow 系统。进入 X Window 後可启动 cxterm 就

     有中文视窗。

  □ X Window 系统大而繁杂,但操作上不难,欲深入  解其功能可参阅 X Window

     的标准本 <The X Window System, Volume 3: X Window System User's Guide

     for X11R5> 。网路上也有免费的 X Window 入门指南中文本,可进各大gopher

     站查阅或抓取。



< 返 回 >