第二章 文件和目录操作命令
2.1.tree命令:
以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件。
tree [option] [directory]
-a 显示所有文件,包括隐藏文件(以点(.)开头的文件)
-d 只显示目录*
-f 显示每个文件的全路径
-i 不显示树枝,常与 -f 参数配合使用
-L level 查看目录的层数,不带 -L 默认显示所有层数,level为大于0的正整数*
-F 在不同类型的文件结尾加上文件类型的指示符号
执行文件 *
目录 /
Socket =
符号连接 @
管道 |
在使用树形结构的时候,可能会出现乱码,临时修改树结构乱码的方法:LANG=en_US.UTF-8
例2.1.1:-f 选项和 -i 选项的使用
-f 选项可显示完整的路径名称,使用 -i 选项则不显示树枝部分。
例2.2.2:查看第一层目录。-L devel(devel为正整数)
例2.2.3:使用tree命令区分目录和文件的方法*
-L 指定查看的目录层数,使用 -F 参数会在目录后面添加 "/",方便区分目录。
过滤以斜线结尾的所有内容,使用grep
grep 条件$ filename --->>过滤以条件结尾的内容;
例:过滤 /etc/shadow 中以 7::: 结尾的和 /etc/passwd 中以/bin/bash 结尾的;
2.2.mkdir :创建目录
mkdir [option] [directory]
-p (1)递归创建目录,递归的意思是父目录及子目录及子目录的子目录...*
(2)即使要创建的目录事先已存在也不会报错提示,不会覆盖原目录里的文件。
-m 为新创建的目录添加权限
-v 显示创建目录的过程,常和 -p 一起使用。mkdir -pv a/b/c/d
==================================================
目录和文件的默认权限:
目录:最大权限是 777,减去umask的后三位(022),该用户创建的目录权限即默认为 755。
文件:文件的权限必须为偶数,如果是奇数,则需要 -1 变成偶数。777-022=755,每一位 -1 变成偶数,该用户创建的文件权限即默认为 644。
修改用户权限掩码:
umask ***
***可以是1-3位数,每一位的数值必须 <=7。
===================================================
2.2.1:同时创建多个目录及多级子目录:
###大括号{}的特殊用法:
(1)使用echo命令可以将被分隔的字符或单词输出到屏幕上;
(2)当{}前面有字符时;
(3)如果逗号前面什么都没有可以认为是一个空字符串。
2.3.touch:创建空文件或改变文件的时间戳属性
touch命令有两个功能:一是创建新的空文件;二是改变已有文件的时间戳属性。
touch [option] [file]
##### mkdir 是创建空目录,而touch是创建空文件。
举例解释参数:
touch 参数:
-a 只更改指定文件的最后访问时间。
-m 只更改指定文件的最后修改时间。
-d time 指定文件的时间属性
-r file 将指定文件的时间属性设置为与file文件的时间属性相同。
touch -r file文件 要设置时间的文件。
-t 使用 [[CC]YY]MMDDhhmm[.ss] 格式文件的时间属性,格式的含义从左到右依次为:世纪、年、月、日、时、分、秒。
###将 abc.txt 文件的时间设置为 2020年12月31日22:50:20
-------------------------------------------------------------------------------------
Access ------->>>最后访问文件的时间
Modify -------->>>最后修改文件的时间
Change -------->>>最后改变文件状态的时间
ls 命令查看时间戳的选项:
mtime:最后修改时间 (ls -lt),修改文件内容,文件的修改时间会改变
ctime:状态改变时间 (ls -lc),修改文件内容、移动文件或改变文件属性等文件的改变时间会改变
atime:最后访问时间 (ls -lu),查看文件内容时,文件的访问时间改变
-------------------------------------------------------------------------------------
使用大括号{}创建多个文件:
2.4.ls:显示目录下的内容及相关属性信息
ls [option] [file]
-l 使用长格式列出文件及目录信息*
-a 显示目录下的所有文件,包括 "." 字符开始的隐藏文件*
-t 根据最后的修改时间(mtime)排序,默认是以文件名排序*
-r 倒序排列文件*
-F 在条目后加上文件类型的指示符号( *、/、=、@、| ,其中的一个)*
-p 只在目录后面加上 "/"
-i 显示 inode 节点信息
-d 只列出目录本身而非目录内的文件,并且不跟随符号链接*
-h 显示文件或目录大小,KB、MB、GB等
-A 列出所有文件,包括隐藏文件,但不包括 "." 与 ".." 这两个目录
-S 根据文件大小排序
-R 递归列出所有子目录
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-c 根据状态改变时间(ctime)排序
-u 根据最后访问时间(atime)排序
--full-time 以完整的时间格式输出
--time={atime,ctime} 按不同的时间属性输出,atime表示按访问时间,ctime表示按改变权限属性时间,如果不加此参数认为最后修改时间
2.5.cp:复制文件或目录
cp [option] [source] [dest]
cp [选项] [源文件] [目标文件]
参数:
-p 复制文件时保持源文件的所有者、权限信息及时间属性
-d 如果复制的源文件是符号链接,那么仅赋值符号链接本身,而且保留符号链接所指向的目标文件或目录
-r 递归复制目录,即复制目录下的所有层级的子目录及文件
-a 等同于上面的 p、d、r 这三个选项功能的总和*
-i 覆盖已有文件前提示用户确认;因为Centos系统默认为 cp 命令设置了别名,即增加了 -i 参数,所以不加 -i 也是会提示。
-t 默认情况下命令格式是 " cp 源文件 目标文件 ",使用 -t 参数可以颠倒顺序,
格式变为 " cp -t 目标文件 源文件"
-----------------------------------------------------------------------------------------------------------
屏蔽系统默认的命令别名:
(1)使用全路径就不会提示覆盖信息。
(2)命令开头使用反斜线(\)
(3)取消别名,但是重启系统失效
(4)更改 ~/.bashrc 文件 (不建议使用)
------------------------------------------------------------------------------------------------------------
例:快速备份文件案列
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
在一部分路径相同的时候,可以用 {}进行操作。
cp /etc/ssh/sshd_config{,.ori}
2.6.mv:移动或重命名文件
mv [option] [source] [dest]
mv 选项 源文件 目标文件
参数:
-f 若目标文件已经存在,则不会询问而是直接覆盖
-i 若目标文件已经存在,则会询问是否覆盖
-n 不覆盖已经存在的文件
-t 指定mv的目标目录,适用于移动多个源文件到一个目录的情况,此时目标文件在前,源文件在后,和 cp 命令的 -t 选项功能一致
-u 在源文件比目标文件新,或目标文件不存在时才进行移动
1、重命名文件
若重命名已经存在相同名称的文件则提示是否覆盖。
mv的别名定义的是mv -i,所以当文件存在进行覆盖的时候会提示。
\mv 屏蔽别名,不再询问。
当目录存在时,mv 文件 目录,会将文件移动到目录中,当目录不存在时会重命名为文件。
2、移动多个文件,文件在前,目录在后。
3、-t 参数调换源目位置。目录在前,文件在后
将所有以 file 开头的文件移动到 a 目录中。
4、移动目录和移动文件相同,当目录存在时,目录1移动到目录2中;目录不存在,则目录1的名字修改为目录2的名字。
2.7.rm:删除文件或目录
rm [option] [file]
rm 选项 文件或目录
参数:
-f 强制删除、忽略不存在的文件、不提示确认*
-i 在删除前需要确认
-I(大i) 在删除超过三个文件或者递归删除前要求确认
-f 递归删除目录及其内容*
-----------------------------------------------------------------------------------------------
rmdir
删除空目录
参数:
-p 递归删除空目录,当子目录删除后其父目录为空时,也一并删除。
-v 显示命令的执行过程
****不能删除非空目录*****
------------------------------------------------------------------------------------------------
2.8:ln:硬链接和软链接
ln [option] [source] [target]
ln [选项] [源文件或目录] [目标文件或目录]
参数:
无参数 创建硬链接* -- ln 源文件 目标文件 ,硬链接生成的是普通文件(-字符)
-s 创建软链接* -- ln -s 源文件 目标文件,软链接生成的是符号文件(l类型)
1、 硬链接:###########
硬链接是指通过索引节点(inode)来进行链接。在Linux(ext2、ext3、ext4)文件系统中,所有文件都有一个独有的inode编号。
在Linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的。这种情况下的文件就被称为硬链接,硬链接文件相当于文件的另一个入口,它的作用之一就是允许一个文件拥有多个有效路径口(多个入口),这样用户就可以建立硬链接到重要文件,以防止误删除源数据。
(1)具有相同inode节点号的多个文件互为硬链接文件。
(2)删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。
(3)只有除了源文件以及源文件所有对应的硬链接文件,文件实体才会被删除。
(4)硬链接文件就是文件的另一个入口(相当于超市的前门后门)
(5)可以通过给文件设置硬链接文件,来防止重要文件被误删。
2、软链接:##############
软链接或符号链接就像是Windows里的快捷方式。硬链接文件的类型是普通文件,而软链接是真正的链接文件(l)。软链接文件的inode和源文件、硬链接文件都不同;软链接文件的文件类型是l。
(1)软链接类似于Windows的快捷方式。
(2)软链接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体。
(3)即使删除了源文件,软链接文件依然存在,但是无法访问指向的源文件路径内容。
(4)软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同。
3、只删除软链接(硬链接)时,对源文件和硬链接(软链接)都没有影响;
删除源文件时,对硬链接没有影响,软链接无法访问。
*****目录不可以创建硬链接,但可以创建软链接*****
=======================================================================
使用 cat 命令查看软链接文件时,会发现只能看到源文件的内容,看不到软链接文件的真实内容,因此需要使用readlink命令,能够看到符号链接文件的真实内容。
readlink [option] [file]
-f 将最后一个非符号链接文件显示出来。
=========================================================================
2.9.find:查找目录下的文件
参数:
-type 指定搜索文件的类型
b 块设备文件
c 字符设备文件
d 目录文件
p 管道文件
l 符号链接文件
f 普通文件
s 套接字文件
Actions 模块
-delete 将查找出的文件删除
-exec 对匹配的文件执行该参数所给出的Shell命令*
例:find / -type f -name abc -exec rm-rf {} \;
-ok 和-exec 作用相同,但在执行每个命令之前,都会让用户先确定是否执行
-prune 使用这一选项可以使find 命令不在当前指定的目录中查找
find支持的逻辑符:
! 取反*
-a 取交集,全拼为and*
-o 取并集,全拼为or*
例1:查找当前目录(.)两天内受到访问的文件。
例2:查找目录5天前以".log"结尾的文件
例3:查找当前目录下不是目录的文件,(注意 !的位置)
例4:按照权限来查找文件。 -perm
例5:按大小查找文件(查找当前目录下大于1000字节的文件),-size
2.10.
basenme 显示文件名或目录名
dirname 显示文件或目录路径
2.11.chattr:改变文件的扩展属性
chattr 命令用于改变文件的扩展属性,与chmod这个命令相比,chmod指示改变文件的读、写、执行权限,更底层的属性控制是由chattr来改变的。
chattr [option] [mode] [files]
chattr 选项 模式 文件或目录
参数,选项:
-R 递归更改目录属性
-V 显示命令执行过程
模式:
+ 增加参数
- 移除参数
= 更改为指定参数
A 告诉系统不要修改这个文件的最后访问时间
a 只能向文件中添加数据,而不能删除,多用于服务器日志文件安全
i 这顶文件不能被删除、改名、写入或新增内容。
2.12.lsattr:查看文件扩展属性
lsattr [option] [files]
参数:
-R 递归查看目录的扩展属性
-a 显示所有文件包括隐藏文件的扩展属性
-d 显示目录的扩展属性
2.13.md5sum:计算和校验文件的MD5值
功能:
md5sum命令用于计算和校验文件的MD5值。MD5是一种不可逆的加密算法。发布者首先通过MD5算法得出一组数值,然后让下载的用户进行MD5的数值对比,即MD5校验。基于MD5加密不可逆算的特性,如果数值一样, 那么就表示文件没有收到修改,反之这,则表示修改了。
md5sum [option] [file]
-b 二进制模式读取文件
-c 从指定文件中读取MD5校验值,并进行校验
-t 文本模式读取文件,这是默认模式
--quiet 校验文件使用的参数,验证通过不输出OK
--status 校验文件使用的参数,不输出任何信息,可以通过命令的返回值来判断
例1:生成一个文件的MD5值
检查文件是否被篡改,使用 -c 参数:
进入文件修改,在使用 -c 参数进行检查
md5sum命令用于备份任务的指纹检查,每次在备份完成之后生成指纹文件,将备份和指纹文件发送到备份服务器上,在备份服务器上又会通过md5sum命令和校验文件校验备份是否正确,这样做的目的是为了在第一时间发现可能因为网络传输而造成的文件损坏。
2.14.chown:改变文件或目录的用户和用户组
chown命令用于改变文件或目录的用户和用户组。
chown [option] [OWNER][:[GROUP]] [file]
chown 选项 [用户:用户组] [<文件或目录>]
常用格式:
chown 用户 文件或目录 #<==仅仅授权用户
chown:组 文件或目录 #<==仅仅授权组
chown 用户:组 文件或目录 #<==授权用户和组