1、UNIX系统入门学习,工程部培训组-张毅,课程安排,一、UNIX起源、流派及标准 二、UNIX文件和目录 三、UNIX通用命令 四、vi编辑器,一、UNIX起源、流派及标准,1、UNIX起源,20世纪60年代由麻省理工学院、通用电器公司(GE)、ATT贝尔试验室组成一个小组,研制Multics-灵活的交互式操作系统。60年代末, ATT脱离该组织,失去了Multics使用权。 AT&T Ken.Tompson在GE-645大机上写了一个SPACE TRAVEL的游戏,玩一次75美元/分? 为了省钱,利用闲置的PDP-7玩游戏,在Dennis Ritchie的帮助下, Ken用PDP-7的汇编语
2、言重写了这个游戏。这次经历加上Multics项目的经验,促使Ken开始了一个DEC PDP-7上的新操作系统项目。,Ken和Dennis领导一组开发者,开发了一个新的多任务操作系统,称为UNICS(Uniplexed Information and Computing System)。后来这个名字被改为UNIX( CS 的谐音X)。 最初的Unix是用汇编语言编写的,一些应用是由B语言和汇编语言混合编写的。 B语言在编程时不够强大,所以Ken和Dennis对其进行了改造,并与1971年共同发明了C语言。 1973年Ken和Dennis用C语言重写了UNIX内核。UNIX成为世界上第一个用高级语
3、言写的操作系统。C语言使UNIX更容易移植,移植是UNIX最重要的优越性。,由于当时美国政府禁止AT&T经营计算机业务,所以在整个七十年代,UNIX没能作为商品进入市场,而主要是提供给学校和科研机构等非赢利单位使用 74年后,世界上所有的大学都可以以极小的代价获得UNIX的源代码,由此产生了很多重要的分支,包括一个BSD版-加州大学伯克利分校Berkeley Software Distribution。,2、UNIX发展,两大流派 两大联盟 分久必合 皆为利故,AT&T 1971年,Version 1 . 1978年,Version7 1982年,系统 III第一个商品发布版 1983年, A
4、T&T推出SVR1(system V,RELEASE 1)首次有支持的发行 1985年,AT&T 推出SVR2,文件保护和锁定,增加作业控制 1987年,AT&T 推出SVR3,增加STREAMS,RFS及TLI 1989年,AT&T 推出SVR4,统一各种规范集合 1992年,AT&T 推出SVR4.2,桌面环境 1997年,AT&T 推出SVR5,改进内核,支持64位字长,在1978年发布了版本7后,在AT&T内部担负UNIX发布的管理控制工作的组织: UNIX支持组(USG) UNIX系统开发实验室(USDL) AT&T信息系统(ATTIS) UNIX软件组织(USO) UNIX系统实验
5、室(USL),BSD起源于1974年,伯克利研究小组毕业的学生Bill Joy和Chuck Haley作了大量创新,如ex、vi、csh,这些性能后来被柔进了system V。 1973年,美国高等院校开始使用UNIX 1974 BSD 1978 2BSD 1979 3BSD 1980 4BSD 1983 4.1BSD 1984 4.2BSD第一个内含TCPIP 1987 4.3BSD 1993 4.4BSD BSD在发展中也逐渐衍生出3个主要的分支:FreeBSD,OpenBSD和NetBSD,从90年代开始到现在。当AT&T推出System V Release4(第五版本的第四次正式发布产
6、品)之后,它和伯克利的4.4BSD已经形成了当前Unix的两大流派。1987到1989年,AT&T决定将Xenix(微软开发的一个x86-pc上的UNIX版本),BSD,SunOS和System V融合为System V Release 4(SVR4)。SVR4是两大流派融合后的产物。由于当时美国政府禁止AT&T经营计算机业务,所以在整个七十年代,UNIX没能作为商品进入市场,而主要是提供给学校和科研机构等非赢利单位使用,当时的UNIX系统已经不仅仅限于AT&T和Berkeley。由于UNIX的广泛流行,它已经被移植到了许多不同的计算机系统上。而且创建了许多UNIX和UNIX类操作系统。Sun
7、 Microsystems也在他们的工作站上销售BSD UNIX。 DEC支持它自己的UNIX(叫做Ultrix),又用另一个源于UNIX的操作系统(OSF/1)替换了Ultrix。 Microsoft改写了Intel 8088系列上的UNIX,把它叫做XENIX,它的新的Windows NT操作系统也深受UNIX的影响。 IBM在他的PC,工作站和主机上使用UNIX(AIX)。UNIX几乎可以用在所有通用的计算机上。它可以运行在个人计算机,工作站,微型计算机,主机和超级计算机上。,此时,AT&T认识到了Unix价值,因此他起诉包括伯克利在内的很多厂商,伯克利不得不推出不包含任何AT&T源代码
8、的4.4BSD Lite,这次司法起诉也使很多Unix厂商从BSD转向了System V流派。 UNIX System V Release 4发布后不久,AT&T就将USL出售给了Novell。它们的Unix被更名为UnixWare, Novell期望以此来对抗微软的Windows NT,但是Novell正逢经营问题,不得不将UnixWare卖给SCO。 Novell在购买UnixWare之后的一个重要举动是将Unix商标赠送给一个非盈利的Unix组织X/Open (定义UNIX标准的产业团体) ,结束了USL与BSD以及其他厂商的纷争。 最后X/OPEN和OSF/1(Open Softwar
9、e Foundation)合并,创建了Open Group。,两大联盟,UI(UNIX International) unix国际-ATT和 Sun等公司为代表的OSF(Open Software Foundation)开放软件基金会-DEC、 IBM等公司为代表的,3、标准,POSIX是由IEEE(Institute of Electrical and Electronic Engineering)开发的,并由ANSI(American National Standards Institute)和ISO(International Standards Organisation)标准化。 PO
10、SIX表示可移植操作系统接口:Portable Operating System Interface,是为了提高 UNIX 环境下应用程序的可移植性。POSIX 并不局限于 UNIX。许多其它的操作系统,例如 DEC OpenVMS 和 Microsoft Windows NT,都支持 POSIX 标准。,FIPS FIPS的含意是联邦信息处理标准(Federal Information Processing Standard),这些标准 是由美国政府出版的,并由美国政府用于计算机系统的采购。 XPG3 X/OPEN提出了一个七卷可移植性指南,第三版Open 1989,我们将称之为XPG3。,
11、COSE,公用开放软件环境 Common Open Software EnvironmenCOSE是一个供应商联合会,其中包括IBM、HP、SunSoft、Novell公司。这些供应商联合为UNIX推出一个能与MicrosoftWindows匹敌的公用台式系统环境(CDE)。这个组织的目标是: 为上述厂商系统所支持的通用台式系统图形环境开发一个提供应用程序编程接口(API)的规范。 X/Open将获得与COSE小组定义的一个规范集相兼容的UNIX实现的UNIX商标。这个规范集称为COSE Spec 1170 APIs,它定义了提高操作系统间应用程序可移植性的一个编程接口。,UNIX标准化,19
12、85年 IEEE公布POSIX 1003 1988年 5月 DEC、IBM、HP 公布OSF(BSD)AES 1988年 12月ATT SUN公布UI (SYSTEM V) 1992年 12月NOVELL购买USL转让给X/OPEN 1993年 9月WINDOWS NT出现使OSF和UI和解,产生COSE。包括XPG4、POSIX、SUID3、SVR4.3、AES、MOTIF、TCPIP。,4、其他一些重要的分支,XENIX微软在1980年推出。Version7+4.1BSD=XENIX支持Intel 8086,80286,80386和Motorola 68000SCO UnixXienx开发
13、部门独立,成立了SCO(Santa Cruz Operation)公司,并基于AT&T System VR3.2开发了SCO Unix。 这家公司后来出售给了Caldera Systems。Caldera原来也出售Linux系统,交易完成后,新公司又被重命名为SCO Group。,SunOS BSD的一名主要开发者,Bill Joy,在BSD基础上开发了SunOS,并最终创办了Sun Microsystems。 主要成果在于:NFS,OpenLook GUI 标准。 IRIXIRIX 6.x是SGI公司的Unix,这也是一种基于Unix System V的产品。SGI的Unix图形工作站是图形
14、图象处理领域内的顶级产品。,自由的类Unix系统,GNU Richard Stallman建立了GNU项目,要创建一个能够自由发布的类UNIX系统。20年来,这个项目不断发展壮大,包含了越来越多的内容。比如Emacs,GCC。GNU 是由“GNUs Not Unix”所递回定义出的首字母缩写语;它的发音为“guh-NEW”)。 Linux 1990年,Linus Torvalds决定编写一个自己的Minix内核,初名为Linus Minix,意为Linus的Minix内核,后来改名为Linux。当GNU软件与Linux内核结合后,GNU软件构成了这个POSIX兼容操作系统GNU/Linux的基
15、础。今天GNU/Linux已经成为发展最为活跃的自由/开放源码的类Unix操作系统。,类Unix操作系统,A/UX OpenBSD DragonFly BSD AIX FreeBSD NetBSD GNU Linux Xenix Mac OS X HP-UX Solaris IRIX System V Tru64 Minix NEXTSTEP QNX LynxOS BSD SCO OpenServer,5、常见商业版本,AIX: SVR2以及一部分BSD延伸而来 HP-UX: 4.2BSD + SVR2 Tru64-unix: 4.3BSD+ 4.4BSD+System V Solaris:
16、4.3BSD+System V SCO UNIX(x86):SVR3.2 Linux(x86):遵从POSIX,SysV及BSD的扩展,UNIX有下列特性:,多任务(Multitasking) 多个进程或应用程序可以同时运行。 多用户(Multiuser) 同时可以有多个用户访问系统资源。 分布处理(Distributed processing) 通过网络使用资源。,二、UNIX文件和目录结构,文件名和目录名,一些规则: 可采用除“1”外的任何ASCII字符 以“.”开头的文件名在普通用户看来是隐蔽的。 “.”代表当前目录,“”代表上级目录。 特殊字符用反斜杆引导“”,文件结构是分层的目录树结
17、构,类似于DOS的文件结构。是一些有特定目的而组织在一起的目录、子目录和文件。 文件是一个具有符号名字的一组相关联的元素的有序集合。例如用户的源程序、数据表格、书信文稿、目标程序等 目录 (Directory) 其他目录和文件所在处 子目录(Subdirectory) 属于其他目录的所有目录,文件类型,目录文件 d 普通文件 - 链接文件 l 特殊文件,如终端、通信设备、驱动器、FIFO、SOCKET 裸设备 c块设备 b,重要目录,/-文件系统的根目录,超级用户的HOME目录 /bin-系统命令的二进制文件的存储路径 /usr -存储所有系统用户使用的程序、脚本等 /dev-设备文件 /op
18、t-附加应用软件包的根 /var-存储系统中正在变化的文件,如临时文件、日志文件、状态文件 /etc -存储系统配置文件和系统管理数据库 /home-用户主目录和文件,目录和文件的使用,绝对路径名-以/开头,从根开始 相对路径名-其它以,目录名,文件名开始 # pwd-列出当前工作目录,cd -改变工作目录 cd usr-cd dos cd /usr-cd c:dos cd -cd cd / -cd ,ls-列目录内容 -l 将文件类型、权限、所有者、文件大小等信息详细列出 -a 显示所有文件及目录 -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 ls
19、l |more-分屏显示-dir/p 例: 列出当前目录下所有以s开头的文件,越新的文件排的越靠后: #ls -ltr s* 将/bin 目录下所有子目录及文件的详细信息列出: #ls -lR /bin,more-分屏显示文本文件内容。类似cat,不过会分页显示,按(space)向下翻页,按b键就会往回滚一页,还有搜寻字串的功能。 -num 一次显示的行数 +num 从第 num 行开始显示 -d 提示使用者,在画面下方显示 Press space to continue, q to quit. ,如果使用者按错键,则会显示 Press h for instructions. -p 不以卷动的
20、方式显示每一页,而是先清除屏幕后再显示内容 +/ 在每个文件显示前搜寻该字串,然后从该字串之后开始显示 例: 显示文件名为test的文件中的内容: # more test,cat-显示文件内容 cat file-type file cat file1 file2 file3-type file1+file2+file3 cat -n file-显示行号,mkdir-创建子目录 mkdir dir-md dir mkdir -p /dir1/dir2/dir3,rm-删除文件或目录,rm file1-del file1 rm * -del *.* rm -r dir-deltree dir rm
21、 -i rmdir-删除目录条件:目录必须是空目录 rmdir dir- rd dir,cp -拷贝文件,cp file1 file2-copy file1 file2 cp -i file1 file2-提示覆盖 cp -r dir1 dir2 cp -p-属性不变,mv 移动文件或目录,mv file1 file2-ren file1 file2 mv file1 dir2-move file1 dir2 mv dir1 dir2-xcopy dir1 dir2 deltree dir1 mv i-如果目标文件存在则提示 mv -f-强制拷贝,ln-创建连接 所谓的连接(link),也就是
22、文件的别名分为两种: 硬连接(hard link):一个文件可以有多个名称,硬连接是存在同一个文件系统中; 软连接(symbolic link):产生一个特殊的文件,该文件的内容是指向另一个文件的位置。软连接却可以跨越不同的文件系统。-f : 创建连接时先将同名文件删除 -d : 允许系统管理员硬连接自己的目录 -i : 在删除同名文件时先进行询问 -n : 在进行软连接时,将连接视为一般的文件 -s : 进行软连接(symbolic link) -b : 将在连接时会被覆写或删除的文件进行备份,例: 将文件 yy 产生一个软连接(symbolic link)zz # ln -s yy zz
23、将文件yy 产生一个硬连接(hard link)xx: # ln yy xx,文件属性,$ ls l total 24094 -rw-r-r- 1 root system 176584 Jul 5 17:09 3500install.pdf -rw-r-r- 1 root system 2593 Jun 13 12:48 DXsession -rw-r-r- 1 bin bin 2476 Apr 13 1999 GENERIC lrwxr-xr-x 1 root system 7 May 31 16:41 bin - usr/bin -rw- 1 root system 501 Jun 23
24、22:31 tcr2 drwxrwxrwx 3 root system 8192 Sep 3 12:59 tmp drwxr-xr-x 29 root system 8192 Aug 31 14:22 usr lrwxr-xr-x 1 root system 7 May 31 16:38 var - usr/var -rwxr-xr-x 1 root system 9549088 Jun 1 12:29 vmunix,第2,3,4列为文件属主读,写,执行的访问标识,如第2列为-则不可读,为r 则表示可读。 第5,6,7列为文件所属组用户的读,写,执行的访问标识。 第8,9,10列为其它组用户的
25、读,写,执行的访问标识。,第2个域为该文件的连接数,如果某目录文件的连接数越大,其子目录数就越多。 第3个域为该文件的属主。 第4个域为该文件的属组。,第5个域为该文件的大小。 第6个域为该文件的创建时间。 第7个域为该文件的文件名。 第8个域如果不空的活,则为该文件所连接文件路径。,改变文件访问属性 # chmod nnn file 改变文件属主 # chown user file # chown user:group file 改变文件属组 # chgrp group file,三、UNIX通用命令,man-随机文档 # man k keyword 关键字查找 # man ls | col
26、 b ls.txt 生成文本文档 Example: man ls,Find-文件查找 命令格式: find dir -name filename command 例子: find . -name hello -print 寻找目前目录及所有的子目录内叫hello的文档. find . -ctime +7 -print 找出七天内未被更动的文档 find . -size +2000m -print 出大小超过2000 bytes的文档 find /tmp -user b1234 -print 在/tmp下属于b1234的文档,du-查看目录所占磁盘容量 命令格式: du -sk director
27、y 例子 : du dir1 显示目录 dir1 的总容量及其次目录的容量 du -sk dir1 显示目录 dir1 的总容量,以k bytes为计量,grep-搜索字符串 命令格式: grep string filename M 以M开头的行,表示开始的意思 M$ 以M结尾的行,$表示结束的意思 0-9 以数字开始的行,内可列举字母 124ab 以1,2,4,a,或b开头的行 b.503 句点表示任一字母 * 星号表示0个以上的字母(可以没有) + 加号表示1个以上的字母 . 斜线可以去掉特殊意义 cat passwd | grep e ps ef|grep t* grep . myfil
28、e.txt 列出所有以句点开头的行,diff-比较文档或目录之不同内容 命令格式:diff -r name1 name2( name1 name2 可同时为档名,或目录名称.) 例子 : %diff file1 file2 比较文档 file1 与 file2 内,各行之不同处. %diff -r dir1 dir2 比较目录 dir1 与 dir2 内,各文档之不同处. cmp-比较文档相同部分 命令格式:cmp file1 file2,who-查看系统注册用户 id-查看当前用户用户号和组号 passwd-修改用户口令 命令格式:passwd username 无用户参数修改本用户口令,用
29、户口令必须至少6个字符长,最大8个字符,口令中至少两个字母字符及一个数字字符 su-转换用户 命令格式: su - username 无用户参数为转换到超级用户 - :执行新用户环境设置,四、vi编辑器,vi file vi -r -只读模式,命令模式,i,I,o,O,a,A-进入输入模式, :/?-最后一行模式,最后一行模式,:q -退出 :w -写文件 :wq -存盘退出 :q! -Quit : wq! -存盘退出,输入模式,进入输入模式 a (append) 由光标之后加入文本。 A 由该行之末加入文本。 i (insert) 由光标之前加入文本。 I 由该行之首加入文本。 o (ope
30、n) 新增一行於该行之下供输入文本之用。 O 新增一行于该行之上供输入文本之用。 离开输入模式 按ESC键即可结束输入模式。,h 向左移一个字符。 j 向上移一个字符。 k 向下移一个字符。 l 向右移一个字符。 0 移至该行之首 $ 移至该行之末。 移至该行的第一个字符处。 H 移至视窗的第一列。 M 移至视窗的中间那列。 L 移至视窗的最后一列。 G 移至该文件的最后一列。,+ 移至下一列的第一个字符处。 - 移至上一列的第一个字符处。 ( 移至该句之首。 ) 移至该句之末。 移至该段落之首。 移至该段落之末。 nG 移至该文件的第 n 列。 n+ 移至光标所在位置之后的第 n 列。 n-
31、 移至光标所在位置之前的第 n 列。,删除、复制及修改命令介绍,d(delete)、c(change)和y(yank)这一类的命令在 vi 中的命令格式为: Operator + Scope = command d 删除。删除文本,但会将删除文本复制到内存缓冲区。 y 将文本复制到缓冲区。 p 放置(put),与 d 和 y 配合使用。可将最后delete或yank的文本放置于光标所在位置之行列下。 c 修改(change),类似delete与insert的组合。删除一个字符、句子等文本,并插入新建文本。,e 由光标所在位置至该字串的最后一个字符。 w 由光标所在位置至下一个字串的第一个字符。
32、 b 由光标所在位置至前一个字串的第一个字符。 $ 由光标所在位置至该行的最后一个字符。 0 由光标所在位置至该行的第一个字符。 ) 由光标所在位置至下一个句子的第一个字符。 ( 由光标所在位置至该句子的第一个字符。 由光标所在位置至该段落的最后一个字符。 由光标所在位置至该段落的第一个字符。,dd 删除整行。 D 以行为单位,删除光标后之所有字符。 cc 修改整行的内容。 yy yank整行,使光标所在该行复制到内存缓冲区。移动与复制 利用 delete 及 put 命令可完成文本搬移之目的。 利用 yank 及 put 命令可完成文本复制之目的。 yank 和 delete 可将指定的文本复制到内存缓冲区,而由 put 命令可将缓冲区内的文本复制到屏幕上。,例: (1)剪切一行 在该行执行 dd 光标移至目的地 执行 p (2)复制一行 在该行执行 yy 光标移至目的地 执行 p,取消前一动作(Undo),即恢复到执行上一命令前的内容。 u 恢复最后一个命令之前的结果。 U 恢复光标该行之所有改变。,