Linux-----文件与目录管理

本文详细介绍Linux系统中文件与目录的管理技巧,包括路径概念、常用目录操作、文件复制与移动、内容查阅方法及权限设置等核心内容,适合初学者和进阶用户提升系统操作技能。

1、目录与路径

    1.1 相对路径与绝对路径

        这个概念在上一篇最后提到过,绝对路径的写法:一定是由根目录/开始写起。相对路径的写法:不是由根目录/写起。

        相对路径的用途:一般回到上一级时候可以用相对目录。cd ../

        绝对路径的用途:正确性更高,在工作调度上比较重要。

    1.2 目录的相关操作

        交换目录的指令是:cd。 特殊目录表示方法:

.代表此层目录
..代表上层目录
-代表前一个工作目录
~代表目前使用者身份所在的主文件夹
~account代表account这个使用者的主文件夹

         在所有目录下都会存在两个目录,分别是“.”和“..”分别代表此层和上层目录。根目录下也存在.和..两个目录,他们的属性和权限完全一致,也就是说,根目录的上一层和自己是同一个目录。

        常见的处理目录的指令:

        *cd(change directory):变换目录

        

        代表去zl这个使用者的主文件夹。

       

        代表回到主文件夹,也就是root这个目录。

        

         cd .. 代表上层,cd -代表前一个目录。

        *pwd:显示当前目录

        

        

        pwd显示当前目录,pwd -P显示真实目录(不管链接路径),注意P是大写。

        *mkdir:创建一个新的目录,选项参数: -m(设置文件权限),-p(直接将所需要的目录包括上层目录创建起来)

                

        

        连续创建不加-p会显示错误。

         

         

        加-m可以直接设置权限。

        *rmdir:删除一个空目录,选项参数: -p(连同上层的空目录一起删除),最好使用rmdir,而不要使用rm。

        

        注意删除的目录必须是空目录,目录下不能含有任何文件或者目录,比如我们不能在test1目录下,删除test2,因为test2下仍然有一个目录。rm -r 可以将目录下有内容的目录删掉(慎重!)。

        

        可以使用-p选项,连同上层的空目录一起删除。

    1.3 关于可执行文件路径的变量:$PATH

        前一章说ls指令完整文件名为:/bin/ls(绝对路径),但是为什么在任何地方都可以执行这个指令,其实这是环境变量PATH的功能。当我们执行一个指令,系统会按照PATH的设置,去每个PATH定义的目录下搜寻文件名为ls的可执行文件,如果PATH定义的目录中含有多个ls文件,那么最先搜到同名指令会先被执行。

        用root身份列出搜寻路径:echo有显示,打印的意思,PATH前面加$表示后面接的是变量。

        

        用zl使用者身份列出搜寻路径:

        

        PATH(一定是大写),这个变量的内容是有一堆目录组成,每个目录中间用冒号(:)隔开,每个目录有顺序之分。不论是root用户还是zl用户都有/bin和/usr/bin这个目录在PATH变量里,所以可以在任何地方执行ls来找到/bin/ls可执行文件。

        注意:(1)不同身份使用者默认的PATH不同,默认能够执行的指令也不同。

                  (2)PATH是可以修改的。

                  (3)使用绝对路径或相对路径直接指定某个指令的文件名来执行比搜寻PATH更准确。

                  (4)指令应该放到正确的目录下,执行会比较方便。

                  (5)本目录(.)最好不要放到PATH中。(为了安全起见,不建议将“.”加入PATH的搜寻目录中,防止有人做破坏。)

