当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 20:16 
头像

注册: 2007-07-14 20:45
帖子: 1122
送出感谢: 59
接收感谢: 30
昨天,在下载一个视频文件之后,文件名自已变了,变成一些字母和数字,没有类似于WINDOWS下的扩展名,但图标还是显示的是视频文件,也能正常打开,如此,引发思考如下:
问题一:在使用WINDOWS的时候,我识别文件类型是根据扩展名去判断;那么,我在LINUX下,我应该根据什么去判断一个文件的类型呢???

问题二:或者说LINUX系统是根据什么内容来确定这个文件是什么类型的呢???

问题三:我知道,在LINUX下要知道一个文件是什么类型,使用终端命令file可以进行判断,但我目的不在于此,我是想问有没有更直观的方法可以更快的判断这个文件属于什么类型!

盼指教:谢谢!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 20:22 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
文件头,魔数


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 20:26 
头像

注册: 2007-07-14 20:45
帖子: 1122
送出感谢: 59
接收感谢: 30
自由建客 写道:
文件头,魔数



能说明白点吗?什么文件头?魔数是什么?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 20:53 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
九天星 写道:
自由建客 写道:
文件头,魔数



能说明白点吗?什么文件头?魔数是什么?

通俗点就是,翻翻文件内容,凭经验判断。


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 21:15 
头像

注册: 2007-07-14 20:45
帖子: 1122
送出感谢: 59
接收感谢: 30
自由建客 写道:
九天星 写道:
自由建客 写道:
文件头,魔数



能说明白点吗?什么文件头?魔数是什么?

通俗点就是,翻翻文件内容,凭经验判断。



这方法更复杂,还不如用file + 文件名 判断,而且还有局限性,并不是每个使用LINUX的人都会看代码啊


页首
 用户资料  
 
6 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 21:58 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
九天星 写道:
自由建客 写道:
九天星 写道:
自由建客 写道:
文件头,魔数



能说明白点吗?什么文件头?魔数是什么?

通俗点就是,翻翻文件内容,凭经验判断。



这方法更复杂,还不如用file + 文件名 判断,而且还有局限性,并不是每个使用LINUX的人都会看代码啊

我说的就是 file 命令的原理


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 22:29 
头像

注册: 2007-07-14 20:45
帖子: 1122
送出感谢: 59
接收感谢: 30
自由建客 写道:
九天星 写道:
自由建客 写道:
九天星 写道:
自由建客 写道:
文件头,魔数



能说明白点吗?什么文件头?魔数是什么?

通俗点就是,翻翻文件内容,凭经验判断。



这方法更复杂,还不如用file + 文件名 判断,而且还有局限性,并不是每个使用LINUX的人都会看代码啊

我说的就是 file 命令的原理



还有别的方法吗?


页首
 用户资料  
 
8 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 23:15 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
九天星 写道:
还有别的方法吗?



_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: LINUX是如何识别文件类型的?
帖子发表于 : 2015-11-05 23:18 
头像

注册: 2011-03-20 13:12
帖子: 4519
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
引用:
在下载一个视频文件之后,文件名自已变了,变成一些字母和数字,没有类似于WINDOWS下的扩展名,但图标还是显示的是视频文件,也能正常打开

这个是文件管理器的功能。判断的机制一部分硬编码在文件管理器中,另一部分规则位于 /usr/share/mime/packages/freedesktop.org.xml 中。
这个应该是 Freedesktop 标准的一部分。
打开查看,可见有的按扩展名判断。有的按文件头,魔数判断。

比如可执行二进制文件的判断规则:
代码:
    <magic priority="40">
      <match value="\177ELF" type="string" offset="0">
        <match value="1" type="byte" offset="5">
          <match value="2" type="little16" offset="16"/>
        </match>
      </match>
      <match value="\177ELF" type="string" offset="0">
        <match value="2" type="byte" offset="5">
          <match value="2" type="big16" offset="16"/>
        </match>
      </match>
      <match value="MZ" type="string" offset="0"/>
      <match value="0x521c" type="little16" offset="0"/>
      <match value="0420" type="host16" offset="0"/>
      <match value="0421" type="host16" offset="0"/>
      <match value="0603" type="little16" offset="0"/>
    </magic>


比如 python 源代码的判断规则:
代码:
    <magic priority="50">
      <match value="#!/bin/python" type="string" offset="0"/>
      <match value="#! /bin/python" type="string" offset="0"/>
      <match value='eval \"exec /bin/python' type="string" offset="0"/>
      <match value="#!/usr/bin/python" type="string" offset="0"/>
      <match value="#! /usr/bin/python" type="string" offset="0"/>
      <match value='eval \"exec /usr/bin/python' type="string" offset="0"/>
      <match value="#!/usr/local/bin/python" type="string" offset="0"/>
      <match value="#! /usr/local/bin/python" type="string" offset="0"/>
      <match value='eval \"exec /usr/local/bin/python' type="string" offset="0"/>
      <match value='/bin/env python' type="string" offset="2:16"/>
    </magic>
    <glob pattern="*.py"/>
    <glob pattern="*.pyx"/>
    <glob pattern="*.wsgi"/>


引用:
问题三:我知道,在LINUX下要知道一个文件是什么类型,使用终端命令file可以进行判断,但我目的不在于此,我是想问有没有更直观的方法可以更快的判断这个文件属于什么类型!

这个问题表述不清。是用肉眼看出,还是在程序中判断。或者说明你的应用场景。


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 0 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译