Shell命令-文件及目录操作之file、md5sum
文件及目录操作 - file、md5sum
1. file:显示文件的类型
file命令的功能说明
用于辨识文件类型。通过
file
指令,我们得以辨识该文件的类型。
file命令的语法格式
file
[-bchiklLNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname]
file
[-bcLvz][-f ][-m ...][文件或目录...]
file命令的选项说明
file
参数很多,表1为file
命令的参数及说明:
表1:
file
命令的参数及说明
参数选项 | 解释说明 |
---|---|
-b | 列出辨识结果时,不显示文件名称。 |
-c | 详细显示指令执行过程,便于排错或分析程序执行的情形。 |
-f | 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。 |
-L | 直接显示符号连接所指向的文件的类别。 |
-m | 指定魔法数字文件。 |
-v | 显示版本信息。 |
-z | 尝试去解读压缩文件的内容。 |
- [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用
shell
通配符匹配多个文件。
file命令的实践操作
范例1: 显示文件类型:
[root@oldboyedu /test]# file /test/
/test/: directory
--------------------------------------------------------------
==>不显示文件名称<==
--------------------------------------------------------------
[root@oldboyedu /test]# file -b /test/
directory
--------------------------------------------------------------
==>显示MIME类别<==
--------------------------------------------------------------
[root@oldboyedu /test]# file -i /test/
/test/: inode/directory; charset=binary
[root@oldboyedu /test]# file -b -i /test/
inode/directory; charset=binary
[root@oldboyedu /test]#
范例2:显示符号链接的文件类型
--------------------------------------------------------------
==>创建一个软连接文件<==
--------------------------------------------------------------
[root@oldboyedu /test]# touch oldboy.txt
[root@oldboyedu /test]# ln -s oldboy.txt oldboy_soft_link
--------------------------------------------------------------
==>查看的结果<==
--------------------------------------------------------------
[root@oldboyedu /test]# file oldboy_soft_link
oldboy_soft_link: symbolic link to `oldboy.txt'
[root@oldboyedu /test]# ll oldboy_soft_link
lrwxrwxrwx 1 root root 10 4月 13 10:57 oldboy_soft_link -> oldboy.txt
[root@oldboyedu /test]# file -L oldboy_soft_link
oldboy_soft_link: empty
--------------------------------------------------------------
==>empty是空的意思,内面没有内容<==
--------------------------------------------------------------
[root@oldboyedu /test]# file oldboy.txt
oldboy.txt: empty
[root@oldboyedu /test]# file -L oldboy.txt
oldboy.txt: empty
--------------------------------------------------------------
==>添加内容,再次查看<==
--------------------------------------------------------------
[root@oldboyedu /test]# echo "I love linux" > oldboy.txt
[root@oldboyedu /test]# cat oldboy.txt
I love linux
[root@oldboyedu /test]# file oldboy.txt
oldboy.txt: ASCII text
[root@oldboyedu /test]# file -L oldboy.txt
oldboy.txt: ASCII text
2. md5sum:md5校验
md5sum命令的功能说明
在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。
md5sum
命令用于生成和校验文件的md5
值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5
值相同。md5
值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。md5
校验,有很小的概率不同的文件生成的md5可能相同。比md5
更安全的校验算法还有SHA*
系列的。在网络传输时,我们校验源文件获得其md5sum
,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5
一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。
md5sum命令的语法格式
md5sum
[OPTION]... [FILE]...
md5sum
[参数] [文件]
md5sum命令的选项说明
md5sum
参数不常用,表1为md5sum
命令的参数及说明:
表1:
md5sum
命令的参数及说明
参数选项 | 解释说明 |
---|---|
-b | 以二进制模式读入文件内容 |
-t | 以文本模式读入文件内容 |
-c | 根据已生成的md5值,对现存文件进行校验 |
--status | 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断。 |
md5sum命令的实践操作
范例1: 不加参数,直接生成文件
md5
值(md5sum file
)
--------------------------------------------------------------
==>直接生成文件md5值<==
--------------------------------------------------------------
[root@oldboyedu /test]# md5sum oldboy.txt
d41d8cd98f00b204e9800998ecf8427e oldboy.txt
--------------------------------------------------------------
==>往文本里写内容<==
--------------------------------------------------------------
[root@oldboyedu /test]# echo "I love linux" > oldboy.txt
--------------------------------------------------------------
==>md5值发生了变化<==
--------------------------------------------------------------
[root@oldboyedu /test]# md5sum oldboy.txt
553430bbfd91aca9db36ae6addccd06c oldboy.txt
md5sum
校验的是文件内容,与文件名无关
范例2: 以文本模式或二进制模式读入文件并对其进行校验
[root@oldboyedu /test]# file oldboy.txt
oldboy.txt: ASCII text
[root@oldboyedu /test]# md5sum oldboy.txt
553430bbfd91aca9db36ae6addccd06c oldboy.txt
[root@oldboyedu /test]# md5sum -b oldboy.txt
553430bbfd91aca9db36ae6addccd06c *oldboy.txt
[root@oldboyedu /test]# md5sum -t oldboy.txt
553430bbfd91aca9db36ae6addccd06c oldboy.txt
虽然是不同的读入模式,但是在进行求md5的时候,是一样的,因为是逐位校验的。
范例3:
md5
值重定向(可以留着做校验而用的)
[root@oldboyedu /test]# md5sum oldboy.txt > oldboy.md5
[root@oldboyedu /test]# md5sum oldboy.txt
553430bbfd91aca9db36ae6addccd06c oldboy.txt
[root@oldboyedu /test]# cat oldboy.md5
553430bbfd91aca9db36ae6addccd06c oldboy.txt
范例3: md5
校验,(-c参数)如果一致,则返回OK
,否则返回错误信息
--------------------------------------------------------------
==>-c参数校验<==
--------------------------------------------------------------
[root@oldboyedu /test]# md5sum -c oldboy.md5
oldboy.txt: 确定
--------------------------------------------------------------
==>往oldboy.txt里追加内容<==
--------------------------------------------------------------
[root@oldboyedu /test]# echo "Me too" >> oldboy.txt
[root@oldboyedu /test]# cat oldboy.txt
I love linux
Me too
--------------------------------------------------------------
==>失败<==
--------------------------------------------------------------
[root@oldboyedu /test]# md5sum -c oldboy.md5
oldboy.txt: 失败
md5sum: 警告:1 个校验和不匹配
范例4: 不显示校验信息,(--status
参数)以命令返回值来判断,校验一致返回0
,不一致返回1
--------------------------------------------------------------
==>不一致返回1<==
--------------------------------------------------------------
[root@oldboyedu /test]# md5sum -c oldboy.md5
oldboy.txt: 失败
md5sum: 警告:1 个校验和不匹配
[root@oldboyedu /test]# md5sum -c --status oldboy.md5
[root@oldboyedu /test]# echo $?
1
--------------------------------------------------------------
==>校验一致返回1<==
--------------------------------------------------------------
[root@oldboyedu /test]# md5sum oldboy.txt > oldboy.md5
[root@oldboyedu /test]# md5sum -c oldboy.md5
oldboy.txt: 确定
[root@oldboyedu /test]# md5sum -c --status oldboy.md5
[root@oldboyedu /test]# echo $?
0
特殊说明
1)md5sum
是校验文件内容,与文件名是否相同无关
2)md5sum
值逐位校验,所以文件越大,校验时间越长。
总结
通过md5sum
来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不同设备间的传输)异常造成的文件内容不一致的情况。
工作实践应用场景:
需要比较2个rc1.tar.gz
包和rc2.tar.gz
两个包,变更是不是和开发说的一致
- 获取包,确保包正确无误
获取包后,验证包的MD5值:md5sum rc*.tar.gz
- 解压缩到指定目录
确保对应的目录存在
tar -zxvf rc1.tar.gz -C ./test_rc1
tar -zxvf rc2.tar.gz -C ./test_rc2
- 递归生成各文件的的MD5值
find ./test_rc1 -type f -print0| xargs -0 md5sum >> rc1_md5.txt
find ./test_rc2 -type f -print0| xargs -0 md5sum >> rc2_md5.txt
- 比较两文件的MD5值
diff -c rc1_md5.txt rc2_md5.txt
或者用
UltraCompare Professional
比对结果
今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津
Shell命令-文件及目录操作之file、md5sum的更多相关文章
- Shell命令-文件及目录操作之ls、cd
文件及目录操作 - ls.cd 1.ls:列出目录的内容及其内容属性信息 ls命令的功能说明 ls命令用于列出目录的内容及其内容属性信息. ls命令的语法格式 ls [OPTION]... [FILE ...
- Shell命令-文件及目录操作之mkdir、mv
文件及目录操作 - mkdir.mv 1.mkdir:创建目录 mkdir命令的功能说明 mkdir命令用于创建目录,默认情况下,要创建的目录已存在,会提示文件存在,不会继续创建目录. mkdir命令 ...
- Shell命令-文件及目录操作之pwd、rm
文件及目录操作 - pwd.rm 1.pwd:显示当前所在位置信息 pwd命令的功能说明 pwd命令用于显示当前工作目录的绝对路径,以便在各个目录间来回切换. pwd命令的语法格式 pwd [OPTI ...
- Shell命令-文件及目录操作之touch、tree
文件及目录操作 - touch.tree 1.touch:创建文件或更改文件时间戳 touch命令的功能说明 touch命令用于创建新的空文件或改变已有文件的时间戳属性. touch命令的语法格式 t ...
- Shell命令-文件及目录操作之cp、find
文件及目录操作 - cp.find 1.cp:复制文件或目录 cp命令的功能说明 cp命令用于复制文件或目录. cp命令的语法格式 cp [OPTION]... SOURCE... DIRECTORY ...
- Shell命令-文件及目录操作之chattr、lsattr
文件及目录操作 - chattr.lsattr 1. chattr:改变文件属性 chattr命令的功能说明 chattr命令用于改变文件属性.这项指令可改变存放在ext2文件系统上的文件或目录属性, ...
- Java编程的逻辑 (59) - 文件和目录操作
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- Linux操作系统常用命令合集——第一篇-文件和目录操作(40个命令)
一.选项和参数的区别 在经过上一次的系统安装后我们已经成功登陆,登陆LInux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文名:options)或“参数” ...
- Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
随机推荐
- 记Android开发中的一些另类使用
1.使用recyclerview,直接添加下列依赖就可以使用recyclerview,版本号与appcompat-v7版本号相同 compile 'com.android.support:design ...
- Java学习笔记——i++与++i问题
不同情况分析 逻辑运算符,++/--在前则先执行++/--.在后面则后执行++/-- k++是执行逻辑判断符号,之后再进行k的递增 int k=3; k++==3; //结果为true ++k则是先递 ...
- Spring Boot 整合 elasticsearch
一.简介 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data E ...
- C# System.Runtime.Caching使用
System.Runtime.Caching命名空间是.NET 4.0新增的,目的是将以前的.NET 版本中的System.Web.Caching单独提取出来,独立使用,这样web和其他.NET程序如 ...
- 2019/1.6 Javascript Cookie
cookie 就是一个1存放数据的东西,存储量很小(只有4KB),存放在客户端和应用设备上. 应用场景 用户注册,用户登录,购物车 chrome浏览器计算机存放cookie的位置 C:\Users\A ...
- javascript常用的41个经典技巧
1. 将彻底屏蔽鼠标右键 <table border oncontextmenu=return(false)><td>no</table> 可用于Table 2. ...
- js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法
并不是越来越快, 而是越来越多; $('button:first').click(function(){ // 记录ID var timerId = setInterval(function(){ ...
- EBGP在非直连网络时,需要配置ebgp的最大跳数,否则无法建立非直连的EBGP邻居
结论: 1.默认情况下,EBGP只能在物理直连的路由器之间建立邻居. 2.要想配置非直连设备间的BGP邻居,必须加配置. 组网图: 抓包: 1.默认情况下,EBGP邻居之间的BGP报文的TTL为1. ...
- 利用自定义View实现扫雷游戏
游戏规则: 简单版的扫雷事实上就是一个9×9的矩阵,其中有十个点是雷,非雷方块的数字代表该方块周围八个方块中雷的个数.通过长按某一方块(方块会变红)认定该方块为玩家认为的雷,通过短按某一方块来“展开” ...
- Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动
前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程 ...