文件类型
- 普通文件
d 目录文件 directory
l 符号链接文件 link
b 块设备 block
c 字符设备 character
p 管道文件 pipe
s 套接字文件 socket
显示当前工作目录
[01:52:03 root@sz-centos7 /home/scipts]# pwd
/home/scipts
绝对路径和相对路径
绝对路径:
以正斜线 / 即根目录开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径:
不以斜线开始
一般情况下,是指相对于当前目录的路径,特殊场景下,是相对于某目录的位置可以作为一个简短的形式指定一个文件名
基名:basename,指只取文件名而不要路径
目录名:dirname,指只取路径,不要文件名
范例:
[02:08:13 root@sz-centos7 /home/scipts]# basename /home/scipts
scipts
[02:08:52 root@sz-centos7 /home/scipts]# dirname /home/scipts
/home
cd 切换路径
1,切换至父目录: cd ..
2,切换至当前用户主目录: cd
3,切换至以前的工作目录:cd - (注意,这里只能来回切换,不能切换到其他)
范例:
[02:09:00 root@sz-centos7 /home/scipts]# cd -
/root
[02:11:42 root@sz-centos7 ~]# cd -
/home/scipts
[02:11:45 root@sz-centos7 /home/scipts]# cd -
/root
[02:11:48 root@sz-centos7 ~]# cd /etc/sysconfig/
[02:11:59 root@sz-centos7 /etc/sysconfig]# cd -
/root
[02:12:02 root@sz-centos7 ~]# cd -
/etc/sysconfig
[02:12:04 root@sz-centos7 /etc/sysconfig]#
ls 列出目录内容
常见参数:
-a 包含隐藏文件
-l 显示文件详细的信息
-R 目录递归
-ld 目录和符号链接信息
-1 文件分行显示
-S 按从大到小排序
-t 按 mtime 排序
-u 配合 -t 选项,显示并按 atime 从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-F 对不同类型文件显示时附加不同的符号: */=>@|
-C 文件多时,以多列的方式显示文件,默认是一列
注意: ls -l 看到的文件大小,不一定是实际的文件真正占用空间的大小
查看文件状态 stat
每个文件有三个时间戳
access time 访问时间,atime 读取文件内容
modify time 修改时间, mtime 改变文件内容
change time 改变时间, ctime 元数据发生改变
范例:
[02:12:04 root@sz-centos7 /etc/sysconfig]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 1903 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17154540 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-04-05 03:36:56.345757768 -0400
Modify: 2021-04-05 03:36:56.343757770 -0400
Change: 2021-04-05 03:36:56.343757770 -0400
Birth: -
file 确定文件内容
常用选项:
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist 中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的 “:” 分隔符
-L 查看对应软链接对应文件的文件类型
--help 显示命令在线帮助
文件通配符模式
常见的通配符:
* 匹配零个或多个字符,但不匹配 “.” 开头的文件,即隐藏文件
?匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
~long 用户long 家目录
. 和 ~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 小写字母
[A-Z] 大写字母
[long] 匹配列表中的任何的一个字符
[^long] 匹配列表中的所有字符以为的字符
[^a-z] 匹配列表中的所有字符以外的字符
[:digit:] 任意数字,相当于0-9
[:lower:] 任意小写字母,表示 a-z
[:upper:] 任意大写字母,表示 A-Z
[:alpha:] 任意大小写字母
[:alnum:] 任意数字或字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:punct:] 标点符号
[:print:] 可打印字符
[:cntrl:] 控制(非打印)字符
[:graph:] 图形字符
[:xdigit:] 十六进制字符
touch 创建文件
选项:
-a 仅改变 atime 和 ctime
-m 仅改变 mtime 和 ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime 和mtime的时间戳
-c 如果文件不存在,则不予创建
cp 复制文件和目录
常用选项
-i 如果目标已存在,覆盖前提示是否覆盖
-n 不覆盖,注意两者顺序
-r,-R 递归复制目录及内部的所有内容
-a 归档,相当于dR --preserv=all。 常用于备份功能
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
-p 等同 --preserv=mode,ownership,timestamp
-v --verbose
-f --force
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,默认形式为 filename~,只保留最近的一个备份
--backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为filename.~ ,可以保留多份
范例:每天将/etc/ 目录下所有文件,备份到data独立的子目录下,并要求子目录格式为backYYYY-mm-dd,显示备份过程
[15:49:54 root@sz-kx-centos8 /data]# cp -av /etc/ /data/back`date +%F`
[15:49:53 root@sz-kx-centos8 /data]# ls
back2021-04-06
mv 移动和重命名文件
常用选项
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
利用 rename 可以批量修改文件名
范例:
为所有的log文件加上.bak后缀
[15:56:01 root@sz-kx-centos8 /data/test]# ls
filea.log filed.log fileg.log filej.log filem.log filep.log files.log filev.log filey.log
fileb.log filee.log fileh.log filek.log filen.log fileq.log filet.log filew.log filez.log
filec.log filef.log filei.log filel.log fileo.log filer.log fileu.log filex.log
[15:57:46 root@sz-kx-centos8 /data/test]# rename ‘log‘ ‘log.bak‘ fil*
[15:58:12 root@sz-kx-centos8 /data/test]# ls
filea.log.bak filef.log.bak filek.log.bak filep.log.bak fileu.log.bak filez.log.bak
fileb.log.bak fileg.log.bak filel.log.bak fileq.log.bak filev.log.bak
filec.log.bak fileh.log.bak filem.log.bak filer.log.bak filew.log.bak
filed.log.bak filei.log.bak filen.log.bak files.log.bak filex.log.bak
filee.log.bak filej.log.bak fileo.log.bak filet.log.bak filey.log.bak
去掉所有的bak后缀
[15:59:23 root@sz-kx-centos8 /data/test]# rename ‘.bak‘ ‘‘ *
[15:59:40 root@sz-kx-centos8 /data/test]# ls
filea.log filed.log fileg.log filej.log filem.log filep.log files.log filev.log filey.log
fileb.log filee.log fileh.log filek.log filen.log fileq.log filet.log filew.log filez.log
filec.log filef.log filei.log filel.log fileo.log filer.log fileu.log filex.log
rm 删除文件
选项
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除根
范例:删除特殊文件
[16:02:52 root@sz-kx-centos8 /data/test]# touch ./-f
[16:03:04 root@sz-kx-centos8 /data/test]# ls
-f
[16:03:05 root@sz-kx-centos8 /data/test]# rm ./-f
[16:03:30 root@sz-kx-centos8 /data/test]# touch ./-f
[16:03:33 root@sz-kx-centos8 /data/test]# ls
-f
[16:03:34 root@sz-kx-centos8 /data/test]# rm -- -f
shred 安全删除文件(破坏)
常见选项
-z 最后一次覆盖添加 0,以隐藏覆盖操作
-v 能够显示操作进度
-u 覆盖后截断并删除文件
-n 指定覆盖文件内容的次数(默认值是 3次)
范例:
[16:03:43 root@sz-kx-centos8 /data/test]# shred -zvun 5 passwd.txt
tree 显示目录树
常见选项
-d 只显示目录
-L 指定显示的层级数目
-P 只显示由指定 wild-card pattern 匹配到的路径
mkdir 创建目录
常见选项
-p 存在于不报错,且可自动创建所需的各目录
-v 显示详细信息
-m 创建目录时直接指定权限
rmdir 删除空目录
常见选项
-p 递归删除父空目录
-v 显示详细信息
iNode 表结构
每一个 iNode表记录对应的保存了以下信息
1,iNode number节点号
2,文件类型
3,权限
4,UID
5,GID
6,链接数(指向这个文件名路径名称个数)
7,该文件的大小和不同的时间戳
8,指向磁盘上文件的数据块指针
9,有关文件的其他数据
cp和inode
cp 命令:
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件
rm和inode
rm 命令:
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv 命令
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm
范例:删除大文件
[05:59:20 root@sz-centos7 ~]# cat /dev/null > /var/log/huwei.log
硬链接本质上就给一个文件起一个新的名称,实质是同一个文件
硬链接特性
创建硬链接会在对应的目录中增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文
件被删除
不能跨越驱动器或分区
不支持对目录创建硬链接
符号 symbolic (或软 soft)链接
一个符号链接指向另一个文件,就像 windows 中快捷方式,软链接文件和原文件本质上不是同一个文件
软链接特点
一个符号链接的内容是它引用文件的名称
可以对目录创建软链接
可以跨分区的文件实现
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的
引用计数
在创建软链接时, 如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目
录,但是软链接的路径如果是相对路径,则是相对于当前工作目录
硬链接和软链接区别总结
1. 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件
2. 跨设备
硬链接:不支持
软链接:支持
3. inode
硬链接:相同
软链接:不同
4. 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化
5. 文件夹
硬链接:不支持
软链接:支持
6. 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件的相对路径是相对于链接文件的相对路径
7. 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问
8. 文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无关
9. 文件大小
硬链接: 和源文件相同
软链接: 源文件的路径的长度
原文:https://www.cnblogs.com/xuanlv-0413/p/14621811.html