linux file命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux file命令相关的知识,希望对你有一定的参考价值。
linux file命令
file 文件名,显示结果是ASCII 和text,到底这个文件是什么文件呢?
请帮忙解决一下,file这个命令到底如何使用?谢谢
【功能】
辨识文件类型。
【举例】
*检查文件类型:
$ file file.cfile /dev/hda
输入之后,输出如下:
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386,version 1,
dynamically linked, notstripped
/dev/hda: block special
*检查文件类型,不输出文件名:
$file -b test/
输入之后,输出如下:
directory
*检查文件类型,文件名和结果用,隔开:
$file -F,example/
输入之后,输出如下:
example, directory
这里可以指定其它的分割字符。
*检查块文件内部,获得文件系统信息
$ file -s/dev/hda,1,2,3,4,5,6,7,8,9,10
输入之后,输出如下:
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
这里,如果没有权限,执行不了。
【描述】
ile 命令的使用. File 命令试图检查每个参数以判定文件的类型. 检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查. 文件系统检查成功则输出文件类型.
输出的类型一般会包含以下的词中的一个: text (文件中仅有 ASCII 字符,可以用 ASCII 终端读此文件,以保证内容的可靠性), executable (文件中保存的是程序编译后的结果,一些UNIX 内核或其它内核能理解这类文件), 或者 data 表示所有其它类型文件(data 一般为二进制文件或者不可打印的). 但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,却不属于这一类如果要修改 /usr/share/magic 或者程序本身, preserve these keywords . 当文件为``text'' 类型时,认为此文件为可读文件. 不要象在Berkeley环境中那样做 - 要把``shell commands text''改为``shell script''.
文件系统检查是建立在对 stat(2) 系统调用结果的分析上的. 程序会分析文件是否为空,或者是否是某种特殊文件. 对于所有可在现有系统上使用的文件类型 (比如套接口文件,动态链接文件,命名管道文件(FIFOs) 等),只要它在系统头文件 sys/stat.h 中已经定义过,就可以被检查到.
幻数检查用来检查文件中是否有特殊的固定格式的数据. 规范的例子如二进制可执行文件(编译后的程序) a.out ,该文件格式在标准include目录下的 a.out.h 文件中定义,也可能在 exec.h 中定义. 这些文件在文件开始部分附近的一个特殊位置保存有一个'幻数' , 通过幻数告诉UNIX 操作系统此文件是二进制可执行文件, 和其中包含的其它类型. 幻数的概念已经扩展到数据文件.任何在文件固定位置有与文件类型相关的不变标识符的文件都可以这样表示. 这些文件中的信息可以从幻数文件 /usr/share/magic 中读取.
如果文件为 ASCII 文件, file 会试图检查它的语言. 语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看 names.h) .br 指出此文件很可能是 troff(1) 输入文件, 而关键字 struct 指出此文件是C程序. 语言检查不如前两组检查可靠,所以放在最后执行.它也用来检查一些混合文件(例如 tar(1) 存档文件)并确定文件是`ascii text'类型还是`data'类型.
选项
-b
不输出文件名 (简要模式).
-c
检查时打印输出幻数文件的解析结果.常与 -m 一起使用,用来在安装幻数文件之前调试它.
-f 命名文件
从在参数表前的命名文件中读出将要检查的文件名(每行一个文件).要有命名文件,或者至少有一个文件名参数; 如果要检查标准输入, 使用``-''作为文件参数.
-m list
指定包含幻数的文件列表.可以是单个文件,也可以是用冒号分开的多个文件.
-n
每检查完一个文件就强制刷新标准输出. 仅在检查一组文件时才有效. 一般在将文件类型输出到管道时才采用此选项.
-v
打印程序版本并退出.
-z
试图查看压缩文件内部信息.
-L
(在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像 ls(1) 命令的like-named 选项.
-s
通常, file 只是试图去检查在文件列表中那些 stat(2) 报告为正常文件的文件的类型.由于读特殊文件将可能导致不可知后果,所以这样可以防止发生问题.使用 -s 选项时 file 命令也将去读文件列表中的块特殊文件和字符特殊文件. 一般用于从原始磁盘分区中获得文件系统类型,此文件为块特殊文件. 这个选项也导致 file 命令忽略 stat(2) 报告的文件大小,因为在有些系统中原始磁盘分区的大小报告为0.
【其它】
文件
/usr/share/magic - 默认的幻数列表
ENVIRONMENT
环境变量 MAGIC 用于设置默认的幻数文件.
参看
magic(4) - 幻数文件的格式.
strings(1), od(1),hexdump(1) - 检查非textfile的工具.
标准的一致性
本程序比System V 的FILE命令强大, 几乎能分辨出所有的模糊语言. 与System V 的FILE命令大部分兼容.本版本能识别更多的magic, 但是,也将因此在有些情况下会产生不同输出(尽管更加精确).
本版本与System V的显著区别就是本版本对空格是作为分隔符来处理的, 所以不能在格式字符串中包含空格. 例如,现有幻数文件中的
>10 string language impress (imPRESSdata)
要改为
>10 string language\ impress (imPRESSdata)
另外, 格式字符串中的反斜线符号也要避免.例如,现有幻数文件中的
0 string \begindata Andrew Toolkit document
要改为
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2及以后的版本包括从System V 发展来的 file(1) 命令,但有所扩展.本版本与Sun的file命令差别不大.它包括对 `&' 操作符的扩展,例如,
>16 long&0x7fffffff >0 not stripped
MAGIC DIRECTORY
幻数文件项主要是从USENET收集来的,许多人都为此作出了贡献. Christos Zoulas (下边将提到的)将收集附加项信息及修正幻数文件项. 幻数文件项的合并表将会定时发布.
幻数文件项的顺序非常重要.不同的系统上的幻数项放的顺序可能不同. 如果老的 file 命令使用幻数文件,请将旧的幻数文件改名保存, (如改为 /usr/share/magic.orig) 以便日后做比较用. 参考技术A 显示结果是ASCII 和text,文件就是文本文件
file命令是检查目标文件是什么类型的文件,使用方法就是
file fileName 参考技术B 1. file 是检测文件类型的命令。
2. 文件类型就文件组织的方式,通常不同的文件类型执行不同的标准。
例如我们熟知的:txt , doc , xls , pdf ...
3. file 命令的简单用法就是:
file 文件名,例如:
file data.txt
data.txt: ASCII text
就告诉我们,data.txt 是一个text (即txt) 类型的文件。
txt 文件所采用的编码是ascii编码体系。
所以 text 是文件类型;ASCII是编码体系。
又如:
file my.pdf
my.pdf: PDF document, version 1.5
“PDF document“ 告诉我们 , my.pdf 是pdf类型的文件。
版本执行的标准是:1.5
像ascii , version 1.5 这些都是与文件类型密切相关的信息。
如果需要更详细的信息,可以加参数:
如:file -i data.txt
使用man file 看详细用法。本回答被提问者和网友采纳
Linux命令学习总结: file命令
http://www.cnblogs.com/kerrycode/p/3806618.html
Linux命令学习总结: file命令
命令简介:
该命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。
执行权限 :All User
指令所在路径:/usr/bin/file
命令语法:
file [ -bchikLnNprsvz ] [ -f namefile ] [ -F separator ] [ -m magicfiles ] file ...
命令参数:
下表列出了部分常用的参数。
参数 |
长参数 |
描叙 |
-b |
列出文件辨识结果时,不显示文件名称。 |
|
-c |
详细显示指令执行过程,便于排错或分析程序执行的情形 |
|
-f |
列出文件中文件名的文件类型 |
|
-F |
使用指定分隔符号替换输出文件名后的默认的“:”分隔符。 |
|
-i |
输出mime类型的字符串 |
|
-L |
查看对应软链接对应文件的文件类型 |
|
-z |
尝试去解读压缩文件的内容 |
|
--help |
显示命令在线帮助 |
|
--version |
显示命令版本信息 |
使用示例:
1:查看file命令的帮助信息
[root@DB-Server ~]# file --help
Usage: file [OPTION]... [FILE]...
Determine file type of FILEs.
-m, --magic-file LIST use LIST as a colon-separated list of magic
number files
-z, --uncompress try to look inside compressed files
-b, --brief do not prepend filenames to output lines
-c, --checking-printout print the parsed form of the magic file, use in
conjunction with -m to debug a new magic file
before installing it
-f, --files-from FILE read the filenames to be examined from FILE
-F, --separator string use string as separator instead of `:\'
-i, --mime output mime type strings
-k, --keep-going don\'t stop at the first match
-L, --dereference causes symlinks to be followed
-n, --no-buffer do not buffer output
-N, --no-pad do not pad output
-p, --preserve-date preserve access times on files
-r, --raw don\'t translate unprintable chars to \\ooo
-s, --special-files treat special (block/char devices) files as
ordinary ones
--help display this help and exit
--version output version information and exit
当然你也可以使用 man file 获取更加详细的帮助文档信息。
2:查看文件类型
例如,如下所示,Temp.txt 文件类型为text,编码为UTF-8 Unicode
[root@DB-Server ~]# file Temp.txt
Temp.txt: UTF-8 Unicode text, with very long lines, with CRLF line terminators
3:不输出文件名称,只显示文件格式以及编码
通过下面两个命令对时,就可以清晰的了解参数-b的作用。
[root@DB-Server ~]# file Temp.txt
Temp.txt: UTF-8 Unicode text, with very long lines, with CRLF line terminators
[root@DB-Server ~]# file -b Temp.txt
UTF-8 Unicode text, with very long lines, with CRLF line terminators
4: 输出mime类型的字符串
[root@DB-Server ~]# file -i Temp.txt
Temp.txt: text/plain; charset=utf-8
5: 查看文件中的文件名的文件类型
这个参数非常适合shell脚本去查找、判别某种文件类型的数据。
[root@DB-Server ~]# cat >test
/root/install.log
it is only one test file
[2]+ Stopped cat > test
[root@DB-Server ~]# file -f test
/root/install.log: ASCII text
it is only one test file: ERROR: cannot open `it is only one test file\' (No such file or directory)
[root@DB-Server ~]#
[root@DB-Server ~]#
5: 使用指定分隔符号替换输出文件名后的默认的“:”分隔符。
感觉这个参数很鸡肋!我搞明白这个参数的作用时,很是纳闷。
6:尝试去解读压缩文件的内容
[root@DB-Server ~]# file -z Temp.txt.gz
Temp.txt.gz: UTF-8 Unicode text, with very long lines, with CRLF line terminators (gzip compressed data, was "Temp.txt", from Unix, last modified: Tue Jun 24 00:34:15 2014)
[root@DB-Server ~]#
7: 查看软链接对应文件的文件类型
如下所示,创建一个软链接sfile,然后分别用file 和带参数的file -L查看
[root@DB-Server ~]# ln -s Temp.txt.gz sfile
[root@DB-Server ~]# file sfile
sfile: symbolic link to `Temp.txt.gz\'
[root@DB-Server ~]# file -L sfile
sfile: gzip compressed data, was "Temp.txt", from Unix, last modified: Tue Jun 24 00:34:15 2014
[root@DB-Server ~]#
以上是关于linux file命令的主要内容,如果未能解决你的问题,请参考以下文章