file命令

Last Updated: 2023-05-31 07:37:36 Wednesday

-- TOC --

在Linux中,查看文件类型,用file命令。有一种说法:在Linux中,一切都是文件!

file命令

file — determine file type

关于Linux系统中的文件,文件后缀是不太重要的,基本上可以很随意。file命令并不是通过文件后缀来判别文件类型,而是通过文件头部信息。这一点跟Windows系统差别较大。

$ file Python-3.7.1/setup.py
Python-3.7.1/setup.py: Python script, ASCII text executable
$ file Python-3.7.1/Makefile
Python-3.7.1/Makefile: automake makefile script, ASCII text, with very long lines
$ file Python-3.7.1
Python-3.7.1: directory

我常常用file命令看看二进制文件是否做了strip,以及它们的所属类型。

$ file sum.o sub.o test.o libsub.so test
sum.o:     ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
sub.o:     ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
test.o:    ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
libsub.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
test:      ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped

Linux中二进制文件分为以下几种类型:relocatable,executable,shared object和core dump file!它们都属于ELF格式。

查看设备文件类型:

$ file /dev/tty1
/dev/tty1: character special
$ file /dev/null
/dev/null: character special
$ file /dev/zero
/dev/zero: character special

-b,只显示结果,不显示文件名:

$ file -b test.c
C source, ASCII text

-i,显示出文件的MIME类型:

$ file -i file.c file /dev/{wd0a,hda}
file.c:      text/x-c
file:        application/x-executable
/dev/hda:    application/x-not-regular-file
/dev/wd0a:   application/x-not-regular-file

-s,查看特殊文件类型,比如探测文件系统类型:

$ sudo file -s /dev/sdc1

目标文件与可执行文件小历史

object_file_format

COFF的主要贡献,是在目标文件中引入了section的概念和机制,不同类型的目标文件,可以拥有不同数量和不同类型的section。另外,它还定义了调试数据格式。

本文链接:https://cs.pynote.net/sf/linux/shell/202111184/

-- EOF --

-- MORE --