.查看文件类型
在Windows下,文件都有标准扩展,基本上可以根据文件扩展名来识别和判断文件类型,如.exe是可执行文件,.c是C代码文件、.zip是压缩文件等。
Linux与Windows不同,Linux下的文件并没有标准扩展名,Linux也不是根据扩展名来识别文件,而是根据文件头来识别文件类型。
尽管在大多数Linux发行版中,默认情况下都能以不同颜色显示目录以及不同类型的文件,但是根据颜色只能简单粗略判断常用类型文件。要准确确定一个文件的类型,必须依赖于file命令。file命令能读取文件头并识别文件类型,包括目录。用法:
$ file 文件
说明:只能查看具有可读属性的文件。
file命令支持通配符,如可以一次性查看当前目录下的全部文件类型,如图 3.15所示。
图3.15 file识别文件类型
file命令还可以查看二进制可执行文件的详细信息,包括所运行的处理器体系结构。在PC机上用gcc编译得到的程序,用file命令查看:
vmuser@Linux-host: hello$ file hello hello.x86: ELF 32-bit LSB executable, <b><span>Intel 80386, </span></b>version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
而经过arm-linux-gcc交叉编译之后再次查看:
vmuser@Linux-host: hello$ file hello hello: ELF 32-bit LSB executable,<b><span> ARM, </span></b>version 1, dynamically linked (uses shared libs), for GNU/Linux 2.6.27, not stripped
如果运行某个程序出现cannot execute binary file这的错误,很有可能是文件编译的目标体系结构与当前所运行的体系结构不一致,可用file这样的命令进行确认。