2、文件与目录管理

    2.1 文件与目录的检视:ls

                

        ls的使用方法太多,不一一列出。很多参数是可以混合使用的,最常用的 ls -al,显示所有文件详细信息。

    2.2 复制、删除与移动:cp、rm、mv

         复制文件用cp,除了单纯的复制还可以创建链接文件,比对两文件的新旧而给予更新,以及复制整个目录的功能。移动目录和文件使用mv,这个指令也可以直接用来作更名的动作。移除,可以用rm指令。

    *cp(复制文件或目录)使用方法如下图:

    

       cp指令很重要,不同身份执行这个指令会有不同的结果,尤其是-a、-p的选项。在默认条件中,cp的来源文件和目的文件的权限是不同的,目的文件拥有者通常会是指令操作本身。根据实际情况选择不同的参数。比如在复制一些密码档或者配置文件的时候需要加上 -a、-p等等可以完整复制文件权限的选项。使用-l 和-s都会创造所谓的链接文件,但是这两种链接文件并不相同,-l是实体链接,-s是符号链接(有点类似windows的快捷方式)。cp有种种文件属性和权限的特性,所以,复制时,最好知道几点:是否需要完整的保留来源文件的信息、来源文件是否为链接文件、来源文件是否为特殊文件、来源文件是否为目录。

     

    *rm(移除文件或目录)

      

        

        删除目录需要加 -r选项(慎重)。

        rm -r 这个指令要慎重,它会将目录或文件直接杀掉而系统不会询问你是否真的杀掉。除非你真的确定这个文件或目录不需要。删除 - 开头的文件可以加上本目录,这样不会把 - 当成指令的参数选项。

    *mv(移动文件与目录,或更名)

                  复制一个文件,并移动到另一个目录中。

         

        更改目录名称

        

        移动多个文件,最后一个必须是目录。

        

    2.3 取得路径的文件名称和目录名称

        basename和dirname。一个是用来获得文件名,一个是用来获得目录名。

       

3、文件内容查阅

        cat(由第一行开始显示文件内容)

        tac(从最后一行开始显示,cat的倒写)

        nl(显示的时候输出行号)

        more (一页一页的显示文件内容)

        less (与more类似,但是可以向前翻页)

        head (只看头几行)

        tail (只看尾几行)

        od (以二进制方式读取)

    3.1 直接检视文件内容

        直接查阅一个文件的内容可以使用cat/tac/nl这几个指令。

        *cat

        

          一般很少用,文件内容超过40行在屏幕上来不及看到结果,一般配合more或者less。一般可以加-A选项,可以列出一些特殊字符。

        *tac(反向列示)

        由最后一行到第一行在屏幕上显示出来。

        *nl(添加行号打印)

        

    3.2 可翻页检视

        前面的cat、tac、nl都是一次性将数据显示在屏幕上,但没有可以一页一页翻动的指令。more和less可实现。

        *more (一页一页翻动)

          

         

        使用more指令会出现上图的情况,这个时候,可以在最后一行输入一些指令:

        *空白键(space):代表向下翻一页 

        

        *Enter :代表向下翻一行

        

        */字串:代表在这个显示的内容中向下搜寻”字串“这个关键字

        

        *:f     :立刻显示出文件名以及目前显示的行数

        

        

        *q     :代表离开more不再显示该文件内容

         

        *b或[ctrl]-b :代表往回翻页,只对文件有用。 

         

    *less(一页一页翻动)

        

        之后会打开这个文件:

        

        这个时候可以输入很多指令来实现更多搜寻功能。   

        

         man page 其实就是调用less指令来显示说明文档的。

    3.3 数据撷(xie)取

        我们可以对输出的数据做一个简单的撷取,那就是取出前几行(head)  或者取后几行(tail)文字的功能。

    *head(取前面那几行)

              

        默认显示10行,加上 -n 选项,可以显示可控制的行数,若n为负数,会列出前面的所有行数,但不包括后面的行数。比如一个文件为131行,输入 head -n -100  filename 那么会打印出前面31行,不会打印后面100行。

          

      *tail(取出后面几行)

       

          tail默认显示后面10行,也可以使用 -n 来控制显示的行数。

    3.4 非纯文本文件(od)

        前面查阅的都是文本文件,若是非文本文件可以用od 来查看。

        

         size是一个数,可以是C(char),S(short),I(int),L(long)

        例如用ASCII输出/usr/bin/passd的内容:od -t c /usr/bin/passwd

         

        利用这个指令,可以将data file或者binary file的数据读出来。可以将输入转化成ASCII。

        

    3.5 修改文件时间或创建新文件(touch)

        每个文件会有很多时间参数,主要有三个,modification time (mtime,当该文件内容数据变更时,会跟新这个时间,文件内容发生变化,而不是文件属性或权限),status time(ctime,文件状态改变时间,也就是权限和属性改变会更新这个时间),access time(atime,文件内容被取用会更新这个时间。cat等等。)

        

    *touch

        

        例:新建一个文件并观察时间

        

        一行可以输入多个命令,依序执行。 

       修改时间:

        

       

        创建文件和修订文件日期和时间。复制文件不会复制ctime属性。

