0014. shell命令--file

目录

14. shell命令--file

功能说明

语法格式

选项说明

实践操作

注意事项


14. shell命令--file

功能说明

        file 是 Linux 中的一个命令行工具,用于确定给定文件的类型。它可以检测文件是 ASCII 文本、可执行文件、压缩文件、图片、音频文件等。这对于快速识别文件内容或格式非常有用。

        由于 Linux 系统并不是像 Windows 系统那样通过扩展名来定义文件类型的,因此用户无法直接通过文件名来进行区别。file 命令可以通过分析文件头部信息中的标识信息来显示文件类型,使用很方‍便。

语法格式

file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

SYNOPSIS
  file [-bchiklLNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname]
       [-F separator] [-f namefile] [-m magicfiles] file ...
  file -C [-m magicfiles]
  file [--help]

选项说明

  • -b: 只在输出中显示文件类型,不显示文件名。
  • --brief: 与 -b 相同。
  • -c:详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -i: 显示文件的 MIME 类型。
  • -L:直接显示符号连接所指向的文件的类别。
  • -s: 尽可能多地读取文件以进行类型检测。
  • -z 或 --uncompress: 尝试查看压缩文件的内容。
  • -m:指定魔法数字文件。
  • --mime-type: 显示文件的 MIME 类型,但不带参数。
  • -f:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
  • [文件或目录...]:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

实践操作

1. 显示目录或文件类型
mkdir -p /test/file    #创建测试目录
cd /test/file   #切换到测试目录
mkdir dir1    #创建测试目录
file dir1    #直接使用
file -b dir1/    #不显示目录名称
file -i dir1/    #显示 MIME 类别
file -bi dir1/
touch file1.txt    #创建测试文件
file file1.txt    # empty 是空的意思,里面没有内容
file -bi file1.txt
echo linux >file1.txt    #向文件 file1.txt 写入内容
cat file1.txt    #文件里面有内容了
file file1.txt    #再次查看文件类型,变成文本文件了,ASCII text ASCII文本

2. 显示更多的文件类型
ls -lh /bin
file /bin
file -L /bin    #直接显示符号连接所指向的文件的类别
file /dev/cdrom
file -L /dev/cdrom
ln -s file1.txt file1_soft_like.txt    #创建软连接文件,以后会讲到
ll
file file1_soft_like.txt    # symbolic link 符号链接
file -L file1_soft_like.txt
pwd
cd ..
tar zcf file.tar.gz file/    #打包文件,模拟环境
tar tf file.tar.gz    #查看包里内容
mv file.tar.gz file
ls
cd -
ls
file file.tar.gz    # gzip compressed data :gzip压缩数据类型
file -z file.tar.gz    #了解即可

命令示例:1. 显示目录或文件类型

mkdir -p /test/file    
cd /test/file   
mkdir dir1    
file dir1    
file -b dir1/    
file -i dir1/    
file -bi dir1/
touch file1.txt    
file file1.txt    
file -bi file1.txt
echo linux >file1.txt    
cat file1.txt    
file file1.txt

输出结果:

[root@MineGi ~]# mkdir -p /test/file    
[root@MineGi ~]# cd /test/file 
[root@MineGi /test/file]# mkdir dir1    
[root@MineGi /test/file]# file dir1    
dir1: directory
[root@MineGi /test/file]# file -b dir1/
directory
[root@MineGi /test/file]# file -i dir1/    
dir1/: inode/directory; charset=binary
[root@MineGi /test/file]# file -bi dir1/
inode/directory; charset=binary
[root@MineGi /test/file]# touch file1.txt   
[root@MineGi /test/file]# file -bi file1.txt
inode/x-empty; charset=binary
[root@MineGi /test/file]# echo linux >file1.txt
[root@MineGi /test/file]# cat file1.txt    
linux
[root@MineGi /test/file]# file file1.txt
file1.txt: ASCII text
[root@MineGi /test/file]#

命令示例:2. 显示更多的文件类型

ls -lh /bin
file /bin
file -L /bin    
file /dev/cdrom
file -L /dev/cdrom
ln -s file1.txt file1_soft_like.txt    
ll
file file1_soft_like.txt    
file -L file1_soft_like.txt
pwd
cd ..
tar zcf file.tar.gz file/    
tar tf file.tar.gz    
mv file.tar.gz file
ls
cd -
ls
file file.tar.gz    
file -z file.tar.gz 

输出结果:

[root@MineGi /test/file]# ls -lh /bin
lrwxrwxrwx. 1 root root 7 11月 22 09:52 /bin -> usr/bin
[root@MineGi /test/file]# file /bin
/bin: symbolic link to `usr/bin'
[root@MineGi /test/file]# file -L /bin 
/bin: directory
[root@MineGi /test/file]# file /dev/cdrom
/dev/cdrom: symbolic link to `sr0'
[root@MineGi /test/file]# file -L /dev/cdrom
/dev/cdrom: block special
[root@MineGi /test/file]# ln -s file1.txt file1_soft_like.txt 
[root@MineGi /test/file]# ll
总用量 4
drwxr-xr-x 2 root root 6 11月 27 15:59 dir1
lrwxrwxrwx 1 root root 9 11月 27 16:00 file1_soft_like.txt -> file1.txt
-rw-r--r-- 1 root root 6 11月 27 16:00 file1.txt
[root@MineGi /test/file]# file file1_soft_like.txt    
file1_soft_like.txt: symbolic link to `file1.txt'
[root@MineGi /test/file]# file -L file1_soft_like.txt
file1_soft_like.txt: ASCII text
[root@MineGi /test/file]# pwd
/test/file
[root@MineGi /test/file]# cd ..
[root@MineGi /test]# tar zcf file.tar.gz file/    
[root@MineGi /test]# tar tf file.tar.gz   
file/
file/dir1/
file/file1.txt
file/file1_soft_like.txt
[root@MineGi /test]# mv file.tar.gz file
[root@MineGi /test]# ls
chattr  cp  file  mkdir  mv  rm  touch  tree
[root@MineGi /test]# cd -
/test/file
[root@MineGi /test/file]# ls
dir1  file1_soft_like.txt  file1.txt  file.tar.gz
[root@MineGi /test/file]# file file.tar.gz    
file.tar.gz: gzip compressed data, from Unix, last modified: Wed Nov 27 16:01:31 2024
[root@MineGi /test/file]# file -z file.tar.gz 
file.tar.gz: POSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Wed Nov 27 16:01:31 2024)
[root@MineGi /test/file]#

注意事项

  • file 命令主要基于文件的“魔术数字”来确定文件类型。这些通常是文件开头或特定位置的特定字节序列。
  • 对于某些类型的文件,如加密或混淆的文件,file 可能无法准确确定其类型。
  • 某些类型的文件可能具有相似的“魔术数字”,因此可能存在误报的情况。

        file 命令使用一个称为 "magic" 的文件来确定文件类型,这个文件通常位于 /usr/share/file/magic。你可以通过修改这个文件或创建自己的 magic 文件来扩展或自定义 file 命令的文件类型检测能力。

        file 命令是一个强大的工具,可以帮助你快速了解文件的基本信息和类型。无论是普通的文本文件、图片、音频文件,还是更复杂的可执行文件或压缩文件,file 命令都能为你提供有用的信息。通过掌握其基本用法和高级选项,你可以更有效地管理和处理 Linux 系统中的文件。同时,记得在必要时查阅手册页(man file)以获取更详细的信息和示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值