文件管理与常用指令之二常见目录操作指令常见文件操作指令文件权限文件与目录管理指令基本概念链接文件知识点链接文件定义•与其他文件相联系的文件•硬链接:新建一个文件名指针指向源文件的inode•软链接(又称符号链接):新申请一个inode,其中记录的是源文件的文件名指针和源文件路径链接文件定义源文件的inodeblock软链接文件的inode硬链接文件名源文件名软链接文件名链接文件指令•ln[-sf]源文件目标文件源文件为被链接的文件,目标文件为链接文件-s:加该选项时为创建软链接文件若不加该选项则是创建硬链接文件-f:新建指定类型的链接文件,若指定的目标文件名已存在,则将其覆盖链接文件指令eg:cd/tmpcp/etc/passwd.du-sb;df-i//查看目录和分区容量信息lnpasswdpasswd_hl//建立硬链接du-sb;df-ils-ilpasswd*//查看文件类型ln-spasswdpasswd_sl//建立软链接du-sb;df-ils-ilpasswd*链接文件指令•ln-sfpasswdpasswd_sl新建软链接文件passwd_sl,若该名称的文件存在就覆盖它链接文件属性•连接数新建常规文件:连接数为1,代表自身新建目录文件:连接数为2,代表它本身与其上层目录,同时其上层目录的连接数加1eg:cd/home/swhls-ld/home/swhmkdirtestdir2ls-ld/home/swh/home/swh/testdir2链接文件属性•硬链接和软链接的文件类型不同硬链接与源文件相同,软链接是l(链接文件)硬链接是直接指向已存在的文件,可以视为独立文件;软链接是一个符号,仅保存了从本文件到源文件的一个路径链接文件属性•结论1.硬链接的inode号和源文件一样,软链接不同2.硬链接和软链接的文件类型不同3.硬链接的大小和源文件相同,软链接仅仅几个字节链接文件•硬链接的限制1.不能跨文件系统、跨分区链接文件硬链接直接指向原文件的inode,其数据结构与具体文件系统相关联,因此不可跨系统创建硬链接文件软链接仅保存了原文件的路径,因此可以实现跨文件系统链接eg:若/home/swh与/处于不同的分区,则不可将二者的文件相互硬链接链接文件•硬链接的限制2.不能硬链接目录硬链接到目录时要求该目录下的所有文件都要同时建立硬链接,且在该目录下新建文件时也要这样做,容易出现错误,同时大大增加系统复杂性链接文件•删除源文件时硬链接与软链接反应不同硬链接文件“忘记”自己是链接文件,变为一个常规文件软链接文件会产生“断链”现象,无法正常显示链接文件•硬链接与复制文件的不同硬链接不占用空间,修改硬链接文件时源文件跟着改变复制文件占用空间,对它的修改不会影响源文件eg:将放的极深的文件提升上来,使用硬链接;修改某些配置文件(.bash_profile),用复制文件常用指令•关于目录操作的指令cd:改变目录pwd:显示当前所在目录mkdir:建立新目录常用指令•文件和目录管理指令ls:显示文件信息cp:拷贝文件、目录rm:删除文件、目录mv:移动文件、目录常用指令•ls[-aildSR][filename]-a:列出包含隐藏文件在内的所有文件-i:显示inode值-l:列出文件的详细信息-d:列出指定目录的信息-S:以文件大小排序-R:将子目录内容也列举出来常用指令•cp[-adrsu]源文件目标文件源文件为被复制文件,目标文件为复本文件-d:当源文件为链接文件时,加该参数仅复制快捷方式,不加该参数则复制源文件本身-r:复制目录-s:目标文件为源文件的符号链接文件,相当于ln-s-u:通常目标文件已经存在,只有当源文件较新时才进行复制工作-a:使得目标文件的所有属性都与源文件相同常用指令•rm[-fir]filename-f:强制删除,适用于确定无用的情况-i:需要用户确认才可删除(可不加)-r:循环删除,直到没有东西可删为止(用于删除目录)eg:强制删除目录lyricrm–rf/usr/local/lyric执行该行指令后,目录lyric将不会再询问而彻底删除常用指令•mv[-fiu]源文件目标文件•mv[options]source1source2source3....directory-u:当源文件比目标文件新时才移动-f:强制移动-i:移动前先询问是否动作常用指令•例子:将文件lyric的新版本转移到上层目录mv-u/usr/local/lyric/usr•思考若将文件omg在其原来所在目录中移动为blessU,会产生什么结果?答:相当于为文件omg重命名为blessUmvomgblessU常用指令•查看文件内容的指令cat:从首行显示more:分页显示less:分页显示,支持向上翻页nl:显示行号常用指令•cat[-n]filename将指定文件从首行开始连续显示在屏幕,当文件过大时不适用-n:在每行的最前面显示行号常用指令•morefilename–分页显示指定文件内容,使用空格翻页,回车向下一行,q键退出•lessfilename–分页显示指定文件内容,使用pageup、pagedown实现上下翻页,q键退出常用指令eg:使用less指令在文件godisagirl中查找girl这个词lessgodisagirl该指令执行后,在屏幕的最下行输入/girl即可向下查找出girl?girl则是向上查找出girl最后使用q退出常用指令•nl[-ba/t][-wm]filename在显示内容的同时加上行号-ba/t:前者给空行加行号,后者不为空行加行号-wm:设定行号的位数eg:为文件设定行号,空行不加,且行号为3位nl–bt–w3godisagirl常用指令•查询文件内容的指令grep:以行为单位查询文件内容(撷取指令)grep•格式:grep[-cinv]‘word’filename-c:计算拥有word字符串的总行数-i:不区分大小写-n:输出时显示行号-v:显示没有word的行grepeg:grep‘root’/home/linux/passwd显示passwd文件中含有root的行grep–v‘root’/home/linux/passwd显示passwd文件中不含有root的行grep•搜寻指定字符串,且输出时显示行号:grep–nloveloveis•利用中括号[]指定搜寻范围,且显示行号grep-n‘l[io][kv]e’loveisgrep•单个字符“.”与多个字符“*”“.”用来取代任意一个字符,“*”用来取代0个或多个其前面的那个字符grep-nl..eloveisgrep-n‘l..e’loveisgrep-nrrr*loveisgrep-nr*loveis常用指令•文本处理与统计指令sort:将结果进行排序,便于比较uniq:合并重复行wc:计算结果中的行数、字数、字符数常用指令•sort[-t分隔符][(+start)(-end)][-nru]filename-t分隔符:用指定分隔符来区分不同的区块+start–end:从start区块开始排序,到end结束,注意这里的编号是从0开始的-n:按数字排序-r:反向排序-u:只列出首次出现的行管线指令•eg1:将文件/etc/passwd按照第一个区块的首字母排序sort/etc/passwd•eg2:将文件/etc/passwd按照用户ID排序sort–t:+2–n/etc/passwd常用指令•uniq[-du]filename-d:只显示重复行-u:只列出文中没有出现重复的行管线指令•wc[-lmw]filename统计指令-l:计算行数-m:计算字符数-w:计算字数管线指令eg:wc–l/etc/passwd统计文件的总行数wc–m/etc/passwd统计文件的总字符数wc–w/etc/passwd统计文件的总词(word)数常用指令•文件权限指令chown、chgrp、chmodumask:在文件和目录创建时禁用某些属性常用指令•umask[xyz]默认情况下,用户创建的文件属性值为666默认情况下,用户创建的目录属性值为777使用umask可以禁止用户具有某权限eg:umask004取消他人对文件的读操作常用指令•查找文件或目录的指令locate:从数据库中查找文件位置(所有匹配项)find:查找指定目录及其子目录中满足条件的文件常用指令•locate相关字从数据库中查找文件名中包含所给字符串的文件位置,通常在使用前需要使用updatedb指令更新数据库eg:locateman找到的除了man本身,还有包含man字符串的其他文件,如betterman、mantarget、mantomandefence等常用指令•find[-name‘string’][-gidn/-uidn][-userstring/-groupstring][-permxyz][dirname]从指定的目录(dirname或当前目录)及其子目录中寻找满足要求的文件-name‘string’:寻找名字为string的文件-gid/uidn:寻找gid/uid为n的文件-user/groupstring:寻找用户名/群组名为string的文件-permxyz:寻找权限值为xyz的文件课后练习•什么是链接文件?分哪些种类?各有什么特点?•硬链接文件、软链接文件和复制文件有什么区别?创建这三种文件的指令格式是什么?•查看文件内容可以使用哪些指令?有什么特点?课后练习•使用查询指令对文件myfile进行如下操作:–该文件中是否有字符串happy?–若有,则显示文件中所有包含happy的行,同时显示行号•如何从当前用户创建文件时的默认权限中删除群组用户的写权限以及他人的读写权限?•如何寻找/home/linux目录下文件名中含有god的文件?课后练习•使用所学指令完成如下操作:–在/home/linux目录下新建文件buzz–将buzz文件复制到/tmp中–将/tmp/buzz改名为lemuria–查看buzz和lemuria的文件属性(注意路径的写法)–删除文件lemuria–在/home/linux目录下新建目录supergirl–进入目录/home/,删除文件supergirlThankYou!