版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE第2章Linux基础本章提要:本章介绍如何使用Linux、Linux的用户界面、Linux基础命令、Linux文件系统、Linux文件属性、Linux文件备份和压缩以及进程管理。此章属于入门知识部分,读者熟练掌握本章各知识点,对后章能熟练操作Linux系统至关重要。2.1使用Linux2.1.1开机用户接通Linux主机电源以后,首先会进入一个引导界面,如图2-1所示。下面以RedHat9的grub为例。图2-1在上图的框内,有一个可以上下移动的光标,可以选择你想进入的操作系统或者模式,然后按Enter键进入系统。2.1.2注册用户接通Linux主机电源,主机显示启动有关信息,稍待片刻显示RUTU界面,如图2-2所示,表示处于注册状态。图2-2此处显示了所用Linux的发布版名称,代号以及核心版本、机器类型等信息。不同的发布版都有类似的界面。2.1.3控制台操作出现系统提示符后,表示系统处于待命状态,此时用户可以输入Linux能够接受的命令,Linux下命令的格式一般是:<命令>-<可选项1>-<可选项2>…<可选项n><参数1><参数2>…<参数n>其中,可选项决定命令执行的形式,一条Linux命令能附带的可选项多达数十种,它们之间的组合数目就更加庞大了。而参数则是命令执行所需提供的一些相关信息。有一些命令可以完全不用参数,而有一些则可能需要许多参数。注意:Linux的命令、可选项、参数均区分大小写。在输入命令的过程中如果发现输入出错,可按键盘上的退格键往回删除刚输入的出错字符,再重新输入。如果出错的字符位于离光标当前位置较远的地方,也可以用左光标键将光标移至出错字符处右端,再按退格键删除,若是漏打字符则可在该处重打插入。按上、下光标键可以使用以前打过的命令,当经常需要运行某条形式相似的命令时,此功能特别有用,甚至还可以返回以前注册时使用过的命令。输入的命令以回车结束,系统将分析用户输入的命令,如果该命令不正确,系统将给出错信息,如果命令正确,系统将执行该命令所对应的功能,如图2-3所示。图2-3命令运行过程中,会在用户所在终端的屏幕(标准输出)输出该命令运行的一些信息和结果。若输出的内容较多,一个屏幕容纳不下,屏幕将会把原有内容上翻,新的内容继续在后面显示,如果屏幕翻滚速度太快,用户为了看清输出的结果,可以用<Ctrl>+s组合键暂停输出,然后,按<Ctrl>+q又可重新恢复输出。命令执行完毕后,将返回系统提示符下。此时,用户又可以继续输入下一条命令,如此往复,直到用户退出为止。若一条命令运行了很长时间都没有停止,用户可以用组合键<Ctrl>+c中断该命令的执行,重新返回提示符。2.1.4进入图形界面(1)用超级用户登录Linux,再运行startx,如图2-4所示。图2-4(2)输入Enter,出现一系列的信息以后,按提示输入。2.1.5远程管理LinuxLinux有个比较方便的管理方法——远程登录。现在比较常用的远程管理方法有Telnet和SSH。Telnet是以前比较常用的一种管理工具,只要在Server上面启动Telnetd程序,并且联通了Internet,那么,就可以从Internet的任何一个地方来管理它了。但是telnet在所有的指令传送过程中都是使用明文的,就连用户名密码都不例外。所以,在考虑安全问题的前提下,经过SSL加密的SSH工具就成了人们登录管理远程计算机的比较理想的工具。在Linux中使用SSH客户端。命令格式:ssh–l<用户名><服务器端地址或者域名>如登录远程域名为的机器:[root@ibmroot]#ssh-lzgyTheauthenticityofhost'()'can'tbeestablished.RSAkeyfingerprintis87:94:0a:0a:c9:64:51:46:c4:2a:39:d4:1a:55:4c:46.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded'localhost'(RSA)tothelistofknownhosts.zgy@'spassword:Lastlogin:SatDec621:29:252003from[root@testroot]#在Windows中使用SSH登录工具。支持SSH的常用工具有Sterm、SecureCRT等等。现在用SecureCRT来举例。(1)首先安装SecureCRT。运行SecureCRT,如图2-5所示。图2-5(2)单击“NewSession”,弹出如图2-6所示对话框,在Name中输入好记的名字,在Protocol中选择协议,一般有ssh1和ssh2两项可以选择,一般服务器两者都支持。图2-6(3)在“connect”对话框(如图2-7所示)中,选择你想远程管理的设备,然后单击“Connect”。(4)如果是第一次登录,客户端会要求生成密钥。在“NewHostKey”对话框中单击“Accept&Save”即可,如图2-8所示。图2-7图2-8(5)输入用户名。在RedHat中默认可以用超级用户登录,用户名区分大小写,如图2-9所示。(6)输入刚才输入的用户名对应的密码,区分大小写,如图2-10所示。图2-9图2-10(7)登录完成以后的界面如图2-11所示,这样就可以对远程计算机进行操作了。图2-112.1.6注销当用户停止使用Linux时,需要向系统注销,使终端回到“login:”状态,以让其他用户继续使用该终端注册进入主机。进行注销的命令是:logout↙或者exit↙有时,也可用组合键<Ctrl>+d进行注销,用户在连线期间运行的尚未完结的程序,除非有特别的指定,将同时被终止。2.1.7关闭系统关闭Linux主机是系统管理员的工作。切记千万不要直接切断电源。1.Shutdown-停止系统的一种安全和周到的方式shutdown[<可选项>]<时间>[<警告>]↙首先关闭系统,常用的<可选项>有:-r关闭系统后重新启动。-h关闭系统后进入停机状态。-k不真正关闭系统,只是向各用户发送警告信息。<时间>表示关闭系统的时间,使用Linux系统惯用的POSIX标准时间格式字符串,形式如下:<时间串>[<日期串>][<偏移量>]<时间串>的格式为:hhmmhh为24小时制记时,mm为分;如果采用12小时制,在hhmm后要加上am或pm加以区别。例如时间串“1305”及“0105pm”均表示13时5分。有几个特别的<时间串>,它们是:NOON(正午12:00),MIDNIGHT(午夜00:00),TEATIME(下午16:00),now(现在)。now<日期串>格式为:MMDDYYMM表示月,DD表示日,YY表示年份,或:<月><日>[<年>]此处<月>使用英文缩写。例如“JAN121999”、“JAN12”。日期串也可用TODAY表示当天,TOMORROW表示明天,或用MON、TUE、WED、THU、FRI、SAT、SUN<偏移量>表示“……之后”,写法为:+<数目><时间单位><时间单位>可以是minute(分钟)、hour(小时)、day(天)、week(周),必要时使用复数。例如:“+15minutes”表示15分钟之后,“+1week”表示一周后等等。例如:请写出以下标准时间格式串:(1)1999年1月20日下午2时16分答案:1416JAN201999(2)2周之后的上午10时。答案:10am+2weeks(3)15分钟之后。答案:now+15minutes或+15minutes<警告>是用双引号括住的字符串,表示在关机前首先向各在线用户发出的警告信息。例如:shutdown–r+5minutes"Systemwillrebootin5minutes!"表示在5分钟后将关闭系统并重新启动,每个在线用户都会收到相应信息。Shutdown–hnow↙表示马上关闭系统并停机,此时控制台上将显示如图2-12所示。图2-12提示系统已经停机。系统管理员也可在主机键盘上按<Ctrl>+<Alt>+<Del>键,其作用等价于“shutdown–rnow”,待用户重新启动后,便可切断主机电源。2.Halt-关闭系统的简单方法Halt命令执行关闭操作系统所需要的基本任务。Halt记录关机的情况,中止那些非必需的进程,执行sync系统调用,等待文件系统写完成,然后停止内核。这种关闭计算机的方法相对比较简单,不等待马上就关闭计算机。对于一个人在操作的计算机来说比较简便,但是对于多人同事操作的计算机来说,可能会意外停止其他人正在进行的操作。3.Reboot-快速而不洁的重新启动Reboot几乎和halt一样,只是它让计算机从头重新启动,而halt是关闭计算机。Reboot由shotdown–r来调用,与halt类似。2.2Linux的用户界面BASH是BourneAgainShell的简写,是RedHat最常用的shell。shell是一种命令语言解析器(command-languageinterpreter)。它是用户和内核的一个接口,它将用户输入的没一个命令进行解析,然后传给内核。Shell在用户成功登录系统是启动,始终作为用户和内核的交互手段,直到用户退出系统。每个用户都有一个默认的shell,在/etc/passwd文件中指定。1.几个常用的shell命令几个常用的shell命令如表2-1所示。表2-1几个常用的shell命令命令说明alias设置bash别名bg使一个被挂起的进程在后台继续执行cd改变当前工作目录exit退出当前shellexport使变量的值对当前shell的所有子进程都可见fc用来编辑历史命令列表里的命令fg使一个被挂起的进程在前台继续执行help显示bash内部命令的帮助信息kill终止某个进程pwd显示当前工作目录unalias删除已定义的别名2.bash的几个变量bash的几个变量如表2-2所示。表2-2bash的几个变量变量说明EDITOR,FCEDITbsahfc命令的缺省编辑器HISTFILE用于贮存历史命令的文件HISTSIZE历史命令列表的大小HOME当前用户的用户目录OLDPWD前一个工作目录PATHbash寻找可执行文件的搜索路径PS1命令行的一级提示符PS2命令行的二级提示符PWD当前工作目录SECONDS当前shell开始后所流逝的秒数3.bash的特点1)命令补全在bash下输入命令时不必把命令输全shell就能判断出你所要输入的命令。如,要输入telnet这个命令,直需要打teln然后按下Tab就可以补全为telnet了。只要输入命令的一部分,再按下Tab键,如果输入的一部分命令已经在系统中是独一无二的情况下,bash将帮你补齐命令并显示在屏幕上。如刚才的例子,以teln开头的命令只有telnet了,所以,bash可以补全它,效果和用户输入整条命令效果是相同的。这个命令补全的功能在平时工作的时候能节省时间以及减少背命令的难度。2)通配符另一个使命令输入变得更简单的方法是在命令中使用通配符。bash支持三种通配符:*匹配任何字符和任何数目的字符。?匹配任何单字符。[…]匹配任何包含在括号里的单字符。3)命令历史bash支持命令历史记录。bash把用户输入的命令保存在一个历史列表。历史文件的文件名被一个叫HISTFILE的bash变量指定。历史文件的缺省名字是.bash_history。这个文件通常在你的用户目录中。使用历史记录列表最简单的方法是用上方向键。按下上方向键后最后输入的命令将出现在命令行上。再按一下则倒数第二条命令会出现,以此类推。如果上翻多了的话也可以用向下的方向键来下翻。也可以使用history<N>来显示前n条命令。显示在命令行上的历史命令可以被编辑,但这里编辑的只是历史命令的格式,并不能改变原来已经执行完成的命令。4)别名命令别名通常是其他命令的缩写,用来减少键盘输入。如:aliasls="ls–color"那么,在shell提示符下输入ls命令,其实实际运行的是ls–color命令。这是一些很多用户认为有用的别名,你可以把它们写入你的.profile文件中提高工作效率。取消别名用unalis。如取消上例别名:unaliasls5)重定向输入重定向用于改变一个命令的输入源。一些命令需要在命令行里输入足够的信息才能工作。输入重定向并不经常使用因为大多数命令都以参数的形式在命令行上指定输入文件的文件名。尽管如此,当你使用一个不接受文件名为输入参数的命令,而需要的输入又是在一个已存在的文件里时,你就能用输入重定向解决问题。6)管道管道可以把一系列命令连接起来。这意味着第一个命令的输出会通过管道传给第二个命令而作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,以此类推。而管道行中最后一个命令的输出才会显示在屏幕上(如果命令行里使用了输出重定向的话,将会放进一个文件里)。7)提示符bash有两级用户提示符。第一级是经常看到的bash在等待命令输入时的提示符。缺省的一级提示符是字符$(如果是超级用户,则是#号)。可以通过改变bash的PS1变量的值来改变你的缺省提示符。把bashshell的提示符改为指定的字符串。当bash期待输入更多的信息以完成命令时显示第二级提示符。缺省的第二级提示符是>。如果你要改变第二级提示符,可以通过设置PS2变量的值来实现。8)作用控制作业控制能够控制当前正在运行的进程的行为。特别地,你能把一个正在运行的进程挂起,稍后再恢复它的运行。bash保持对所有已启动的进程的跟踪,你能在一个正在运行的进程的生命期内的任何时候把它挂起或是使它恢复运行。按下<Ctrl>+Z使一个运行的进程挂起。bg命令使一个被挂起的进程在后台恢复运行,反之fg命令使进程在前台恢复运行。这几个命令在当用户想在后台运行而意外的把它放到了前台时,经常被用到。当一个命令在前台被运行时,它会禁止用户与shell的交互,直到该命令结束。这通常不会造成麻烦,因为大多数命令很快就执行完了。如果你要运行的命令要花费很长的时间的话,我们通常会把它放到后台,以使我们能在前台继续输入其他命令。9)bash配置文件为了保存这些用户化配置,必须把它们保存到一个bash的初始化文件里。你能把任何想每次进入bash都执行的命令放到初始化文件里。这个文件里最常见到的命令通常是alias和变量的初始化。在RedHat9.0中,有几个文件,用户目录下.bash_profile和.bashrc以及/etc/bashrc。2.3基础命令2.3.1命令的输入与编辑在shell提示符下面直接输入命令。如在bash下面telnet到远程,如图2-13所示。图2-13在图2-13的情况下,光标停留在最后,直接按<Enter>即命令计算机执行telnet的命令。这是还可以移动光标,按退格键删除光标前面一个字符,按删除键删除光标上方的字符,直接输入是在光标前插入字符。也可以利用bash的一些特性,输入teln+<TAB>+。这样的效果和输入telnet相同。2.3.2修改口令若用户是首次注册到主机,一般首先要为自己添加(修改)密码,设置密码的命令是passwd,用户在系统提示符下输入:passwd↙系统显示如图2-14所示。图2-14用户首先输入当前密码,然后输入新的密码,再重打一遍新的密码,重打的目的是为了防止用户输入出错。如果能出现最后一行提示,表示新密码已被系统接受。Linux的密码最长不能超过8个字符,若用户输入了过长的密码,将只有前8位是有效的。另外,用户选择密码时,最好选择字母、数字、特殊符号的混合组合,而且最好用满8个字符,例如:x+y=1234w2xc34fe5*3a=15a#e34%^&I等。不要选用纯粹由数字或字母——特别是英文单词或汉语拼音组合——组成的密码,例如:19950809morningabc1234ZhaoBiao等。过于简单或有规律的密码是很容易被破解的,会造成系统安全性方面的漏洞。在一些版本的Linux中,系统会在用户设定密码时自动检查密码的安全程度,如果被认为太简单即所谓的弱密码(weakpassword),系统会拒绝接受。只有root才可以强迫系统接受弱密码。一般来说,用户只能修改自己的密码,但root可以修改任何用户的密码。方法如下:passwd<用户账号>↙例如:用户h1忘记了自己的密码,现由root为其重新设定,如图2-15所示。图2-15注意:本章及后面章节中出现的符号“↙”指的是按回车键。2.3.3查询及修改日期时间用户在系统提示符下可以通过一些命令来获得主机的一些简单信息。例如:要观察主机的时间设置,可用命令:date↙系统显示:MonDec801:06:47GMT2003表示当前时间是北京时间(CST——ChinaStandardTime)2003年12月8日1时06分星期一,如果要显示格林威治时间,可用可选项-u:date-u↙系统显示:MonDec801:07:15UTC2003如果用户以root身份注册,还可以修改日期、时间,方法是:dateMMDDhhmm[[CC]YY][.ss]↙其中,date后面的部分是日期字符串,表示要修改的日期时间,MM代表月份,DD代表日期,hh代表时,mm代表分,CC代表年份的头两位,YY代表年份的后两位,[]表示括号括住的内容是可以省略的(以下同),如果年份被省略,则表示为当年,ss代表秒。例如:将当前时间改为2004年1月1日0时整,可用:date0101000004↙2.3.4观看日历用户可用命令cal观看本月的月历,如图2-16所示。图2-16如果要观看指定的年、月的日历,可用:cal[月][年]↙例如:cal903↙可以观看2003年9月的月历。cal命令有两个可选项:-y可以显示整年的日历,此时一般一个屏幕放不下所有的信息,按输出暂停键又较麻烦,此时可用以下用法:cal–y|more↙“|”是管道符号,more是通用输出暂停程序,我们将在以后对其作详细介绍。使用此方法后屏幕在显满一屏后将自动暂停输出,并在屏幕下方显示“more”的字样,表示还会有后续输出,如图2-17所示。图2-17按回车键,屏幕将会上滚一行,按空格键将往上翻一屏,直到完成全部输出为止。cal命令的另一个可选项是-j,用于显示Julian式月历,即以该年1月1日到该天的天数作为日期的记录方法,例如输入:cal–j1203↙结果显示如图2-18所示。图2-18当一条命令后带多个可选项时,可以将它们合并在同一个“-”之后。例如:cal-j-y03等价于cal-jy03。2.3.5清屏当屏幕上显示了太多的内容以至显得杂乱时,可用命令:clear↙进行清屏。清屏后,屏幕上的内容将被全部清除,系统提示符定位在屏幕左上角处。2.3.6获取用户信息有时候,一个用户可能有多个注册账号,而又忘记了自己是以哪一个账号注册到主机上的。此时可通过下列方法之一获得自己的注册信息:(1)观察系统提示符,但有些主机的系统提示符的设定未必能提供用户的注册信息。(2)使用命令:logname↙系统显示:root表示用户是以账号root进行注册的。另外一条命令:whoami↙也起类似的作用。如果还想了解在线的其他用户的注册情况,可以用命令:who↙系统显示如图2-19所示。图2-19与主机连接的用户有2人,使用的用户名是root。其中一个是从tty1(实际上是主机控制台)登录,登录时间是11月28号22点04分。还有一个是从8上面登录上来的,时间是12月8号21点54分。使用可选项可获得更多的信息。例如-I,可得到用户发呆(idle,即没作任何操作)的时间。2.3.7与其他用户进行简单通讯注册后,如果有其他在线用户,可通过命令write向另外一个用户发送信息,用法是:write用户账号[@主机名][终端号]↙如果所在的系统是多主机,或发送的对象用一个账号同时在多个终端上注册,则可能要指明<主机名>或<终端名>,否则只须指出用户账号即可。例如:writerootttyp1↙此时,光标停在下一行,如图2-20所示。图2-20用户可以输入要发送的信息,每一句信息以回车结束。要结束write状态,按<Ctrl>+c键中断即可。接收方的屏幕上显示如图2-21所示的界面。图2-21接收者按回车键将重新返回提示符。使用write命令,在线用户之间可以很方便地互相交谈,交换信息。有时,用户专注于某项工作,不希望被其他用户发送过来的信息所打扰,可使用命令:mesgn↙进行屏蔽,此时只有root才可向该用户发送信息,其他用户在使用write命令时,系统将显示:write:Permissiondenied表示对方处于信息屏蔽状态。要观看自己的信息接收状态,可以输入:mesg↙若显示“isy”,表示可以接收,但如果显示“isn”则表示自己处于屏蔽状态。要观看所有在线用户的信息屏蔽情况,可用命令:who-w↙例如,显示如图2-22所示。图2-22其中带“-”符号的表示其处于信息屏蔽状态。如果用户想恢复接收信息,只须简单地输入:mesgy↙2.3.8观看主机信息用户可通过命令:uname↙观看主机的配置情况,例如系统回应:Linux表示主机使用的是Linux操作系统。要得到更详细的信息,可输入:uname-a↙显示如图2-23所示。图2-23从左到右分别显示:操作系统名称、主机名、操作系统核心版本、发布版版本、核心生成的时间、CPU硬件类型等。2.3.9寻找命令使用方法Linux具有很好的联机文档,当用户不知道该如何去使用一条命令时,可用:man<命令>↙寻求详细的帮助信息,例如:要了解who命令的详细用法,可输入:manwho↙显示如图2-24所示。图2-24多数情况下,帮助信息会超过一屏,用户可用<PgUp>键或<PgDn>键实现往上或往下翻屏,或用上下光标键移行。观看完毕,按q键退出。2.4文件系统2.4.1Linux文件Linux可以支持长达256个字符的文件名称,在命令中如果以文件名称作为参数,则文件名称中不能直接使用以下字符:!@#$%^&*()[]{}‘“\/|;<>空格这些字符具有特殊含义(称为“元字符”),如果出现在文件名称中并在命令中使用的话,会产生“多义性”。如果一定要使用这些字符必须在其前面加上转义符“\”,以取消其特殊含义,这种使用方法称为“引用”。例如:判断以下文件名称如果在命令中作参数时的合法性。abcdef.12345happyhours(中间空白处为一空格)let’s_gomyprogram(99.1.20)myprogram\(99.1.20\)my\\program100%FULL123/456注意:在Linux中的文件名称是区分大小写的,“abc”与“ABC”所代表的是不同的文件。文件名称中的小数点有时被称为“分隔符”,最后(最靠右)的一个分隔符右端部分称为文件名称的“后缀”,后缀往往用于辨别文件的性质。例如,以下文件:bbssec.cbbsboa.cbbsall.cauthorsearch.c都是以“.c”作为后缀,一般约定凡是以“.c”作为后缀的文件是C语言编写的源程序文件。其他一些经常使用的后缀有:.txt:一般文本文件。.doc:信息文档。.sh:shell过程文件。.html:HTML超文本文件。.pl:PERL语言编写的程序文件。.c:C语言程序文件。.o:编译程序产生的目标文件。.tar:tar命令产生的备份包文件。.gz:gzip命令产生的压缩包文件。.rpm:由rpm产生的文件包。等。如图2-25所示“bbsall.c“是一个C程序文件,bbs2www.h是C程序的头文件。用户一般最好遵从系统的这些约定,以免造成不必要的误会。在以后的图例中我们将用正方形“□”表示文件,如图2-26所示,图中的“○”表示文件存储的地方,直线表示从属关系。此图表明了a、b、c、d四个文件存储在同一处。图2-25图2-262.4.2目录结构在Linux中(实际上是在几乎所有的操作系统中)就是以这种形式进行存储介质管理的,上述的所谓“分类”在术语上被称为“目录”(directory),对于一个分类中包含的更细层次的分类,前者称为后者的父目录或上级目录,而后者则称为前者的子目录。一个目录就是一系列它所包含的文件及子目录的集合。在以后的图例中,我们仍用“□”表示文件,直线表示从属关系,而目录则用“○”表示,如图2-27所示,表示子目录b及文件c均属于目录a。在一个存储设备中最基本的目录(即分层结构的最上端)称为根目录,用符号“/”表示,这种分层保管文件的存储形式称为文件系统,在每一个文件系统中都只会有惟一一个根目录。由于文件系统看上去就像一棵倒挂着的树,故也称为“树型结构”。图2-27一个文件系统在刚建立的时候,只有一个根目录。用户可以在根目录下建立子目录,也可直接存放文件。然后在子目录中既可建立更深层次的“孙目录”,又可直接存放文件……如此往复,直至存储设备的容量被用完为止。在每一个逻辑上独立的存储设备(如硬盘上的独立分区、软盘、CD-ROM等)都可建立一个树型结构。当然,不同的操作系统,实现树型结构的方法(术语上称为“文件系统的格式”)各不一样,例如:Linux采用ext2格式的文件系统;DOS则为FAT;Windows95为VFAT,Windows98为FAT32,WindowsNT/2000为NTFS;OS/2为HPFS等等。但是这些操作系统对树型结构的操作是很相似的。Linux在安装时要在存储设备(通常是硬盘)指定一个主文件系统作为基本的树型结构。构成Linux操作系统的基本文件通常就放在主文件系统下,而其他存储设备上的文件系统则通过后面将要讲述的mount命令架设到主文件系统上,在逻辑上组成一个“大文件系统”,然后这些文件系统就可以被用户访问。这一过程如图2-28所示。图2-28在DOS/Windows下则一般不用作挂接,每一个兼容的文件系统都被赋予一个盘符,然后通过盘符来访问这些文件系统。通常异种操作系统由于实现方法不同,所以它们的文件系统之间一般不能互相访问的。但某些操作系统为了增强其兼容能力,除自己直接支持的文件系统以外,也能访问其他一些类型的文件系统。在这方面,可以说Linux的系统兼容性几乎是最好的,它通过mount命令几乎可以挂接访问其他任何格式的文件系统。表2-3列出了各种常用操作系统对各种文件系统的兼容性(Linux为2.4.x核心)。表2-3常用操作系统对各种文件系统的兼容性操作系统名称LinuxDOSWindows95Windows98WindowsNTOS/2采用的文件系统Ext2FATVFATFAT32NTFSHPFS能兼容的其他文件系统Ext2√FAT√√√√√√VFAT√√√√√FAT32√√NTFS√√HPFS√√每一个目录都可以在其下存放文件或建立新的子目录,但在同一父目录下,不能有相同名称的文件,也不能有相同名称的子目录,甚至不能有相同名称的文件和子目录。这一规则主要是确保用户能惟一定位所需的文件。如图2-29所示的一些例子。但像图2-30所示的结构却是允许的。原因是尽管有文件、子目录名称相同。但它们的父目录却各不相同,在树型结构中是可以相互区分的。图2-29图2-30一个文件有可能同时属于很多个子目录(通过链接命令ln实现),这对一些有交叉分类的情况特别有用,例如图2-31所示。图2-31例:请判别图2-32和图2-33所示的树型结构存在的问题。图2-32图2-33图2-32答案:(1)目录a包含根目录。(2)c目录下有两个同名文件k。(3)文件g包含文件m。(4)目录l下有同名的p文件和p目录。(5)目录j下有同名子目录n。图2-33答案:(1)有两个根目录。(2)b目录下有同名子目录e。(3)b目录下有同名文件f。(4)k文件包含文件m。(5)j目录下有同名的文件l和子目录l。2.4.3路径要在树型结构中惟一地标识一个目录,光用目录名称是不足够的,如图2-34所示,树型结构中有多个目录c,如果我们说:要把文件abc放入目录c,那究竟是哪一个目录呢?为了解决这个问题,当需要定位一个目录时,我们采用指出从根目录出发走向该目录的一条“通路”的办法,例如在图2-35中,从根目录到目录v的“通路”是:/→f→n→v图2-34图2-35而从根目录到目录q的“通路”则是:/→e→j→q在术语中这样的“通路”被称为路径,在上述“通路”写法中,引入以下规则,便成为标准的路径写法:(1)第一个“→”不用写。(2)“→”用符号“/”代替。例如,从根目录到目录v的路径是:/f/n/v而从根目录到目录q的路径是:/e/j/q当需要在树型结构中定位一个目录时,我们只须指出从根目录到该目录的路径即可,由树型结构的规则,采用上述方法进行定位是绝对不会产生二义性——即一个路径写法同时表示两个不同的目录。以上方法也可用于在树型结构中定位文件,例如文件p可写为:/e/i/p文件z则可写为:/f/n/v/x/z开机启动Linux以后,我们处于树型结构的某个目录之中,这个目录称为当前目录,刚开机时的当前目录一般是用户的主工作目录,这是在创建用户时设定的,对于root,主工作目录一般是:/root对于一般用户,主工作目录一般是:/home/<用户账号>启动以后,当前目录可用命令cd改变,用法是:cd<路径>↙<路径>指出从根目录到要转换的目录的路径。例如在上图中,当前目录为e,现要把当前目录改为v,可以输入:cd/f/n/v↙我们想知道当前目录的位置,可以使用命令pwd,如图2-36所示。图2-36另外,通常通过观察系统提示符也可获得当前目录路径。关于主工作目录,Linux中有一个简化的写法“~”,例如:cd~表示把当前目录转到用户本身的主工作目录。路径还有另外一种写法,就是指出从当前目录到目标目录的“通路”。例如在上图中,当前目录为e,则从e到目录q的“通路”是:e→j→q从e到目录x的“通路”是:e→/→f→n→v→x这种路径的标准写法是:(1)由于起点必定是当前目录,故起点与第一个“→”可以省略不写。(2)“→”用符号“/”代替。(3)上级目录用“..”表示。因此,从当前目录e到目录q的路径可写为:j/q而从e到x的路径则可写为:../f/n/v/x这种路径写法与当前目录(即起点)的位置有关,故称为“相对路径法”;前面介绍的写法,路径均从根目录开始,与当前目录位置无关,故被称作“绝对路径法”。在某些场合下,用绝对法书写路径会比较简单,而在另一些场合,可能用相对法比较简单,例如在上图中,假设当前目录为x,现要把当前目录转到v,使用绝对法,输入命令:cd/f/n/v使用相对法,输入命令:cd..相对法较简单。在相对法中还有一个特殊的路径,就是从当前目录到当前目录的路径,我们用“.”表示。要判断一个路径究竟是用绝对法书写还是用相对法书写只须简单地观察路径中的起首字符是否为“/”,如果是,则是用绝对法;如果不是,那就是用相对法。相对法也同样可用于惟一定位子目录或文件。例:如图2-20所示,设当前目录为j,表2-4分别是用绝对法和相对法惟一定位的目录或文件。表2-4目录或文件的绝对法和相对法子目录或文件绝对法相对法目录q/e/j/qq目录e/e..//../..目录f/f../../f目录x/f/n/v/x../../f/n/v/x续表2-4子目录或文件绝对法相对法目录i/e/i../I目录j/e/j.文件b/b../../b文件r/e/j/rr文件y/f/n/v/y../../f/n/v/y2.4.4相关操作命令1.文件及子目录名称列表使用ls命令只能列出当前目录下的文件及子目录清单,其他目录中的内容不会被列出,如图2-37所示。图2-37在所列清单中,可以发现在i、j后面有“/”符号,这表示它们是子目录而不是一个文件。如果用户使用的是具有彩色能力的终端(例如:控制台,仿真彩色终端),还可以看到目录和文件的名称通常是用不同的颜色显示的,例如:目录名称一般以蓝色显示。如果要显示其他目录中的文件及子目录名称列表,可使用以下方法:ls<路径>↙其中<路径>是用相对法或绝对法书写的到要观察的目录的路径。例如:在图中要观看/f/n目录中文件及子目录名称的列表,可输入:ls/f/n↙也可用相对法写成:ls../f/n↙除上述方法外,当然也可先用cd命令将当前目录移至要观察的目录,然后再运行ls命令。2.显示一个文本文件的内容“cat<文件名称>”命令现在除了能显示当前目录下文本文件内容外,还可以用于显示其他目录中的文本文件内容,一般性的用法是在指出<文件名称>时使用带路径指引定位的文件名称。例如:当前目录为e,要观看文件z的内容,可用:cat/f/n/v/x/z↙3.改变文件、目录名称,搬移整棵目录树在树型结构下,mv命令有了更强大的功能。除了改变文件的名称外,还可以用于改变目录的名称,用户可首先用cd命令进入要改名的文件或子目录所存放的上级目录处,然后使用:mv<原文件或子目录名称><新名称>↙例如在图2-38中,现要将/a/b目录改名为bb,/a/c文件改名为cc,操作如下:图2-38cd/a↙mvbbb↙mvccc↙若不想改变当前目录,也可用:mv/a/b/a/bb↙mv/a/c/a/cc↙则图2-38变为图2-39所示的结构。实际上mv的真正功能是在树型结构中搬移文件和目录,改名就是某种意义下的搬移。先看搬移文件的用法:mv<带路径指引的源文件名称><带路径指引的目标文件名称>↙例如在图2-40所示的结构中,当前目录为根目录,输入:mv/a/d/g/b/e/gg↙则将文件/a/d/g搬移到/b/e下,名称变为gg,如图2-41所示。图2-39图2-40图2-41如果在命令使用中,指引文件存放位置的路径被省略,就表示文件位于当前目录,如果目标文件只用路径指出其存放位置,而没有指定文件名称,那就表示搬移后文件名称不变。例如在图2-40中输入:mv/a/d/h/b/e↙则树型结构变为图2-42所示。在图2-42中,输入:mv/a/cabc↙则文件/a/c被搬移到当前目录——根目录下,名称为abc,树型结构变为如图2-43所示。用mv命令还可以搬动以指定目录为起点的一棵“小树型结构”,使用方法是:mv<带路径指引的起点目录名称><目标目录名称>↙例如,在图2-43所示中,输入:mv/b/e/a/ee↙变为如图2-44所示。图2-42图2-43图2-44同理,如果省略目标目录的指引路径,则表示搬移至当前目录;如果省略目标目录名称,则表示名称在搬移后不变。注意:使用mv命令对文件或目录进行搬移会产生覆盖的危险。4.删除文件使用命令rm,如果要删除非当前目录下的文件,须加上路径指引。用法如下:rm<带路径指引的文件名称>↙5.复制文件在树型结构下,cp可以跨目录复制文件,用法如下:cp<带路径指引的源文件名称><带路径指引的目标文件名称>↙与mv命令用法类似,如果省略路径指引,则表示文件位于当前目录,如果省略目标文件名称,则表示进行复制后名称仍保持不变。使用可选项-a,cp命令还可复制整棵目录树,用法如下:cp-a<带路径指引的起点目录名称><带路径指引的目标目录名称>↙例如:在如图2-45所示中。输入命令:cp-a/a/d/b/dd↙则图2-45变为图2-46所示。6.创建新的子目录使用的命令是mkdir,用法是:mkdir[<路径>/]<新目录名称>↙<路径>指出新目录所在的位置,如果路径指引被省略,则表示在当前目录下创建新的子目录。如图2-47所示,设当前目录为/a。图2-45图2-46图2-47输入:mkdirb↙则结构变为如图2-48所示。再输入:mkdirb/c↙则结构变为如图2-49所示。如果在mkdir命令中指出了实际并不存在的路径,将会有出错信息提示,但选用-p选项,则可建立起一连串的新目录。例如在图2-49中输入:mkdir-pd/e/f↙则结构变为如图2-50所示。由于当前目录下并无子目录d,此时mkdir会自动先建立d子目录,再在d下建立子目录e,最后在e下建子目录f。这是一种高效率的用法,甚至可以用一行命令来建立整个树型结构。例如要把图2-51中的左图结构变为右图所示的结构。图2-48图2-49图2-50图2-51可以输入:mkdir–pb/e/g;mkdir–pb/d;mkdir–pc/f↙Linux可以在一个命令行中同时使用多条命令,命令之间用“;”隔开,系统将依次逐条执行这些命令。7.删除目录删除目录的命令是rmdir,用法为:rmdir<带路径指引的目录名称>如果省略路径指引,那就表示要删除的子目录位于当前目录下。此命令只能删除空目录,如果用它去删除一个非空(即其内包含文件或子目录)目录,系统会给出出错提示,这样从某种意义下可以保障信息的安全,降低发生误操作的机会。要用rmdir删非空目录,就必须先删其包含的文件和子目录,但用带可选项-r的rm命令可以一次删除一棵目录树,用法是:rm–r<目录树的起点目录>↙如在图2-52中,要把以/a/b目录为起点的整棵目录树删去,可以用:rm–r/a/brm将会递归地删除该目录树下的每一个文件及子目录。由于这是一个非常危险的操作,因此在删除每一个文件或子目录时均需用户进行确认,如果目录树规模较大,这将是一个令人烦恼的过程,此时用户可用-f可选项取消确认,例如:rm–rf/a/b↙系统将一声不响地把以/a/b为起点的目录树删除,当然用户要意识到这种操作的危险性。其他有可能对信息安全性产生危害的命令,如mv、cp、rmdir等,均可类似地使用-f可选项取消确认。例如:假设树型结构如图2-53左图所示,当前目录为根目录,请用已学过的Linux命令将此结构变成如图2-53右图所示,假设名称相同的文件内容也相同。图2-52图2-53解答:依照树型结构的变化使用“图上作业法”。(1)mkdir/x↙。此时树型结构变为如图2-54所示。(2)mv/c/g/j/x↙。树型结构变为如图2-55所示。图2-54图2-55(3)mv/c/g/i/b↙。树型结构变为如图2-56所示。图2-56(4)rm-rf/c↙。树型结构变为如图2-57所示。(5)mv/a/c↙mv/b/a↙mv/x/b↙树型结构最终变为如图2-58所示。图2-57图2-58这正是我们所需要的。2.4.5通配符与多文件操作前面所讲的命令大多以单个文件或单个目录作为操作对象。有时,我们可能同时对多个对象进行操作,例如:要观看当前目录下a、b、c、d、e、f六个文件的内容,本来要用六条cat命令:cata;catb;catc;catd;cate;catf;↙Linux提供了一种“操作对象清单”的办法,可将上面的六条命令简化为一条:catabcdef↙在这种方法下,将要处理的文件列出在命令之后,中间用空格分开即可。其他的命令也有类似的用法,例如要删除当前目录下a、b、c、d、e、f六个文件,可用:rmabcdef↙尽管如此,在某些情况下,例如:要删除当前目录下的所有文件或部分文件(如:所有以字母a开头的文件),而这些文件的数目较多或文件名称较长时,即使使用上述做法也是十分麻烦的。那么是否能有一种匹配符号,由它可以灵活实现一种符号就能表达一长串的操作对象清单呢?例如:一种符号就能表达“当前目录下所有文件”、“当前目录下所有以a开头的文件”等,当要删除一大堆文件时,只需简单地输入:rm<匹配符号>↙即可,便能完成所有的操作。在Linux中,是通过通配符来实现一种符号可代表多个操作对象的目的,Linux下使用的通配符有三种,除了在DOS中常被使用的“*”和“?”外,还有“[]”:*:代表在其所在的位置上可以是任意多个任意字符(包括空字符)。?:代表在其所在位置上可以是任意的单个字符。[]:这是一个较特别的符号,在“[”和“]”之间是一个字符集,例如:[123abc]等。此符号表示在其所在的位置上可以是括号内所包含的字符集中的某个字符。如果供选择的字符集是连续的,例如:[abcdefgh],可用连贯符号“-”作简化,将它写成[a-h];同理,十个十进制数码组成的字符集可写为[0-9],而全体英文字母(包括大小写)组成的字符集则可写成[a-zA-Z]。从上可以看出,这三种匹配符号均起到一个字符表达多种不同字符(串)选择的作用,将它们与普通字符组合成“通配表达式”便能灵活表达多种不同字符串,再看看操作对象中有哪些与其匹配,从而便达到一个通配表达式同时代表多个操作对象的目的。例如:设当前目录下有以下文件。(1)Abcd (2)XYZ (3)abcd (4)bcd (5)f23 (6)f4(7)f9.html (8)fe (9)fdisk.exe (10)gaz.html (11)h.so (12)ddisk.html表2-5指出通配表达式的含义,以及与当前目录下哪些文件匹配。表2-5通配表达式的含义及其当前目录下匹配的文件通配表达式含义与其匹配的文件A*以a开头的所有文件(3)[a-zA-Z]???以英文字母(大小写)开头,文件名称长度为4个字符的文件(1)、(3)、(11)*.html以.html作后缀的文件(7)、(10)、(12)F[012]文件名称开头字母为f,名称长为2个字符,第二个字符为0或1或2无F[1-9]文件名称长为2个字符,以f开头,第二个字符是1~9九个数字中的一个(6)*全体文件(1)~(12)?disk*文件名称的第二到第五个字符分别为disk(9)、(12)一个通配表达式能与什么文件匹配是相对的,与用户在该目录下的文件有关。使用通配表达式,我们可以很方便地实现多文件操作,只需用通配表达式替代操作命令中相应位置上的<文件名称>以及<目录名称>即可。例如当前目录下有以下文件:A a.txt Bcd d.txt fe.txtH1 ijk.txt Lucky memo tea.txt现在我们要在屏幕上显示所有以“.txt”作后缀的文件的内容,可输入:cat*.txt↙系统在执行此命令时,首先会看看通配表达式与当前目录下哪些文件匹配,然后将其“展开”,在此例中,“*.txt”被展为:a.txtd.txtfe.txtijk.txttea.txt然后代入命令中,即把“cat*.txt”变为:cata.txtd.txtfe.txtijk.txttea.txt再真正运行以上命令。以前学过的命令中有很多是可以利用通配符进行操作的,例如,树型结构如图2-59所示(当前目录为/)。图2-59要列出文件A、B…Z的详细属性信息,可输入:ls–l[A-Z]↙如果要列出文件a、b…t、A、B…Z的详细属性信息,类似地可用:ls-l[a-tA-Z]↙如果输入:ls–l?↙可以发现除了当前目录下所有文件被列出以外,子目录u、v中的文件也被列出,这是因为系统在将“?”展开时,也匹配了u和v,故执行的命令中包括了:ls–luv↙有了通配符,在作文件名称列表时,我们可以很方便地将注意力集中到所需的文件上,而无须理会其他无关重要的文件。另外,在目录下有一些文件的名称是以“.”开头的,例如:.profile.xinitrc等。这些文件即使使用ls或ls*命令均不能被列出,我们将之称为“隐含文件”。如要列出隐含文件,可用:ls.*↙或用带-a可选项的ls命令,该可选项可使包括隐含文件在内的所有文件均被列出。如果用户希望ls命令不光能列出某一目录下的文件名称,而且还希望列出以该目录为起点的整个目录树中所有文件的信息,可用-R可选项,例如在上例中输入:ls–Rl↙将列出整个树型结构中所有文件和子目录的详细信息。请大家思考一下:在上例中,如果要列出整个树型结构中所有以小写字母开头的文件的详细信息,又该输入什么命令,是否要输入:ls–Rl[a-z]↙请作具体试验,并解释结果。例如:将图2-60中左图的树型结构变为右图,假设当前目录为/,相同名称的文件内容也相同。使用一条命令即可:rm[a-jl-z]↙如果不使用“[]”,也可用三条命令完成:mvkabc;rm?;mvabck↙例如:完成下列树型结构变化,假设当前目录为/,相同名称的文件内容也相同,如图2-61所示。图2-60图2-61命令是:rm[ab]/[1-9];rm[cd]/[0-8]↙可见,通配表达式还可多层使用。例如:完成下列树型结构变化,假设当前目录为/,相同名称的文件内容也相同,如图2-62所示。所需命令为:rmdira/[b-z]a/b/[ac-z]a/b/c[ab][d-z]↙例:完成下列树型结构变化,假设当前目录为/,相同名称的文件内容也相同,如图2-63所示。图2-62图2-63命令是:mkdir/a/b/c↙cp/a?/a↙rm/a3↙mv/b?/b↙mv/c?/c↙在chmod、chown、chgrp等命令中也同样可以使用通配符,以实现一次改变多个文件或目录的属性,使用-r(r表示recursive,循环的意思)可选项,甚至可一次改变整个目录树中所有文件的属性。2.4.6硬链接在Linux下,一个文件可以同时归属于多个不同目录,相应的操作称为链接,使用ln命令可以将一个现存的文件链接到另外一个目录,具体用法为:ln<带路径指引的文件名称><带路径指引的目录名称>↙例如,如图2-64所示,输入命令:ln/a/c/b↙则结构变为如图2-65所示。图2-64图2-65此时,无论是:ls/a↙还是:ls/b↙均显示有文件c,而且无论用户在哪一个目录中对文件c进行修改,在另一个目录中都能发现c确实已作相应修改,这是ln命令与cp命令的不同之处。cp复制的文件在物理上位于存储介质的不同位置,确实是不同的文件;而ln链接的文件,在存储介质上只有一个,只不过在不同的目录下同时作了登记而已。当用户要在文件系统中彻底删除一个作了链接的文件时,必须在其所属(链接)的所有目录下都删除该文件。如在上例中,要删去文件c的话,必须:rm/a/c↙rm/b/c↙如果是删除一次,在另一目录中可看到文件c仍存在。链接一般只能对文件,为了与后面讲的“符号链接”相区别,上述的链接方法被称为“硬链接”(hardlink)。2.4.7符号链接还有一种被称为“符号链接”的链接方式,主要是为简化操作而设的,有点类似于Windows95中的“快捷方式”。有时,经常要在某个目录中对树型结的另一个目录中的文件或子目录进行操作,如图2-66所示。图2-66在图2-66中,当前目录为a,经常要使用/b/e/i/j文件,为了避免经常转换当前目录或书写一长串指引路径的麻烦,可以在当前目录a下建立该文件的一个符号链接,建立的一般方法是使用带-s可选项的ln命令,用法如下:ln–s<带路径指引的文件或子目录名称><符号链接文件名称>↙于是,在上例中,输入:ln–s/b/e/i/j/a/k↙则在当前目录/a下建立了一个符号链接文件k,如图2-67所示。图2-67以后在图例中,符号链接用“…”表示,并在旁边注明其链接的目标。当输入ls命令时,可以看到如图2-68所示。图2-68在符号链接文件后标有符号“@”,表示这是一个符号链接,在彩色终端上还可以看到该文件的颜色与其他类型的文件是不一样的。建立了符号链接k后,可以简化很多操作。例如,要观看j文件的内容,本来应输入:cat/b/e/i/j↙而现在只要输入:catk↙就可以起到相同的作用。系统会自动地用符号链接文件k的内容“/b/e/i/j”进行替代。除对文件进行链接外,符号链接还可对目录进行,例如:ln-s/b/el↙则在当前目录/a下多了一个指向/b/e目录的符号链接文件l,如图2-69所示。图2-69此时,我们要列出/b/e的内容,只需输入:lsl↙前面讲过的命令,大部分都可以利用符号链接进行替代,例如:cpl/h/a↙mkdirl/x↙cpkkk↙rmdirl/v↙等等。但如果我们使用命令:cdl↙用pwd命令观看当前目录,可以发现,当前目录并不是/b/e,而是/a/l;再输入:cd..↙再用pwd检查,当前目录并非/b,而是/a,这一点请大家在操作时要注意。另外,要删除符号链接,直接使用rm命令即可,例如:rml↙rmk↙在使用rm命令时,并不会发生替代。符号链接可用mv进行改名,同样也不会发生替代。符号链接的对象如被删除或发生改名、搬移等变化,对符号链接文件本身并无任何影响。甚至还可在创建符号链接时,将其指向一个根本不存在的文件或目录,当然,在应用其进行操作时,系统会给出找不到相应文件或子目录的出错信息。2.5文件属性2.5.1显示文件属性在Linux的文件系统中,以文件统一处理各种对象,以上所讲的符号链接和目录实质上都可以看作是特殊的文件。一个文件除了作为标识的文件名称以外还有许多特性,例如:最后修改时间、最后访问时间、文件的类别(一般文件、目录或符号链接等)、硬链接数目、文件的长度等。此外,Linux是一个多用户的系统,在对文件进行操作时,必会涉及到安全性——即用户操作权限的问题,所有这些特性,我们统称为文件的属性。要得到文件的属性信息,可以使用带-l可选项的ls命令。利用它可以得到当前目录下每一个文件(广义的文件,包括目录、符号链接等)属性的详细信息,如图2-70所示。图2-70从图2-70中可见,每一个文件的属性信息如下:-rwxr-xr--1rootroot10739Dec2313:31bbscon(7)(4)(5)(6)(3)(2)(1)从左到右分为7栏,其含义分别为:(1)文件名称,如果是符号链接,还会在文件名称后显示出其链接的对象。(2)文件最后一次修改的时间,如果是在最近一个月所作的修改,则依次显示月、日、时、分,否则,显示月、日、年。(3)文件的长度,对于目录这种特别的文件(以后就称为目录文件),其内容为它所包含的文件及子目录在存储介质上的位置,因而也是有长度的。目录的长度会随着其内文件及子目录数的多寡而变化。(4)对一般文件而言是指其硬链接数,即该文件同时归属于多少个不同的目录。对于目录文件,是该目录所直接包含的子目录数目加2(实质上是两个特殊子目录——当前目录“.”和上级目录“..”)。以下(5)~(7)为用户对该文件操作权限方面的信息。(5)表示文件的拥有者(owner),拥有者一般对其拥有的文件具有较多的操作权限。(6)表示文件的组拥有者,凡属于该组的用户对文件的操作通常比其他一般用户具有更多的权限。(7)文件的权限字串,共计10个字符,分为4部分:-rwxr–xr--ABCDA表示文件的性质,占1个字符,此字符有多种选择,常用的有:-一般文件。d目录文件。l符号链接文件。b块类型设备文件。c字符型设备文件。后两类文件将会在设备文件一节中讲述。事实上,通过辨别文件权限字串的第一位,我们便可以分清一个名称所代表的究竟是一般文件,还是目录文件、符号链接或其他特殊类型的文件。B~D决定了系统内的所有用户对该文件的操作权限。B表示文件的拥有者对该文件的操作权限。C表示文件的组拥有者(属于该组的全体用户)对该文件的操作权限。D表示其他所有用户对该文件的操作权限。权限通常包括r、w、x三种:r表示读的权限。对于一般文件,用户拥有它的r权,则可读出该文件的内容。例如,可以用cat命令显示其内容(如果是文本文件的话),可以复制该文件等。对于目录,用户可以观看该目录的内容,例如使用ls命令对该目录所包含的文件名称进行列表等。w表示写的权限。对于一般文件,这意味着拥有此权限的用户可以修改该文件。对于目录,拥有此权的用户可在该目录中建立新的文件或子目录,可以删除、移动、改名其所包含的文件和子目录等等。x表示可执行权。具有x权的一般文件往往是一个可执行程序,用户可以具此判断一个文件是否能被执行,最常见的可执行文件包括二进制机器码文件和shell过程文件。一个不可执行的文件若被赋予x权,那在运行它的时候会产生不可预料的结果。用户如拥有了某个文件的x权,他就可以在需要时运行这个文件,运行的方法是在系统提示符下输入:<带路径指引的可执行文件名称>↙例如在图2-55中,在当前目录/a下有可执行文件d,用户拥有其x权,现要运行d,可以输入:/a/d↙或./d↙如图2-71所示。图2-71一般情况下路径指引是不可省略的,除非已经把该可执行文件所在的目录设为搜索目录(后面会讲到)。对于目录,只有当用户拥有其x权后,才可用cd命令转入该目录,如果在cd命令后使用一长串路径,则该路径所经过的所有目录,用户都必须具有x权,方可正确转入。实际上,前面所讲的许多命令,例如ls、cat、cp、mv等等,都是以可执行文件的形式放在文件系统中,我们运行这些命令,实质上就是运行相应的可执行程序。只不过这些命令存放的目录已被系统自动设置为搜索目录,因此我们在输入命令时,在命令的前面无须加上路径的指引。也有个别的命令,例如:cd,没有任何可执行文件与之对应,它完全是由系统本身解释执行的,这类命令被称为“内部命令”。以上权限约束一般只对普通用户有效,对于root,由于他是系统中权力至高无上的管理者,因此,无论一个文件(目录)的r、w权怎样设置,他都自动拥有该文件(目录)的r、w权;另外,只要该文件的权限字串中出现过一次x权(表明该文件可执行),root就具有运行该程序文件的权力。在权限字串的写法中,r、w、x依次排列,如果有某种权限是没有的,就用“-”来代替。组合起来无非就是8种情况,分别是:rwxrw-r-x-wxrw-r---w-还有一个比较冷僻的执行权s。我们在术语中把一个正在运行的程序称为“进程”。当在进程中需要打开其他文件时,如何判断其权限情况呢?这要根据进程的拥有者。如果用户执行文件时是对该文件拥有x权,该文件的权限字串中也没有使用过s权的话,那么进程的拥有者就是运行该程序的用户。例如,可执行文件d的权限字串为:-rwxr-xr-x其拥有者为root,组拥有者是root。用户h1运行d,那么相应进程的拥有者就是h1。如果程序d在运行过程中要读取文件c的内容,文件c的权限字串如下:-rw其拥有者为root,组拥有者也是root。由于程序d的进程拥有者h1对文件c并没有r权,故操作失败。s权可以被赋予拥有者或组拥有者,它与x权的区别是,当一个具有s权的可执行文件被执行时,其进程拥有者不是运行相应程序的用户,而是文件的拥有者!如在上述例子中,如果文件d的权限字串变为:-r-sr-xr-x其他信息不变。当用户h1运行d时,相应的进程拥有者就不是h1了,而是root,root具有对文件c的一切权限,操作自然就成功了。请大家自行作一个实验,实验以下我们已学过的命令在运行时对该命令的操作对象应具有何种权限,把结果做成一张表格。2.5.2权限字与权限操作文件的属性可以进行修改。例如:文件的最近修改时间可以用touch命令改变,用法为:touch<带路径指引的文件或目录名称>↙此用法可以把相应文件的最近修改时间改为当前时间,若指定的文件不存在,touch会在相应的位置上建立一个空文件(长度为0),这大概是建立文件的最简单方法。touch命令还可以将文件的最近修改时间改到一个指定的时刻,用法是使用-t可选项。touch–tMMDDhhmm[CC[YY]][.ss]<带路径指引的文件或目录名称>↙命令中所使用的时间串的写法与date命令中的类似。文件的拥有者可以用命令chown进行修改,用法是:chown<新拥有者账号名><带路径指引的文件名称>↙文件的组拥有者也可以用命令chgrp修改,用法是:chgrp<新的组拥有者名称><带路径指引的文件名称>↙例如,以root身份进入系统,分别进行以下操作,如图2-72所示。图2-72文件的操作权限可用命令chmod进行修改,用法为:chmod<八进制权限字串><带路径指引的文件名称>↙其中<八进制权限字串>由3位八进制数码(0~7)组成,这3位数字依次分别对应于文件拥有者、组拥有者、其他用户对该文件的操作权限。这3位数字的制定方法如下:首先,每一种权限对应一个八进制数值:-0x1w2r4而<八进制权限串>中的每一位八进制数,就是对应各权限之和:0r--4--x1r-x5-w-2rw-6-wx3Rwx7例:写出下列权限字串的对应八进制权限串:-rwxr-xr-x755drwxrwx770-rw-r--r--644-rwxr-x750drwxrwxrwx777例如,以root身份登录,进行如下一系列操作,如图2-73所示。图2-73chmod命令还有一种较直观的用法:chmod<a|u|g|o><+|-|=><权限字串><带路径指引的文件名称>↙此处,u代表文件拥有者,g代表组拥有者,o代表其他用户,a代表全体用户(即同时包括u、g、o),“|”符号表示在多个选择中选取其中一个,+表示增加权限,-表示去掉权限,=表示指定权限,<权限字串>则是-、r、w、x中的某一个或它们的组合。例如:为文件abc的组拥有者增加rw权:chmodg+rwabc↙为abc文件的文件拥有者去除x权:chmodu-xabc↙指定文件abc的其他用户权限为rw-:chmodo=rw-abc↙为文件abc的全体用户增加x权:chmoda+xabc↙当一个新文件建立时,一般有一个权限缺省值,例如对于可执行文件是“755”,即rwxr-xr-x,对于非可执行文件,是“644”,即rw-r—r--。如果想改变这一缺省值,可用命令umask设置屏蔽,用法为:umask<八进制权限屏蔽字>↙新的缺省值由以下方式产生:对于可执行文件,新缺省值是:.not.(<八进制权限屏蔽字>)对于非可执行文件,新缺省值是:666.and..not.(<八进制权限屏蔽字>)此处,“.and.”和“.not.”分别是逻辑与和逻辑否操作。例如:umask033↙则缺省值变为,对于可执行文件:.not.033=744即rwxr—r—对于非可执行文件:666.and..not.(033)=633即rw—wx-wx特别地,如要观察当前权限屏蔽字的情况,可直接输入:umask↙例如显示:03文件操作相关命令(1)观看文件名称列表,命令是ls(源于list),用法为:ls↙系统将显示“当前”存储的全体文件名称。(2)显示一个文本文件的内容,命令是cat(源于catalog),用法为:cat<文本文件名称>↙例如:要观看文本文件readme的内容,可以输入:catreadme↙屏幕上将显示该文件的内容,如图2-74所示。图2-74如果文件内容很多,还可以通过:cat<文本文件名称>|more↙实现翻屏暂停。注意:只有文本文件的内容才会被正确输出,其他文件——例如机器指令组成的文件,用户将只能在屏幕上看到一些古怪的字符。(3)删除一个文件,命令是rm(源于remove),用法为:rm<文件名称>↙如图2-75所示。图2-75<文件名称>指定了要删除的文件的名字,例如:最后的ls命令证实了文件a确实已经被删除掉了。这一变化可以用图2-76表示。图2-76(4)改变一个文件的名称,命令是mv(源于move),用法为:mv<原文件名称><新文件名称>↙例如,续上图,我们要把文件b的名称改为abc,操作如图2-77所示。图2-77最后的ls命令证实了文件确实已被改名。此过程可以用如图2-78所示来描述。图2-78注意:如果要改变的文件的新名称是现在已有文件的名称,例如在上例中,输入:mvbc↙要将文件b的名称改为c,但c文件原已存在。那是否会产生两个名称同为c的文件呢?当然不可能,因为这样系统就无法通过文件名称来辨识两个不同的文件了。一般情况下系统会先将原有文件c删除,再将文件b的名称改为c,经此操作后,尽管文件c仍存在,但其内容已变。这种情况被称为“覆盖”,覆盖会删除现存文件,错误的覆盖有可能造成信息丢失,因而mv是一种有潜在危险的操作。为了保障数据的安全,在一些Linux系统中,当要发生覆盖时会先作提示,例如:mv:replace'c'?用户输入y↙,将发生覆盖,输入n↙,系统不作任何操作,返回提示符。(5)复制文件,命令是cp(源于copy,由于音译的原因,复制又称为“拷贝”),用法为:cp<源文件名称><目标文件名称>↙例如,续上图,要将文件abc复制到文件123,操作如图2-79所示。图2-79最后的ls命令证实了文件已被复制。文件123是文件abc的复制品,这两个文件名称不同,但内容是一样的。尽管如此,它们在物理上分别位于存储介质上的不同位置,因而确实是两个不同的文件,此过程可用图2-80所示来描述。图2-80复制文件也同样有可能产生覆盖,例如在图2-80中输入:cpabcc↙此时,大多数Linux系统将会提示:cp:overwrite'abc'?让用户自己作决定。另外,一个文件不能复制为自身,例如,以下的用法是错误的:cpdd↙2.6文件备份和压缩备份是计算机日常重要操作之一。放在硬盘上的文件,很容易会因硬件损坏、软件改装、误操作等各种原因而遭受破坏。通常对于重要的数据,都要定期将它从硬盘上复制到其他存储介质(例如:软盘、磁带、MO等)上,然后设法妥善保管这些备份介质,从而达到保护(原始)数据的目的,一旦硬盘上数据遭受损害,我们可以从备份介质上把原先的数据还原。最简单的备份方法是用cp命令进行复制。例如:用户在/data目录下存放了重要数据,假设所有这些数据的总容量不超过一张3″高密盘的容量。现对这些数据进行备份,假设a:为一3″软驱,可以在a:中插入一张新盘片,然后对其进行格式化,输入:fdformat/dev/fd0H1440↙格式化完成后,再在盘片上建立必须的文件系统:mkfs/dev/fd0↙然后将该软盘架设到主文件系统上:mount/dev/fd0/mnt↙再将/data为起点的整棵目录树复制到软盘上:cp–a/data/*/mnt↙注意:复制后文件的权限情况会改变,例如:拥有者会变为进行备份的操作员,如果想保留原先的权限设置,可以使用可选项-p。复制完成后,卸载软盘,输入:umount/mnt↙从软驱中取出软盘,进行写保护,贴上标签,例如:注明备份内容、备份日期、时间、操作人等信息,然后妥善保管。这样,一次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长安大学兴华学院《工科大学化学-化学分析与仪器分析基础》2024-2025学年第二学期期末试卷
- 景区内部暗访制度
- 机关内部控制度
- 机关内部通报制度
- 同济大学浙江学院《动画周边产品设计》2024-2025学年第二学期期末试卷
- 机构教师内部培训制度
- 林业局内部请假制度
- 某钻井公司内部管理制度
- 模联内部会议制度
- 上海外国语大学《智能计算机图形学》2024-2025学年第二学期期末试卷
- 2026年春人音版(简谱)(新教材)小学音乐二年级下册教学计划及进度表
- 【四年级】【数学】【春季下】开学家长会:与数同行共话梦想【课件】
- 2026年陕西航空职业技术学院单招职业技能测试模拟测试卷学生专用
- 2026年及未来5年中国面粉加工行业市场发展现状及投资方向研究报告
- 2026年春季统编版小学道德与法治四年级下册教学计划
- 2026年春季北师大版(2024)小学数学二年级下册教学计划
- 2026年内蒙古建筑职业技术学院单招职业技能考试题库及参考答案详解(新)
- 互联网企业网络安全管理制度(标准版)
- 1.1时代为我搭舞台(课件)-中职思想政治《心理健康与职业生涯》高教版2023基础模块
- 打击诈骗犯罪 警民同心发力 (课件)
- (新教材)2026年春期人教版二年级下册数学教学计划+教学进度表
评论
0/150
提交评论