鸟哥的linux私房菜读书笔记7

第七章:linux文件与目录管理

相对路径与绝对路径;绝对路径一定是由根目录写起;相对目录则不是;

cd命令是用来切换目录的;还有一些比较特殊的目录:.代表当前目录;..代表上一层目录;-代表前一个工作的目录;~代表目前用户身份所在的主文件夹;~account代表这个用户的主文件夹;所有目录下面都会存在两个目录,分别是.和..,分别代表当前目录和上一层目录;根目录的上一层目录还是根目录;

常见的处理目录的命令:cd:切换目录;pwd:显示当前的目录;mkdir:新建一个新的目录;rmdir:新建一个空的目录;

默认情况下,mkdir需要一层一层地创建目录,例如cd home;cd test;…但是可以加上-p这个参数系统自动帮助自动建立目录,如果已经存在就使用该目录例如cd –p home/test…;但是不建议这样,因为如果打错字,目录会变得很糟糕;

rmdir:目录需要一层一层地删除,而且被删除的目录里面必定不能存在其他的目录或者文件;如果连同文件一块删除,就得用rm –r test;

执行文件路径的变量,查看文件属性的命令ls的完整文件名是:/bin/ls(是绝对路径),因为环境变量的缘故,可以在任何地方只输入ls命令就可以了。用echo $来查看环境变量中的路径;echo有显示打印的意思,$表示后面接的是变量;每个目录用:分开;命令所在目录没有被加入到环境变量中,就只能通过绝对路径来进行执行该命令;

不同身份用户默认的PATH不同,默认能够随意执行的命令也不同;

PATH是可以更改的,所以一般用户还是可以通过随意修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询;

使用绝对路径或相对路径直接指定某个命令的文件名来执行,回比查询PATH来的正确;

命令应该要放置到正确的目录下,执行才会比较方便;

本目录最好不要放到PATH中去;

目录放入PATH的方法为 PATH=”PATH”:/root,以root为例;

文件与目录管理

查看文件与目录:

ls:参数:

ls后可加多个目录;

-a:全部的文件,联通隐藏文件一起列出来;

-A:列出全部的文件但不包括.和..这两个文件夹;

-d仅列出目录本身,而不是列出目录在内的文件数据,不列出目录;

-f直接列出结果,而不进行排序;

-F根据文件、目录等信息给与附加数据结构;例:*代表可执行文件;/代表目录;=代表socket文件;l代表FIFO文件;

-h将文件容量以人类较易读的方式列出来;

-i列出inode号码;

-l列出长数据串,包含文件的属性与权限等数据;(常用)

-r将排序结果反序输出;

-R连同子目录一起列出来;

-S以文件的大小排序;

-t以时间排序;

--color=never不要一句文件特性给与颜色显示;

--color=always显示颜色;

--color=auto让系统自行依据设置来判断是否给与颜色;

--full-time以完整的时间模式输出;

--time=(atime,ctime)输出访问时间或改变权限属性时间而非内容更改时间;

cp命令:复制文件或目录

cp [options]  source1 source2 …

-a相当于-pdr的意思;-d若源文件为链接文件的属性;-f为强制的意思,若目标文件已经存在或无法开启,则删除后再进行一次;-i若目标文件已经存在,在覆盖时会先询问操作的进行;-l进行硬连接的连接文件创建,而非复制文件本身;-p联通文件的属性一块复制过去;-r递归持续复制,用于目录的复制行为;-s复制称为符号连接文件,即快捷方式文件;-u若比目标文件新的话就复制;

在默认的条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常会是命令操作者本身;

总之,由于cp有种种的文件属性与权限的特性,所以在复制的时候,必须清楚的认识到:是否需要完整保留来源文件的信息;源文件是否为软连接文件;源文件是否为特殊文件;源文件是否为目录;

rm移除文件或目录

-f忽略不存在的文件,不会出现警告信息;

-i互动模式,再删除前会询问用户是否操作;

-r递归删除。最常用在目录的删除。这是非常危险的参数;因为该目录或文件肯定会被root删除掉,因为系统不会再次询问及是否要删除;

删除-开头的文件最好加上./或者在前面加上-- ;

mov移动文件与目录,或更名

-f强制,如果文件已经存在,不会询问直接覆盖;

-i若目标文件已经存在时,就会询问是否覆盖;

-u若目标文件已经存在,且source比较新,才会更新;

可将多个文件移动到目标目录里面去mv 12 dir;重命名mv 1 2;

取得文件名basename;取得目录名dirname;

纯文本文件类型查看命令:cat:由第一行开始显示文件内容;tac:从最后一行开始显示,可以看出tac是tca的倒写形式;nl显示的时候,顺便输出行号;more一页一页底线是文件;less与more类似,但是比more好的是,它可以往前翻页;head只看头几行;tail只看结尾几行;od以二进制的方式读取文件内容;

nl、cat和tac都是一次性将数据一口气显示到屏幕上,more和less可以一页一页进行翻看;

head默认只显示前十行,如果想要显示多行,可用-n选项后加数字,例如head –n 20 filename;数字为正+100,列出100行后面的所有,数字为负-100,除了后面100行之外,列出前面所有的行;

非纯文本文件查看用od命令;

修改文件时间或创建新文件命令touch;最常用的用途为:创建一个空的文件;将某个文件日期修改为目前日期;

文件默认权限,umask值决定,003的话,其他人就减去wx功能;

