(SRE)新基础知识二

文件类型

类型 说明
  • | 普通文件
    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. 文件大小

硬链接: 和源文件相同

软链接: 源文件的路径的长度
posted @ 2021-04-06 18:51  空白的旋律  阅读(192)  评论(0编辑  收藏  举报