4、文件的默认权限和隐藏权限 

        前面学到过linux文件权限,在基本的r、w、x权限之外,其实还由系统默认的隐藏属性。

    4.1 文件默认权限 umask

       umask指定目前使用者在创建文件或目录时的权限默认值。

        

        创建文件默认最大权限为666(rw-rw-rw-),创建目录最大权限为777(rwxrwxrwx),umask的分数指的是该默认值能减去的分数,上图代表的也就是,user没有拿掉任何权限,所以u=rwx,group和other都拿掉2,所以g=rx,o=rx。所以在目前这个目录下,创建文件的权限就是(rw-rw-rw- ) -(----w--w-)=(rw-r--r--),也就是创建一个文件权限会是rw-r--r--,创建一个目录权限是(rwxrwxrwx)-(----w--w-)=(rwxr-xr-x),也就是创建一个目录权限会是rwxr-xr-x。

        如下图:

        

     umask的重要性:专题制作。如以上那么同群组的人想要得到写的权限,是不可能的,所以,要对umask进行修改。设置方法直接在umask后面加上权限数字就行。不能用权限数字直接减去umask这样6-3=3会造成出现问题。

    4.2 文件隐藏属性

        chattr (设置文件隐藏属性)只在Ext2/Ext3/Ext4 的传统文件系统上才生效。

        

        在系统数据安全上,这些属性是隐藏属性,要以lsattr才能看到该属性,+i 和+a这两个比较重要,+i可以让一个文件无法被更动,+a一般可以用在log文件上。

        chattr +i 后无法删除

        

       移除i参数后可以删除

        

    lsattr (显示文件隐藏属性)

       

    4.3 文件特殊权限:SUID、SGID、SBIT

        

        可以看到有一个前面没有见过的权限,这两个权限和系统账号和系统程序有关。

        Set UID

        当s这个权限出现在拥有者的x权限上,称为Set UID,简称为SUID的特殊权限,功能是:

        

        Set GID

        s在群组的x则成为Set GID,功能有:

        

        Stickly BIT

        SBIT只对目录有效,对文件无效。对目录的作用:

        

         SUID、SGID、SBIT权限设置

        用数字代替,421分别代表 SUID、SGID、SBIT,在以前的权限前加上需要设置的数字。

    4.4 观察文件类型:file

        如果想要知道一个文件的基本类型,可以只用file这个指令。

        

5、指令与文件的搜寻

    5.1 指令文件名的搜寻

        which(寻找可执行文件)

        

         范例:

        

        这个指令是根据PATH这个环境变量所规范的路径去搜寻可执行文件的文件名。

    5.2 文件文件名的搜寻

       whereis(由一些特定目录中寻找文件文件名),whereis只找系统中某些特定目录下的文件,locate则是利用数据库搜寻文件名。

        

        范例:

        

        find是很强大的搜寻指令,但是时间花费很大,因为它是直接搜硬盘。whereis之找几个特定目录。

        locate/updatedb

        

        范例:找出系统所有的与passwd相关的文件名,只列出5个。

        

        locate是在已经创建的数据库里面找寻,如果你新建一个文件,但是数据库没有更新那么就会找不到,这时候可以手动更新数据库,可以使用updatedb来更新数据库。

       find

        

        范例:将过去系统上24小时内有更新过的内容的文件列出。

        

        其余使用方法见上图。find其余使用方法见下图。

        

        

6、总结 

        (一)让使用者进入某个目录成为可工作目录的基本权限,如果只是进入目录,则需要x权限,如果还需要ls查阅文件名,那么还需要r的权限。

       (二)使用者在某个目录读取一个文件的基本权限,目录最少要x的权限,文件最少有r的权限。

       (三)使用者可以修改一个文件的基本权限,可以使用vi灯,那么使用者在该文件目录至少有x权限,对文件至少有rw权限。

       (四)让一个使用者可以创建一个文件的基本权限,在该目录至少有wx的权限。

       (五)让使用者进入某目录并执行该目录下一个指令基本权限,使用者在目录至少需要x的权限,在文件至少有x的权限

       (六)概念:

                  绝对路径、相对路径、特殊目录、PATH

                 指令:

                 cd     mkdir     rmdir     pwd     cp     rm    mv     cat     tac     nl     more     less     head     tail     od     touch     which                   whereis     locate     find           

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值