文件隐藏属性;设置文件的隐藏属性的命令chattr;这个命令很重要,尤其是在数据安全上面;用法chattr [+-=] [参数];+增加一个特殊参数,其他不变;-删除一个特殊参数,其他不变;=仅有后面接的参数;参数有:A、S、a设置后只能增加数据不能删除数据也不能修改数据只有root可以设置这个属性、c设置后自动压缩使用时自动解压缩、d、i设置后不可以删除因为不发写入或添加数据、s设置后被删除的话完全从硬盘中被删除、u与s相反删除后硬盘中还有可以尝试找回;

显示文件隐藏属性lsattr;

当s这个标志出现在文件所有者的x权限上面时,例如-rwsr-xr-x,此时就称为SetUID,简称为SUID,它的限制和功能为:SUID权限仅对二进制程序有效;执行者对于该程序需要具有x的可执行权限;本权限仅在执行该程序的过程中有效;执行者将具有该程序所有者的权限;

当s标志出现在用户组的x时则称为SetGID,SGID,与SUID不同的是,可以对目录或文件来设置,有以下功能:SGID对二进制程序有用,程序执行者对于该程序来说,须具备x的权限;执行者在执行的过程中将会获得该程序用户组的支持;

Sticky Bit目前只对目录有效;简写为SBIT,作用为:当用户对于此目录具有w,x权限,即具有写入的权限时;当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件;

SUID/SGID/SBIT权限设置:4代表SUID,2为SGID,1为SBIT;假设要将-rwxr-xr-x改为-rwsr-xr-x,就是在原来的基础上面加上4,就是用chmod4755 filename来设置。

file,查看文件类型;file+filename;

which+命令是根据环境变量PATH所规范的路径去查询执行文件的文件名,所以重点是找出执行文件而已!且which后面跟的是完整的文件名,若加上-a参数,就输出所有可以找到的同名可执行文件,而不是第一个找到的。cd是找不到的,因为踏实bash内置的命令,而which实在PATH里面去寻找;

文件名的查找whereis寻找特定的文件。whereis+参数+文件或目录名;参数有:-b只找二进制;-m只找在说明文件路径下的文件;-s只找源文件;-u查找不再上述三个选项里面的其他特殊文件;find也是查找但是在硬盘里面查找,比较慢,whereis实在一个记录着系统里所有文件名的数据库里面去查找,所以会比较快;

locate的后面输入部分名称后就可以找到结果,当天新建的文件必须要更新数据库才能找到;

find。。。

权限与命令间的关系:

让用户能进入某目录成为可工作目录的基本权限是:

    可使用的命令:例如cd等切换工作目录的命令;

    目录所需权限:用户对这个目录至少需要x的权限;

    额外需求:如果用户想要在这个目录内ls查阅文件名,则用户对这个目录还需要有r的权限;

用户在某个目录内读取一个文件的基本权限是什么:

    可使用的命令:例如本章谈到的cat、more、less等;

    目录所需权限:用户对这个目录至少需要x的权限;

    文件所需权限:用户对这个文件至少需要r的权限;

让用户可以修改一个文件的基本权限是什么:

    可使用的命令:例如nano或未来要介绍到的vi编辑器;

    目录所需权限:用户在该文件所在目录至少需要x的权限;

文件所需权限:用户对该文件至少要有r,w的权限;

让一个用户可以创建一个文件的基本权限是什么:

    目录所需权限:用户在该目录要具有w,x的权限,重点在于w;

让用户进入某目录并执行该目录下的某命令的基本权限是什么:

    目录所需权限:用户在该目录至少要有x的权限;

文件所需权限:用户在该文件至少需要有x的权限;

重点回顾:

绝对路径一定由根目录写起;相对路径不是由根目录写起;

特殊目录有:.,..,-,~,~account,需要注意;

与目录相关的命令有cd,mkdir,rmdir,pwd等命令;

rmdir仅能删除空目录,要删除非空目录需使用rm –r命令;

用户能使用的命令是依据PATH变量所规定的目录去查找的;

不同的什么(root与一般用户)系统默认的PATH并不重要。差异较大的地方在于/sbin和/usr/sbin;

ls可以查看文件的属性,尤其是-d,-a,-l等参数特别重要;

文件的复制、删除、移动可以分别使用cp,rm,mv等命令来操作;

检查文件的内容(读文件)可使用的命令包括:cat,tac,nl,more,less,head,tail,od等;

cat –n与nl均显示行号,但默认的情况下,空白行不会编号并不相同;

touch的目的在修改文件的时间参数,但也可以用来创建空文件;

一个文件记录的时间参数有三种,分别是atime,ctime,mtime,ls默认显示是mtime;

除了传统的rwx权限之外,在Ext2/Ext3文件系统中,还可以使用charrt与lsattr设置及查看隐藏属性。常见的包括只能新增数据的+a与完全不能更动文件爱你的+i属性;

新建文件/目录时,新文件的默认权限使用umask来规范;

文件具有SUID的特殊权限,代表当用户执行此二进制程序时,在执行过程中用户会暂时具有程序所有者的权限;

目录具有SGID的特殊权限时,代表用户在这个目录下面新建的文件用户组都会与该目录的用户名组相同;

目录具有SBIT的特殊权限时,代表在该目录下用户创建的文件只有自己与ROOT能够删除;

查看文件的类型可以使用file命令来查看;

查找命令的完整文件名可用which或type,这两个命令都是通过PATH变量来查找文件名;

要查找文件的完整文件名可以使用whereis或locate到数据库文件去查找,而不实际查找文件系统;

利用find可以加入许多参数来直接查询文件系统,已获得自己想知道的文件名;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章