卢晓伟13641895741QQ:290448185Mail:baodelu@gmail.comUNIX/Linux操作系统基础2UNIX操作系统的历史1965年MIT,AT&T,GE联合开发的Multics(MultiplexedInformationandComputingSystem,多路信息与计算系统)1969年曾参与Multics项目的KenThompson和同事DennisRitchie在DEC的PDP-7上创建了一个多任务系统1970年KenThompson和同事DennisRitchie在PDP-11/20上用汇编语言开发了UNIXV.1,并沿用UNIX至今1973年KenThompson和DennisRitchie使用C语言重写了UNIX内核C语言编写的UNIX操作系统短小精悍,容易维护,且能按照个人意愿修改代码,也容易移植到其他计算机上。1974年相继推出了第4版,第5版,第6版后UNIX已经在贝尔实验室内广泛运用。1979年发布了UNIXv.7版,这是我们今天使用的现代UNIX的鼻祖1982年AT&T推出了基于UNIXv.7开发的UNIXSystemIII这是第一个商业版的UNIX操作系统1983年AT&T推出了UNIXSystemV第一版合并了加州大学伯克利分校开发的UNIX系统的一些功能特性,包括著名的vi.1985年AT&T推出了UNIXSystemV第二版,特性包括提供了断电和系统崩溃时的文件保护,文件和记录锁,作业控制以及增强的系统管理功能。20世纪80年代末AT&T统一了各种UNIX系统分支包括SystemV,BSD系列,SunOS等等,这些变体全部并入UNIXSystemV4.0也就是著名的SVR4大多的现代商用UNIX版本都是根据SVR4为基础来开发的。3主要的UNIX及其变体介绍:1.伯克利版UNIX系统:来自于加州大学伯克利分校(U.C.Berkeley),很多重要的UNIX变体都是基于伯克利早期版本的UNIX系统发展而来的。1974年伯克利从UNIX第四版开始引入UNIX系统。伯克利版UNIX系统的开发从KenThompson于1975年到计算机科学系休假时开始的。当时的研究生BillJoy和ChuckHaley为伯克利开发了许多软件,他汇集了一套软件包称为伯克利软件发行(BerkeleySoftwareDistribution,BSD),BillJoy开发了著名的vi,Cshell,目前的三大免费BSD变体版本,NetBSD,OpenBSD,FreeBSD。42.GNU与LinuxRichardStallman发起的GNU(GNUisNotUNIX)活动,创建了非营利性的自由软件基金会(FreeSoftwareFoundation),支持创作和共享自由软件。目标是开发一个类似于UNIX的GNU操作系统。1991年芬兰赫尔辛基大学的学生LinusTorvalds在个人计算机上创建了一个新的类似于UNIX操作系统的内核。3.SolarisSun的UNIX操作系统最初叫做SunOS基于UNIXsystemV第二版和4.3BSD开发。目前最新版本是Solaris10,可以运行在SPARC和x86平台的服务器和工作站上。54.AIXAIX(AdvancedInteractiveeXchange)高级交互执行体AnIBMUNIX-AIXAIX基于SVR3开发,于1986年发布。随后AIX开发引入了4.3BSD源代码,最新版是AIX7.1,但未大规模使用。目前比较多的AIX使用版本是AIX5.3AIX6.1,AIX4.3.3也有在使用IBM于2001年发布了AIX5L,AIX5.3是大规模在使用的版本。AIX有几个非常显著的特点:基于JFS2的文件系统,smit系统管理工具。AIX是第一个支持64位硬件的64位UNIX操作系统65.HP-UXHP公司开发的UNIX操作系统称为HP-UX,最初版基于SVR2发布于1986年。目前最新版本为HP-UX11.31,目前11.11,11.23,11.31都有使用,少数的10.2版也有使用HP-UX主要在HP公司的9000系列PA-RISC计算机和安腾平台计算机上使用6.UnixWareSCO公司的UNIX操作系统,曾经X86平台上使用最广的UNIX操作系统,有openserver系列和unixware系列,基于SVR5开发7.Tru64UNIX前身是DEC公司的DigitalUNIX8.MacOSX基于Darwin内核开发的UNIX操作系统(Darwin内核基于freebsd5,mach37通用UNIX操作系统的操作怎样登录一个UNIX操作系统网络:telnet,ssh串口终端X图形客户端:xmanager,vnc等HMC普通用户的提示符:$超级用户root的提示符:#8文件与目录操作对于UNIX文件及目录的主要特点:UNIX系统下文件名严格区分大小写一般来说UNIX的文件名使用字母,数字,下划线作为文件名UNIX中的文件扩展名并不是必须的,扩展名只是区别文件类别的方式UNIX中的目录概念等同于windows中的文件夹以“/为顶层根目录,每个登录的用户都有以用户名为目录名的主目录9UNIX中的文件类型:普通文件:系统中的大多数信息存储在普通文件中,普通文件包含数据例如文本文件,二进制可执行文件等目录文件:目录也是一种文件是是存储其他文件的文件符号链接文件:链接文件分为硬链接和符号链接特殊文件:设备文件10链接文件的一些概念如何在几个不同目录中访问一个文件,而不用复制多个文件副本?可以使用链接,链接分硬链接和软链接(符号链接)硬链接特点:在链接方式下只有一个文件数据存在于磁盘中,但可以出现在目录结构的不同位置。ln命令用于创建硬链接文件,使用户能够在文件系统的多个目录位置访问同一个文件,注意硬链接不能跨文件系统建立ln命令用于创建硬链接文件,是用户能够在文件系统的多个位置访问同一个文件。软连接:可以消除硬链接的局限性,符号链接文件是一个只包含其他文件名字(包括绝对路径名)的文件。操作系统对符号链接文件的操作是直接对符号链接文件所引用的文件的操作,实际上符号链接文件是指向其他文件的指针,和win下的快捷方式类似ln–s命令用于创建符号链接文件11常用的文件和目录操作命令1.列出目录内容:ls(list)常用选项:-F:输出文件名列表,在文件名后增加标记符号表明文件类型-R:递归的列出当前目录及其子目录下的所有文件-a:列出目录下的所有文件包括隐藏文件-l:以列表的形式列出-t:时间选项ls-l输出含义第一行:是以数据块为单位的总的磁盘空间占用量之后一共七列第一列:第一列有10个字段,第一个字段表示文件类型12常见的文件字符类型如下:-普通文件c字符特殊文件d目录l符号链接文件b块特殊文件p管道文件之后的九位是文件目录的访问权限信息第二列:链接计数第三列:文件的所有者第四列:文件的属组第五列:是以字节表示的文件大小第六列:创建或是最后一次更新文件的日期第七列:文件或是目录名132.显示文件内容:cat(concatenate):cat命令显示文件中的所有内容,但不包括文件头,标题,文件名称,文件大小等信息3.更换目录:pwd(presentworkingdirectory):显示当前目录位置cd(changedirectory):cd后可以跟绝对路径名和相对路径名~表示用户主目录4.文件和目录的移动和重命名:mv(move):UNIX里没有单独的为文件改名的命令,文件改名是mv另外一个功能mv有个i选项在覆盖文件前进行提示145.文件的复制:cp(copy):cpfile1file1.bakcp也有i选项进行复制文件前提示-r选项可以复制整个目录结构6.链接文件:ln:创建一个硬链接例:ln/home/d1/d2/file1file1ln-s创建一个符号链接例:ln–s/home/d1/d2/file2file27.删除文件:rm:rm是UNIX下删除命令,要慎用!rm也有i选项切忌rm删除无法恢复不像windows那样除非磁盘拿去做专业恢复158.创建目录:mkdir:9.删除目录:rmdir:rmdir用于删除空目录,如果目录中有文件则用rm-rfolder来删除10.查找文件:1.locate:按照给定的文件名模式检索数据库,缺点是需要不断更新数据库命令才能正常工作2.find:用于检索一个或多个目录内容包括其中的所有子目录语法:find目录(当前目录,绝对路径)选项(-name,-mtime)需要检索的文件-print(不使用print的话只检索不显示注意:find命令会跳过没有访问权限的目录,find中需要检索的文件名可以使用通配符例如find/-name*file-print16-name选项指定文件名-mtime选项用于用于指定自上一次修改文件后迄今为止的天数-user选项用于检索属于特定用户的文件例:使用find命令检索文件名为*conf属于用户root一个星期前修改的文件find/-name*conf-mtime+7userroot-print17Shell基础知识常用的shell:Bourneshell(sh)Cshell(csh)kornshell(ksh)Bourneagainshell(bash)什么是shell呢?shell是操作系统内核和用户的接口,是个命令行解释器怎样运行shell?用户名密码登陆后#或是$提示符怎样注销shell?1.Shell提示符下用ctrl-D退出shell环境2.exit18Shell的使用:Shell命令之间可以使用;组成命令组使用通配符“*”,“?”,“[…]”“*”能够匹配任意长度的字符串例:*html能够匹配以html结尾的任何文件名note*能够匹配以note打头的任何文件名*kill*能够匹配文件名中包含任何kill字符串的文件名“?”能够匹配任何一个单一的字符例:email?能够匹配含有email,其后有且仅有一个单一字符的任何文件名“[…]”中列出的一组字符表示只需匹配其中任意一个字符例:[klj]mf能够匹配kmf,lmf,jmf文件名output[a-d]能够匹配outputa,outputb,outputc,outputd19标准输入与输出命令的输出数据可以发送到屏幕,存储到文件中,或用于另一个命令的输入。大多数命令均可以接受从键盘,文件或由另一个命令的输出提供的输入数据。命令无需知道输入的来源或输出的去向,命令与输入之间的关系由shell根据命令行的指令来建立,通过IO重定向的机制实现IO重定向包括管道重定向和文件重定向管道重定向:管道符号“|”指示shell把一个命令的标准输出作为另一个命令的标准输入,使用管道可以将各个命令连接在一起文件重定向:重定向符号“”可以吧命令的输出传递给文件“”符号表示吧命令的输出数据追加到文件末尾,而不是覆盖文件20后台命令命令行结尾的“&”符号指示shell以后台方式执行命令配置shell当注册的shell启动时,将在用户目录下寻找某些文件,这些文件锁包含的命令可用于配置用户的工作环境sh:运行.profile配置文件的命令ksh:使用.profile配置文件,此外用户可以在自己的.profile文件中设置env变量,使ksh能够读取第二个配置文件中的命令,第二个配置文件名通常为.kshrcbash:使用.bash_profile配置文件,如果此文件不存在,bash会寻找.profile文件。.bash_profile文件经常包含一行设置,使bash能够运行第二个配置文件.bashrc中的命令,当用户注销bash时,则运行.bash_logout文件中的命令21Shell配置文件shell不解释以“#”为起始字符的行或“#”后的任何文本。所以可以利用这点在配置文件中增加注释shell变量shell提供了变量定义机制,变量用于存放信息,shell变量用于定制程序与用于之间的交互方式变量名一