Linux文件与目录管理(学习笔记)

自闭症网瘾萝莉.ら 提交于 2020-11-16 00:13:27
本笔记为《鸟哥linux私房菜》第六章学习笔记
一、目录与路径
相对路径与绝对路径
绝对路径:一定由根目录 / 写起              正确度比较好
相对路径:不是由 / 写起             方便
 
目录相关操作
特殊目录
.         代表此层目录
..        代表上一层目录
-        代表前一个工作目录   
~       代表“目前用户身份”所在的家目录
~acc          代表 acc 这个用户的家目录
常见的处理目录的指令
cd          变换目录      change directory
pwd       显示当前目录      print working directory
mkdir     建立一个新的目录      
rmdir      删除一个空的目录
 
pwd [-P]
-P:显示出确实的路径,而非使用链接(link)路径。
 
mkdir [-mp] 目录名称
-m:配置文件的权限,直接设定    例子:mkdir -m 711 test2
-p:直接将需要的目录递归建立起来
 
rmdir [-p] 目录名称
-p:连同 上册 空的 目录也一起删除
 
关于执行文件路径的变量:$PATH
在执行一个指令时,系统会按照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件,先搜到的同名指令先被执行。
echo $PATH    显示哪些目录被定义出来,用冒号隔开
将/root加入PATH:PATH="${PATH}:/root"
 
可使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比PATH正确。
本目录(.)最好不要放到PATH中。
 
二、文件与目录管理
显示属性、拷贝、删除文件、移动文件或目录等
文件与目录的检视  ls
ls [-aAdfFhilnrRSt] 文件名或目录名称
ls [--color={never,auto,always}] 文件名或目录名称
ls [--full-time] 文件名或目录名称
选项与参数:
-a:全部的文件,连同隐藏档一起列出                                  常用
-A:全部的文件,连同隐藏档,但不包括.和..这两个目录
-d:仅列出目录本身,而不是列出目录内的文件数据              常用
-f:直接列出结果,而不进行排序
-F:根据文件、目录等信息,给予附加数据结构
       *:可执行文件;/:数据结构;=:socket文件;|:FIFO文件
-h:将文件容量以易读的方式列出
-i:列出inode号码
-l:长数据串行出,包含文件属性与权限等数据                 常用
-n:列出UID和GID而非使用者与群组的名称
-r:将排序结果反向输出
-R:连同子目录内容一起列出
-S:以文件容量大小排序
-t:依时间排序
--color=never:不要依据文件特性给予颜色显示。
--color=always:显示颜色。
--color=auto:让系统自行依据设定来判断是否给予颜色。
--full-time:以完整时间模式输出(包含年、月、日、时、分)
--time={atime,ctime}:输出access时间或改变权限属性时间(ctime),而非内容变更时间
 
蓝色显示目录,白色显示一般文件
 
复制、删除与移动:cp,rm,mv
1、cp(复制文件或目录)
cp [-adfilprsu] 来源文件 目标文件
cp [options] source1 source2 source3 ..... directory
选项与参数:
-a :相当于 -dr --preserve=all的意思                                                                常用
-d :若来源文件为链接文件的属性,则复制链接文件属性而非文件本身
-f : 为强制的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
-i : 若目标文件已经存在时,在覆盖时会先询问动作的进行                                 常用
-l : 进行硬式连结的连结档建立,而非复制文件本身
-p : 连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)
-r : 递归持续复制,用于目录的复制行为                                                           常用
-s : 复制成为符号链接文件(symbolic link),亦即“快捷方式”文件
-u : destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
--preserve=all : 除了 -p 的权限相关参数外,还加入 SELinux 的属性,links,xattr等也复制了。
 
注:如果来源档有两个以上,则最后一个目的文件一定要是 目录
 
复制时注意:
是否需要完整保留来源文件信息?           -a    -p
来源文件是否为连结档         -d    
来源文件是否为目录        -r
来源文件是否为特殊文件
 
2、rm(移除文件或目录)
rm [-fir] 文件或目录
选项与参数:
-f : force模式,忽略不存在的文件,不会出现警告讯息
-i : 互动模式,删除前会询问使用者是否动作
-r :递归删除,最常用在目录的删除           危险选项
 
touch 建立空文件
 
3、mv(移动文件与目录,或更名)
mv [-fiu] 源文件 目标文件
mv [options] source1 source2 source3 ....  directory
选项与参数:
-f : force强制模式,若目标文件已存在,不会询问而是直接覆盖
-i : 若目标文件已经存在,会询问是否覆盖
-u: 若目标文件已存在,且source比较新,才会更名
 
更名:mv 原文件名 更改文件名
 
取得路径的文件名与目录名称
basename   取得档名
dirname       取得档的目录名
 
