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 b1503 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)位元为 on2000 程式执行时,设定使用者所属团体识别码(SGID)位元为 on 1000 sticky bit on,程式执行後会常驻记忆体。 符号法 -- chmod [ ...] <档案> u (user) 档案拥有者 g (group) 所属 group o (other) 其他使用者 a (all) 包括 u, g, o + 加上存取权 - 除去存取权 = 重新设定存取权 <存取权> 有 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的标准本 。网路上也有免费的 X Window 入门指南中文本,可进各大gopher 站查阅或抓取。
上一篇:Linux文件系统的一些经验分享