linux 文件管理命令:rmdir \ chattr \ cksum \ cmp \ split

rmdir:删除目录

  • 作用:删除一个或者多个目录。
  • 用法:rmdir [选项]…目录…
  • 主要选项如下:
命令 描述
--ignore-fail-on-non-empty 忽略任何因目录仍有数据而造成的错误
-p, --parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除
-v, --verbose 显示命令执行过程
--help 显示此帮助信息并退出
--version 输出版本信息并退出。

说明 如果目录没有数据则删除该目录。rmdir 所删除的目录,每级目录中都是空的,没 有其他的文件。如果任何一级目录有文件,也不能删除。

案例练习

使用-p 参数删除目录时是一级一级地进行的。

mkdir -p /sirdoc/redhat/ 

注意 首先在当前目录下创建目录 sirdoc,sirdoc 内又有一个子目录 redhat。

# rmdir -p sirdoc/redhat/ 

chattr:改变文件的属性

  • 作用:防止关键文件被修改。
  • 用法:chattr [选项]文件或目录
  • 主要选项如下:
命令 描述
-R 递归处理所有的文件及子目录。
-V 详细显示修改内容,并打印输出。
- 失效属性。
+ 激活属性。
= 指定属性。
A Atime,告诉系统不要修改对这个文件的最后访问时间。
S Sync,一旦应用程序对这个文件执行了写操作,系统立刻把修改的结果写到磁盘中。
a Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i Immutable,系统不允许对这个文件进行任何修改。如果目录具有这个属性,那么任何进程只能修改目录下的文件,不允许建立和删除文件。
D 检查压缩文件中的错误。
d No dump,在进行文件系统备份时,dump 程序将忽略这个文件。
C Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据被压缩后才写入磁盘。
s Secure Delete,让系统在删除这个文件时,使用 0 填充文件所在的区域。
u Undelete,当一个应用程序请求删除一个文件时,系统会保留其数据块,以便以后能够恢复删除的这个文件。

说明 chattr 命令的作用很大,其中一些功能是由 Linux 内核版本来支持的。如果 Linux 内核版本低于 2.2,那么许多功能将不能实现。同样,-D 检查压缩文件中的错误,需 要 2.5.19 以上内核才能支持。另外,通过 chattr 命令修改属性能够提高系统的安全性, 但是它并不适合所有的目录。chattr 命令不能保护/、/dev、/tmp、/var 目录.

案例练习

(1)恢复/root 目录,即子目录的所有文件。

# chattr -R +u/root

(2)用 chattr 命令防止系统中某个关键文件被修改。 在 Linux 下,有些配置文件(passwd,fatab)是不允许任何人修改的。为了防止被误删除 或修改,可以设定该文件的“不可修改位(immutable)”,命令如下:

# chattr +i /etc/fstab

cksum:文件的 CRC 校验

  • 作用:打印每个文件的 CRC 校验和及字节统计。
  • 用法:cksum [文件]… cksum [选项]
  • 主要选项如下:
命令 描述
--help 显示此帮助信息并退出。
--version 输出版本信息并退出。

说明 CRC(Cyclic Redundancy Check,循环冗余校验码)是常用的校验码,在早期的 通信中应用广泛,因为早期的通信技术不够可靠(不可靠性的来源是由通信技术决定 的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来“确认信息” 的困惑,比如红军和蓝军通信联合进攻山下敌军的例子。第一天红军发了一条信息要 蓝军第二天一起进攻,蓝军收到信息之后发一条确认信息,但是蓝军担心的是“确认 信息”如果也不可靠而没有成功到达红军那里,那自己岂不是很危险?于是红军再发 一条“对确认的确认信息”,但同样的问题还是不能解决,红军仍然不敢贸然行动。 对通信的可靠性检查就需要“校验”,校验是从数据本身进行检查,它依靠某种数学 上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理, 如果不可靠就丢弃重发或者进行修复。

CRC 码由两部分组成,前半部分是信息码,就是需要校验的信息,后半部分是校验码。如 果 CRC 码共长 n bit,信息码长 k bit,就称为(n,k)码。它的编码规则如下。 (1)首先将原信息码(kbit)左移 r 位(k+r=n)。 (2)然后运用一个生成多项式 g(x)(也可看成二进制数)用模 2 除上面的式子,得到的余 数就是校验码。 要说明的是,模 2 除就是在除的过程中用模 2 加,模 2 加实际上就是我们熟悉的异或运算, 就是加法不考虑进位,公式如下。

0+0=1+1=0,1+0=0+1=1

即“异”则真,“非异”则假。 由此得到定理:

a+b+b=a

也就是“模 2 减”和“模 2 加”真值表完全相同。 有了加减法就可以用来定义模 2 除法,于是就可以用生成多项式 g(x)生成 CRC 校验码。 例如,g(x)=x 4 +x 3 +x 2 +1,(7,3)码,信息码 110 产生的 CRC 码就是:11101 | 110,0000(设 a=11101,b=1100000)。 取 b 的前 5 位 11000 跟 a 异或得到 101,101 加上 b 没有取到的 00 得到 10100,然后跟 a 异或得到 01001,也就是余数 1001,余数是 1001,所以 CRC 码是 110,1001。 对于 g(x)=x 4 +x 3 +x 2 +1 的解释:(都是从右往左数)x 4表示第 5 位是 1,因为没有 x 1,所以 第 2 位就是 0。

标准的 CRC 码是 CRC-CCITT 和 CRC-16,它们的生成多项式如下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BB1nOhme-1688911325881)(linux常用命令/image-20230706152253716.png)]

案例练习

使用 CRC 检验文件,代码如下:

cksum 1.txt 
2422907486 124 1.txt

cmp:比较文件差异

  • 作用:比较文件差异。
  • 用法:cmp [选项] [第 1 个文件] [第 2 个文件]
  • 主要选项如下:
命令 描述
-c--print-chars 除了标明差异处的十进制字码之外,一并显示该字码所对应的字符。
-i<字符数目> –ignore-initial=<字符数目>:指定一个数目。
-l--verbose 标识出所有不一样的地方。
-s--quiet 或–silent:不显示错误信息。
-v--version 显示版本信息。
--help 在线帮助。

函数的返回值如下。

  • 0:文件是同样的。
  • 1:文件是不同的。
  • >1:发生错误。

案例练习

比较两个文本文件,代码如下:

# cmp hello.cpp hello1.cpp 
hello.cpp hello1.cpp differ: byte 9, line 1

split:分割文件

  • 作用:分割文件。
  • 用法:split [选项]… [输入[前缀]]
  • 主要选项如下:
命令 描述
-d 数字表示切割后的小文件。
-v 显示详细的处理信息。
-b<字节> 每个分割文件的大小。
-c<字节> 输出每行的大小。
-l<行数> 指定行数。
–help 显示帮助信息。
–version 显示版本信息。
[PREFIX] 设置分割后文件的前置文件名,split 会自动在前置文件名后加上编号。

案例练习

把一个大文件 file 分割成 1MB 大小的文件。

Split -b 1m file filebak_

猜你喜欢

转载自blog.csdn.net/u014096024/article/details/131628203