三、文件内容查阅
cat     由第一行开始显示文件内容
tac     从最后一行开始显示
nl       显示时顺便输出行号
more   一页一页显示文件内容
less     比more多了往前翻页
head    只看头几行
tail       只看尾巴几行
od        以二进制方式读取文件内容
 
直接检视文件内容
cat/tac/nl
cat(concatenate)
cat [-AbEnTv]
选项与参数
-A:相当于 -vET 的整合选项,可列出一些特殊字符
-b:列出行号,仅针对非空白行作行号显示
-E:将结尾的断行字符 $ 显示出来
-n:打印出行号,连同空白行也会有行号
-T:将[tab]按键以 ^I 显示出来
-v:列出一些看不出来的特殊字符
 
tac(反向列示)
由最后一行到第一行反向在屏幕上显示出来
 
nl(添加行号打印)
nl [-bnw] 文件
选项与参数:
-b:指定行号指定的方式
        -b a:表示不论是否为空行,也同样列出行号
        -b t:如果有空行,空的一行不要列出行号(默认值)
-n:列出行号表示的方法
       -n ln:行号在屏幕的最左方显示
       -n rn:行号在自己字段的最右方显示,且不加0
       -n rz:行号在自己字段的最右方显示,且加0
-w:行号字段的占用的字符数
 
可翻页检视
more(一页一页翻动)
空格:下翻一页
Enter:下翻一行
/字符串:在这个显示的内容当中,向下搜寻字符串关键词            ??????????
:f:立刻显示出文件名及目前显示的行数
q:立刻离开more,不再显示该文件内容
b:往回翻页,只对文件有用
 
less(一页一页翻动)
空格:下翻一页
[pagedown]:下翻一页
[pageup]:上翻一页
/字符串:向下搜寻 字符串
?字符串:向上搜寻 字符串
n:重复前一个搜寻                ????
N:反向重复前一个搜寻        ????
g:前进到资料第一行
G:前进到资料最后一行
q:离开
 
资料撷取
head(取出前面几行)
head [-n number] 文件
-n后面接数字,代表显示几行
 
tail(取出后面几行)
tail [-n number] 文件
选项与参数:
-n:后面接数字,代表显示几行的意思
-f:表示持续侦测后面接的档名,要等到按下[ctrl]-c才会结束tail的侦测
-n +number:显示number行及之后的内容
 
非纯文本档:od
od [-t TYPE] 文件
-t:后面可接各种类型的输出
      a         :利用默认的字符输出
      c         :使用ASCII字符输出
      d[size]:利用十进制输出
      f[size] :利用浮点数输出
      o[size] :  利用八进制输出
      x[size]:利用十六进制输出
 
echo password|od -t oCc     得到password这几个字的ASCII对照
 
修改文件时间或建置新档:touch
modification time(mtime): 记录文件内容数据变更时间
status time(ctime):文件状态更新时间(权限、属性.....)
access time(atime):文件内容被取用时,会更新该时间
ls -l --time=ctime 文件名
 
touch
touch [-acdmt] 文件
-a:仅修订access time
-c:仅修改文件的时间,若该文件不存在则不建立新文件
-d:后面可以接欲修订的日期而不用目前的日期
-m:仅修改mtime
-t:后面可接欲修订的时间,格式[YYYYMMDDhhmm]
建立一个空文件
将某个文件日期修订为目前(mtime与atime)
 
四、文件与目录的默认权限与隐藏权限
文件预设权限:umask
umask -S   查看当前目录 符号类型方式的权限
 
文件默认 666 目录 777
文件隐藏属性
1、配置文件隐藏属性
chattr【只能在Ext2/Ext3/Ext4的Linux传统文件系统上完整生效,xfs文件系统只支持AadiS】
 
chattr [+-=][ASacdistu] 文件或目录名称
+ :增加某一个特殊参数,其他原本存在参数不动
-  :移动某个特定参数,其他原本参数不动
= :设定一定,且仅有后面接的参数
 
A:设定该属性,若有存取文件(或目录)操作时,访问世界atime不会被修改,可避免I/O较慢的机器过度存取磁盘
S:一般文件是异步写入磁盘,加S后,对文件的任何修改,会同步写入磁盘
a:设定a之后,该文件只能增加数据,不能删改, 本属性只有root才能设定
c:自动将此文件压缩,读取时自动解压缩,但在储存时,先压缩再储存
d:dump程序被执行时,设定d属性可使该文件(或目录)不被dump备份
i :可让一个文件不能被删除、改名、设定连结也无法写入或新增数据,对系统安全性有很大帮助,只有root能设定
s:若该文件被删,则会完全被移除出硬盘空间,若误删则无法恢复
u:与s相反,文件被删,但数据内容还存在磁盘中,可用于救援该文件
 
