文章目录
Linux文件和目录管理
目录与路径
通过FHS标准了解Linux的树状目录概念之后,进行目录切换时必须明确当下文件或目录的路径
路径表明了文件的所在位置,根据写法不同可以分为绝对路径和相对路径
- 绝对路径:从根目录/开始寻找文件的位置,起点是目录树的根目录
- 相对路径:指的是相对于目前工作目录的路径,起点是当前工作目录
绝对路径相对于相对路径来说准确率更高,因为一旦你执行的工作环境变化,相对路径则会发生相应的变化,而绝对路径不会因你的变化而变化,根本原因就是绝对路径是依据根目录为起点寻找目标文件,只要目标文件位置不发生改变,绝对路径是精准定位文件位置
cd
cd:Change Directory,切换目录,切换目录时经常涉及到一些特殊的目录使用
特殊目录
. 表示当前目录
.. 表示上一级目录
~ 表示目前用户的主文件夹
~account 表示account这个用户的主文件夹 c
pwd
pwd:Print Working Directory,显示目前所在目录
mkdir
mkdir:Make Directory,创建新目录
- 默认创建目录需要进行一层一层进行创建
- 若直接创建多个层级的目录需要加上参数 -p
rmdir
rmdir:remove directory,删除目录
- 删除目录只能从下到上一级一级删除
- 若删除目录及其子目录,则需要rm -r 目录
$PATH
执行文件路径的变量:$PATH
在执行ls命令时,系统会依照PATH的设置去每个PATH定义的目录下查询文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,则先查询到的同名命令先被执行
echo $PATH
打印出环境变量PATH定义的值
不同用户默认的PATH不同,默认能够随意执行的命令也是不同的
文件与目录管理
ls
ls:查看文件与目录,默认以文件名进行排列
参数
-a:显示查看全部的文件,连同隐藏文件
-A:显示列出全部文件,但不包括.和..这两个目录
-d:仅列出目录本身.,而不是列出目录内的文件数据
-h:显示文件容量以易读的方式(GB,KB)
-F:根据文件、目录等信息给与附加数据结构
*代表可执行文件;/代表目录;=代表socket文件;I代表FIFO文件
-l:列出文件的属性与权限等数据,简写为ll
参数可以进行组合使用,查看目录下所有文件的属性为 ls -al或ll -a
![Linux目录操作ls](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211208/Linux目录操作ls.7byhceggdoc0.png)
cp
cp:复制文件或目录
cp 源文件 目标文件
参数
-a:相当于-pdr
-i:若目标文件已经存在时,在覆盖时会进行询问操作的执行
-r:递归持续复制,用于目录的复制行为
在默认情况下,cp命令中的源文件和目标文件的权限是不同的,目标文件的所有者通常是命令操作者本身
rm
rm:移除文件或目录
rm 文件或目录
参数
-f:f就是force的意思,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会进行询问用户是否操作
-r:递归删除,常用于目录的删除,非常危险的参数,使用时需谨慎
mv
mv:移动文件与目录,或更名
mv [参数] 源文件 目标文件
参数
-f:force强制的意思,若目标文件存在,则不会询问直接覆盖
-i:若目标文件已经存在时,就会询问是否覆盖
-u:若目标文件存在,并且源文件更新时才会覆盖
![LInux目录操作mv](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211208/LInux目录操作mv.50mdr4svtt00.png)
文件内容查阅
cat
cat:直接查看文件内容,cat是Concatenate(连续)的缩写,主要的功能是将一个文件的内容连续显示在屏幕上,但是只宜查看在内容篇幅不大的文件
cat [参数] 文件名
参数
-n:打印出行号,连同空白行也会打印行号
-b:列出行号,空白行不标出行号
tac
tac:与cat正相反,反向列示
more
more:可一页一页翻页查看,当more查看内容的文件大于屏幕输出行数时则会在屏幕输出最后一行显示出目前显示的百分比
more 文件
在more程序运行过程中,还可以输出命令进行内容的查看
- 空格键(Space):代表向下翻一页
- Enter:代表向下滚动一行
- /字符串:代表在这个显示的内容中查找该字符串的关键字
- :f:立刻显示出文件名已经目前显示的行数
- q:表示离开more程序,不再显示该文件内容
- b或[Ctrl] -b:表示往回翻页,这个操作只对文件有效,对管道无用
less
less:可一页一页翻页查看,less与more具有同样的功能,但是使用比more更加弹性,可以使用上下键来查看内容,还有更多的查询功能
less 文件
在more程序运行过程中,还可以输出命令进行内容的查看
- 空格键:向下翻动一页
- [PageDown]:向下翻动一页
- [PageUp]:向上翻动一页
- /字符串:向下查询字符串的功能
- ?字符串:向上查询字符串的功能
- n:重复前一个查询(与/、?查询有关)
- N:反向重复前一个查询(与/、?查询有关)
- q:离开less程序
![Linux查看内容less](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211208/Linux查看内容less.68xavdixhu40.png)
head
head:取出文件前面几行
head [-n number] 文件
参数:
-n:后面接数字,代表显示几行
![Linux查看内容head](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211208/Linux查看内容head.5tem7xdd3f40.png)
tail
tail:取出文件后几行
tail [-n number] 文件
参数:
-n:后面接数字,表示显示几行
-f:表示持续检测后续所接的文件名,等到ctrl -C才会结束tail检测
-f参数一般用于检测持续有数据写入的日志文件,新写入的数据都会被显示在屏幕上
od
od:查看非纯文本文件,上述所有查看正常文件内容都是针对纯文本文件,对于非纯文本文件使用上述命令则会产生类似乱码的数据
od [-t TYPE] 文件
参数:
-t:后面可以接各种类型的输出
TYPE:
a:利用默认的字符输出
c:使用ASCII字符来输出
d[size]:利用十进制来输出数据,每个整数占用size bytes
f[size]:利用浮点数来输出数据,每个数占用size bytes
o[size]:利用八进制来输出数据,每个数占用size bytes
x[size]:利用十六进制来输出数据,每个数占用size bytes
touch
touch:修改文件时间或创建新文件
Linux每个文件都会记录以下三个主要的时间参数:mtime、ctime、atime
mtime(modification time):当该文件内容数据发生改变时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的权限和属性
ctime(status time):当该文件的状态改变时,就会更新这个时间,文件的权限和属性修改时都会更新这个时间
atime(access time):当该文件的内容被取用时,则会更新这个读取时间
命令ls显示出来的是该文件的mtime,即文件上一次被更改内容的时间
touch [参数] 文件
参数:
-a:仅修改访问时间
-c:仅修改文件的时间,若该文件不存在则不创建新文件
-m:仅修改mtime
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuULVWK8-1638983731233)(https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211208/linux查看内容touch.74yt2wk7dm40.png)]
touch最主要的两个功能:
- 创建一个空的文件
- 将某个文件日期修改为目前日期(mtime、atime)
文件和目录的默认权限与隐藏权限
默认权限
umask
umask:文件默认权限,umask指定目前用户在新建文件或目录时候的权限设置
查看当前用户在创建文件时的权限设置有两种方法:直接输出umask、输入umask加参数-S
直接输出umask可以看到数字形态的权限设置分数,该四组数字的后三组数字才是一般权限有关,第一个是特殊权限用的,该分数指的是需要减掉的权限分数,r、w、x对应的权限分数为4、2、1,则022表示去掉权限分数2对应的w,即与-S参数对应的符号类型的权限对应
当前用户在创建文件夹时,新建的文件夹权限是umask对应的默认权限
文件隐藏属性
chattr
chattr:设置文件的隐藏属性,该命令只在Ext2/Ext3的文件系统上生效
chattr [+-=] [参数] 文件或目录
参数:
+:增加某一个特殊属性,其他原本存在的参数不动
-:删除某一个特殊属性,其他原本存在的参数不动
=:仅有后面接的参数
A:若访问该文件或目录时,该文件的访问时间atime不会被修改,可以避免I/O较慢的机器过度访问磁盘,对速度较慢的计算机有帮助
S:一般文件是异步写入磁盘,加上这个参数,进行文件修改时会同步写入磁盘
a:只能增加数据,不能删除也不能修改数据,只有root才能设置这个属性
d:当dump程序被执行时,设置d属性的文件不会被dump备份
i:可以让一个文件不能被删除、改名、设置连接也无法写入或添加数据,只有root才能设置权限
lsattr
lsattr:显示文件隐藏属性
lsattr [属性] 文件或目录
参数:
-a:将隐藏文件的属性也秀出来
-d:如果接的是目录,仅列出目录本身的属性而非目录的文件名
-R:连同子目录的数据也被列出来
文件特殊权限
文件权限除了rwx之外,还有两种特殊文件权限:s、t,这两个特殊权限的意义与系统的账号以及系统的进程有关
SUID
该文件的权限中的s标志在文件所有者的x项,称为SetUID,简称为SUID的权限,SUID的限制和功能:
- SUID权限仅对二进制程序有效、
- 执行者对于该程序需要具有x的可执行权限
- 本权限仅在执行该程序的过程中有效
- 执行者将具有该程序所有者的权限
SGID
该文件的权限中的s标示在用户组的x项,称为SetGID,简称为SGID的权限,SGID的功能:
- SGID对二进制程序有用
- 程序执行者对于该程序来说,需具备x执行权限
- 执行者在执行过程中将会获得该程序用户组的支持
SGID也能用在目录上,当一个目录设置SGID的权限后的功能:
- 用户若对此目录具有r与x的权限时,该用户能够进入此目录
- 用户在此目录下的有效用户组将会被变成该目录的用户组
- 若用户在此目录下具有w权限,则用户所创建的新文件的用户组与此目录的用户组相同
文件类型查看
file
file:查看文件类型和文件的基本数据
命令与文件的查询
脚本文件名的查询
which
which:寻找执行文件
which是根据用户所设置的PATH变量内的目录去查找可执行文件,所以不同的用户设置的PATH不同,所查找的命令也不一样
文件名查找
whereis
whereis:文件名查找特定文件
whereis [参数] 文件或目录名
参数:
-b:只找二进制文件
-m:只找在说明文件manual路径下的文件
-s:只找source文件
locate
locate:根据关键字查找文件
locate [参数] 文件或目录名
参数:
-i:忽略大小写的差异
-r:后面可以接正则表达式的显示方式
![linux文件查找locate](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211208/linux文件查找locate.47tnkak09c20.png)
find
find:查找文件
find [PATH] [option] [action]
参数option:
-name filename:查找文件名为filename的文件
-size [+-]SIZE:查找比SIZE还要大(+)或小(-)的文件
-type TYPE:查找文件的类型为TYPE的,类型主要有:一般在正规文件(f)、设备文件(b、c)、目录(d)、连接文件(l)、socket(s)、FIFO
find与whereis、locate的区别?
Linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis或者locate查找文件时,都会以此数据库文件的内容为准,执行该命令时会找到已经会删除的文件,而且也找不最新才创建的文件
locate是根据文件的部分名称去查找,是因为locate寻找的数据是由己创建的数据库/var/lib/mlocate里面的数据所查找到的,数据库的创建默认是每天执行一次,所以locate查询新建文件时会出现查不到的结果,可以手动更新数据库:updatedb,该命令去读取/etc/updatedb.comfig配置文件的配置,然后再去硬盘里面进行查找文件名的操作
find是很强大的命令,后面还会详细说明,但是查找文件花费的时间比whereis和locate时间长,因为find是在直接去硬盘上查找
总结
了解Linux目录的相关操作命令和文件内容的查看命令以及文件的权限和查找命令
赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love