學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > Linux怎么使用file命令識(shí)別文件類型

Linux怎么使用file命令識(shí)別文件類型

時(shí)間: 春健736 分享

Linux怎么使用file命令識(shí)別文件類型

  file是通過查看文件的頭部內(nèi)容,來獲取文件的類型。使用file命令可以知道某個(gè)文件究竟是二進(jìn)制(ELF格式)的可執(zhí)行文件, 還是Shell Script文件,或者是其它的什么格式。那么Linux怎么使用file命令識(shí)別文件類型?

  Linux怎么使用file命令識(shí)別文件類型

  我們知道Linux文件系統(tǒng)是Linux內(nèi)核支持的基本功能之一,并由根 / 開始往下形成倒立樹狀的級(jí)連式結(jié)構(gòu)。文件與目錄是Linux文件系統(tǒng)的兩個(gè)基本元素,(廣義的)文件分為普通文件、目錄文件、連接文件和特殊文件??梢酝ㄟ^file命令來識(shí)別各種不同的文件類型。

  linux對(duì)于文件的擴(kuò)展名沒有像windows要求的那么嚴(yán)格,所以在使用linux的過程中經(jīng)常會(huì)遇到有些文件根本就沒有擴(kuò)展名,哪么我們應(yīng)該如何去判斷沒有擴(kuò)展名的文件,到底是文件還是目錄呢?其實(shí)我們可以借助file來檢查文件的類型,示例如下:

  [root@localhost ~]# file install.log

  install.log: UTF-8 Unicode text

  install.log為文本文件

  [root@localhost ~]# file /usr/local/

  /usr/local/: directory

  /usr/local為目錄、

  在Linux系統(tǒng)中,文件類型根據(jù)文件的權(quán)限以及文件內(nèi)容類型來劃分的。在linux中文件本身是不需要后綴名稱的,我們習(xí)慣上添加后綴名稱僅僅是便于直觀了解這是哪種用途類型。

  語法:file [選項(xiàng)] [文件]

  file命令檢驗(yàn)文件類型按以下順序來完成:

  檢驗(yàn)文件系統(tǒng)(Filesystem)中支持的文件類型。

  檢驗(yàn)magic file規(guī)則。

  檢驗(yàn)文件內(nèi)容的語言和字符集。

  檢驗(yàn)文件系統(tǒng)(Filesystem)中支持的文件類型

  文件系統(tǒng)支持的文件類型指的是通過ls -l 中第一個(gè)字符表示的文件類型:

  -(regular):正規(guī)文件(包括文本文件(ASCII,會(huì)打印text),可執(zhí)行文件(會(huì)打印excutable),其他二進(jìn)制文件(會(huì)打印data))

  d(directory):目錄

  l(link):軟鏈接(不包括硬連接,硬鏈接會(huì)以正規(guī)文件顯示

  b(block buffered special):隨機(jī)存儲(chǔ)的設(shè)備文件,如硬盤,光盤等存儲(chǔ)設(shè)備

  c(character unbuffered special):持續(xù)輸入的設(shè)備文件,如鼠標(biāo),鍵盤

  s(socket):socket文件,最常在/var/run目錄下看到這類文件

  p(pipe):管道文件(first-in-first-out),它的目的在解決多個(gè)程序同時(shí)存取一個(gè)文件造成的錯(cuò)誤問題

  檢驗(yàn)magic file規(guī)則

  magic file指的是那些具有特殊文件格式的文件,如C文件,它會(huì)有#include字樣;tar文件的前幾個(gè)字節(jié)會(huì)有特殊的規(guī)則。而檢驗(yàn)magic file規(guī)則就是根據(jù)這些特殊的格式去判斷一個(gè)文件的類型。而這些規(guī)則是保存在$HOME/.magic.mgc,$HOME/.magic,/etc/magic.mgc,/etc/magic/usr/share/misc/magic.mgc,/usr/share/misc/magic中。

  */magic文件是文本文件,而*/magic.mgc文件則是由*/magic編譯后的二進(jìn)制文件。同一目錄下若存在*/magic.mgc則使用該文件,否則使用*/magic。

  這些配置的優(yōu)先級(jí)為$HOME/.magic*>/etc/magic*>/usr/share/misc/magic*。

  */magic文件內(nèi)容格式

  文件中的每行都指定了一個(gè)規(guī)則測(cè)試去檢驗(yàn)文件類型,這個(gè)規(guī)則由4個(gè)域指定:

  offset:指定由文件起始的第幾個(gè)byte開始檢驗(yàn)。

  type:要進(jìn)行檢驗(yàn)的數(shù)據(jù)類型,即由offset那個(gè)byte開始的那個(gè)數(shù)據(jù)類型是什么。具體有哪些數(shù)據(jù)類型,可以參才magic(5)。常用的數(shù)據(jù)類型有

  byte:一個(gè)byte的值

  short:兩個(gè)byte的值

  long:四個(gè)byte的值

  string:字符串。

  test:檢驗(yàn)值。用于檢驗(yàn)offset下的type是否是這個(gè)test值。使用C語言的數(shù)值或字符表示形式。

  message:用于顯示檢驗(yàn)結(jié)果的信息顯示

  如果type為數(shù)值類型,那么其后面可添加&value,表示先與后面的test值進(jìn)行‘與’操作,再進(jìn)行比較。如果type為字符串類型,則其后可跟/[Bbc]*,/b表示忽略空格,/c表示忽略字母大小寫。

  如果test的值為數(shù)值類型,可以數(shù)值前添加=,<,>,&,^,~,分別表示相等、小于、大于、與操作、異或操作、取反操作。如果test的值為字符串類型,可以在其前添加=、<、>。

看過“ Linux怎么使用file命令識(shí)別文件類型 ”的人還看了:

1.如何查看鏡像文件類型

2.Linux如何讀取iOS鏡像文件

3.linux虛擬機(jī)中如何用命令來移動(dòng)文件夾

4.linux文件系統(tǒng)怎么管理

5.Linux動(dòng)態(tài)庫怎么生成

653575