2、显示文件隐藏属性      lsattr
lsattr [-adR] 文件或目录
-a:将隐藏文件的属性也列出来
-d:若接目录,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录数据也列出
 
文件特殊权限:SUID,SGID,SBIT
Set UID
当s出现在文件拥有者的x权限上时,称为Set UID,简称SUID的特殊权限
SUID的限制与功能——仅对二进制程序有效,不能用于shell script上,对目录无效
                                    执行者对于该程序需要具有x的可执行权限
                                    本权限仅在执行该程序的过程中有效
                                    执行者将具有该程序拥有者的权限
 
Set GID
当s出现在群组的x权限上时,称为Set GID,SGID
SGID限制与功能——可针对文件或目录来设定
                      对文件:对二进制程序有用
                                    程序执行者对于该程序来说,需具备x的权限
                                    执行者在执行过程中会获得该程序群组的支持
                       对目录:用户对于此目录具有r与x的权限时,该用户能够进入此目录
                                     用户在此目录下的有效群组将会变成该目录的群组
                                     用途:若用户在此目录下具有w的权限(可建立新文件),则使用者所建立的新文件,该文件的群组与此目录的群组相同
 
Sticky Bit(SBIT)
只针对目录有效:当用户对于此目录具有w,x权限,亦即具有写入的权限时;
                           当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除该文件
 
SUID/SGID/SBIT 权限设定
4:SUID
2:SGID
1:SBIT
chmod 4755 filename              -rwsr-xr-x
 
观察文件类型:file
 
五、指令与文件的搜寻
脚本文件名的搜寻
which(寻找“执行档”)/type(第十章讲)
which [-a] command
-a:将所有由PATH目录中可找到的指令均列出
文件档名的搜寻
whereis(由一些特定的目录中寻找文件文件名)
whereis [-bmsu] 文件或目录名
-l    可列出whereis会去查询的几个主要目录而已
-b   只找binary格式的文件
-m  只找在说明文件manual路径下的文件
-s   只找source来源文件
-u   搜寻不在上述三个项目当中的其他特殊文件
 
locate:依据 /var/lib/mlocate内的数据库记载,找出用户输入的关键词文件名
locate [-ir] keyword
-i   忽略大小写
-c   不输出档名,仅计算找到文件数量
-l   仅输出几行的意思,输出5行:-l 5
-S  输出locate所使用的数据库文件相关信息,包括该数据库记录的文件/目录数量等
-r   后面可接正规表示法的显示方式
 
updatedb:根据  /etc/updatedb.conf的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate内的数据库文件
 
find
find [PATH] [option] [action]
1、时间相关选项与参数
-mtime n:在n天之前的“一天之内”被更新过内容的文件
-mtime +n:列出在n天之内(不含n天本身)被改过内容的文件名
-mtime -n:列出在n天之内(含n天本身)被改过内容的文件档名
-newer file:file为一个存在的文件,列出比file还要新的文件档名
2、与使用者或组名有关参数
-uid n   : n(数字)是用户的账号ID【UID:记录在/etc/passwd 里的账号名称对应的数字】
-gid n   : n(数字)是组名ID【GID:记录在/etc/group】
-user name  : name为使用者账号名称
-group name:name为组名
-nouser:寻找文件的拥有者不存在 /etc/passwd的人
-nogroup:寻找文件拥有群组不存在 /etc/group的文件
3、与文件权限及名称相关的参数
-name filename:搜寻文件名为filename的文件
-size [+-]SIZE:搜寻比SIZE还大(+)或小(-)的文件
                         SIZE规格:c代表bytes,k代表1024bytes            
-type TYPE:搜寻文件类型为 TYPE 的
                     一般正规文件(f),装置文件(b,c),目录(d),连结档(l),socket(s),FIFO(p)等
-perm mode:搜寻文件权限刚好等于mode的文件    4755
-perm -mode:搜寻文件权限必须全部囊括mode的权限 的文件
-perm /mode:搜寻文件权限包含任一mode的权限的文件
4、额外可进行的动作
-exec command:command为其他指令,-exec后可再接额外指令来处理搜寻到的结果
-print:将结果打印到屏幕上,这个动作是预设动作
 
例题
找出 /etc底下,文件大小介于50K-100K之间的文件,且将权限完整列出
find /etc -size +50k -a -size -60k -exec ls -l {} \;
 
找出 /etc下文件容量大于50K且文件所属人不是root的档名,且将权限完整列出
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
 
找出/etc下,容量大于1500K或容量等于0的文件
find /etc -size +1500k -o -size 0
 
-a   and
-o   or
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!