linux中file命令 linux filenr

linux file命令詳解

linux系統(tǒng)下file命令用于查詢文件類型。平時我們判定一個文件的類型通常是通過該文件的擴展名,而file命令是通過詳細閱讀文件內(nèi)容,找到特征量來判定文件類型。下面是file命令的具體內(nèi)容:

成都創(chuàng)新互聯(lián)公司始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達十年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:PVC花箱等企業(yè),備受客戶贊賞。

1、file命令判定文件類型的順序:

查詢Device,Directory,Symbolic等特殊文件

查詢壓縮文件

查詢tar文件

基于Magic數(shù)據(jù)庫文件的查詢

查詢ASCII,UNICODE等類型的文本文件

如果以上都不符合,則文件為二進制文件

2、原理:

file命令通過讀取保存著各種文件特性的數(shù)據(jù)庫信息和被判定文件進行匹配,數(shù)據(jù)庫文件保存在/etc/magic、/usr/share/misc/file/magic或其他位置。

0string\177ELFELF

4byte0invalidclass

4byte132bit

5byte1LSB

16leshort2executable

3、magic文件由4部分組成:

偏移量

數(shù)據(jù)類型

輸出字符串

magic文件的更多格式信息可以通過manmagic來查看。

以上就是小編今天的分享了,希望可以幫助到大家。

linuxfile兩次讀

多次打開同一文件與O_APPEND:

1、在linux系統(tǒng)下,一個進程中兩次打開同一個文件,然后分別讀取,這里可以猜想一下它最終的會出現(xiàn)什么情況?我的猜想是----第一種是fd1和fd2分別讀(這個意思是對同一文件讀操作的時候,文件描述符fd1和fd2分別從一個文件里面讀取到相同的內(nèi)容);第二張是接續(xù)讀(這個意思是,文件描述符fd1和fd2,在文件描述符fd1讀取一個位置,也就是文件指針指向的一個位置,第二個文件描述的文件指針會接著上次文件指針指向的位置繼續(xù)往后面移動,通俗的講,就是讀取到的文件內(nèi)容不一樣

linux file命令

file [-beLvz][-f 名稱文件][-m 魔法數(shù)字文件...][文件或目錄...]

【功能】

辨識文件類型。

【舉例】

*檢查文件類型:

$ 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

*檢查文件類型,文件名和結(jié)果用,隔開:

$file -F,example/

輸入之后,輸出如下:

example, directory

這里可以指定其它的分割字符。

*檢查塊文件內(nèi)部,獲得文件系統(tǒng)信息

$ 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

這里,如果沒有權(quán)限,執(zhí)行不了。

【描述】

ile 命令的使用. File 命令試圖檢查每個參數(shù)以判定文件的類型. 檢查共有三組,按如下順序進行:文件系統(tǒng)檢查,幻數(shù)檢查,以及語言檢查. 文件系統(tǒng)檢查成功則輸出文件類型.

輸出的類型一般會包含以下的詞中的一個: text (文件中僅有 ASCII 字符,可以用 ASCII 終端讀此文件,以保證內(nèi)容的可靠性), executable (文件中保存的是程序編譯后的結(jié)果,一些UNIX 內(nèi)核或其它內(nèi)核能理解這類文件), 或者 data 表示所有其它類型文件(data 一般為二進制文件或者不可打印的). 但是有的常用的文件格式(如core文件、tar包),雖然也包含二進制數(shù)據(jù),卻不屬于這一類如果要修改 /usr/share/magic 或者程序本身, preserve these keywords . 當(dāng)文件為``text'' 類型時,認為此文件為可讀文件. 不要象在Berkeley環(huán)境中那樣做 - 要把``shell commands text''改為``shell script''.

文件系統(tǒng)檢查是建立在對 stat(2) 系統(tǒng)調(diào)用結(jié)果的分析上的. 程序會分析文件是否為空,或者是否是某種特殊文件. 對于所有可在現(xiàn)有系統(tǒng)上使用的文件類型 (比如套接口文件,動態(tài)鏈接文件,命名管道文件(FIFOs) 等),只要它在系統(tǒng)頭文件 sys/stat.h 中已經(jīng)定義過,就可以被檢查到.

幻數(shù)檢查用來檢查文件中是否有特殊的固定格式的數(shù)據(jù). 規(guī)范的例子如二進制可執(zhí)行文件(編譯后的程序) a.out ,該文件格式在標(biāo)準(zhǔn)include目錄下的 a.out.h 文件中定義,也可能在 exec.h 中定義. 這些文件在文件開始部分附近的一個特殊位置保存有一個'幻數(shù)' , 通過幻數(shù)告訴UNIX 操作系統(tǒng)此文件是二進制可執(zhí)行文件, 和其中包含的其它類型. 幻數(shù)的概念已經(jīng)擴展到數(shù)據(jù)文件.任何在文件固定位置有與文件類型相關(guān)的不變標(biāo)識符的文件都可以這樣表示. 這些文件中的信息可以從幻數(shù)文件 /usr/share/magic 中讀取.

如果文件為 ASCII 文件, file 會試圖檢查它的語言. 語言檢查在文件開始的幾個塊中(任意位置)查找是否有特殊字符串(參看 names.h) .br 指出此文件很可能是 troff(1) 輸入文件, 而關(guān)鍵字 struct 指出此文件是C程序. 語言檢查不如前兩組檢查可靠,所以放在最后執(zhí)行.它也用來檢查一些混合文件(例如 tar(1) 存檔文件)并確定文件是`ascii text'類型還是`data'類型.

選項

-b

不輸出文件名 (簡要模式).

-c

檢查時打印輸出幻數(shù)文件的解析結(jié)果.常與 -m 一起使用,用來在安裝幻數(shù)文件之前調(diào)試它.

-f 命名文件

從在參數(shù)表前的命名文件中讀出將要檢查的文件名(每行一個文件).要有命名文件,或者至少有一個文件名參數(shù); 如果要檢查標(biāo)準(zhǔn)輸入, 使用``-''作為文件參數(shù).

-m list

指定包含幻數(shù)的文件列表.可以是單個文件,也可以是用冒號分開的多個文件.

-n

每檢查完一個文件就強制刷新標(biāo)準(zhǔn)輸出. 僅在檢查一組文件時才有效. 一般在將文件類型輸出到管道時才采用此選項.

-v

打印程序版本并退出.

-z

試圖查看壓縮文件內(nèi)部信息.

-L

(在支持符號鏈接的系統(tǒng)上)選項顯示符號鏈接文件的原文件, 就像 ls(1) 命令的like-named 選項.

-s

通常, file 只是試圖去檢查在文件列表中那些 stat(2) 報告為正常文件的文件的類型.由于讀特殊文件將可能導(dǎo)致不可知后果,所以這樣可以防止發(fā)生問題.使用 -s 選項時 file 命令也將去讀文件列表中的塊特殊文件和字符特殊文件. 一般用于從原始磁盤分區(qū)中獲得文件系統(tǒng)類型,此文件為塊特殊文件. 這個選項也導(dǎo)致 file 命令忽略 stat(2) 報告的文件大小,因為在有些系統(tǒng)中原始磁盤分區(qū)的大小報告為0.

【其它】

文件

/usr/share/magic - 默認的幻數(shù)列表

ENVIRONMENT

環(huán)境變量 MAGIC 用于設(shè)置默認的幻數(shù)文件.

參看

magic(4) - 幻數(shù)文件的格式.

strings(1), od(1),hexdump(1) - 檢查非textfile的工具.

標(biāo)準(zhǔn)的一致性

本程序比System V 的FILE命令強大, 幾乎能分辨出所有的模糊語言. 與System V 的FILE命令大部分兼容.本版本能識別更多的magic, 但是,也將因此在有些情況下會產(chǎn)生不同輸出(盡管更加精確).

本版本與System V的顯著區(qū)別就是本版本對空格是作為分隔符來處理的, 所以不能在格式字符串中包含空格. 例如,現(xiàn)有幻數(shù)文件中的

10 string language impress (imPRESSdata)

要改為

10 string language\ impress (imPRESSdata)

另外, 格式字符串中的反斜線符號也要避免.例如,現(xiàn)有幻數(shù)文件中的

0 string \begindata Andrew Toolkit document

要改為

0 string \\begindata Andrew Toolkit document

SunOS releases 3.2及以后的版本包括從System V 發(fā)展來的 file(1) 命令,但有所擴展.本版本與Sun的file命令差別不大.它包括對 `' 操作符的擴展,例如,

16 long0x7fffffff 0 not stripped

MAGIC DIRECTORY

幻數(shù)文件項主要是從USENET收集來的,許多人都為此作出了貢獻. Christos Zoulas (下邊將提到的)將收集附加項信息及修正幻數(shù)文件項. 幻數(shù)文件項的合并表將會定時發(fā)布.

幻數(shù)文件項的順序非常重要.不同的系統(tǒng)上的幻數(shù)項放的順序可能不同. 如果老的 file 命令使用幻數(shù)文件,請將舊的幻數(shù)文件改名保存, (如改為 /usr/share/magic.orig) 以便日后做比較用.

本文名稱:linux中file命令 linux filenr
分享鏈接:http://muchs.cn/article20/dosphco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站導(dǎo)航品牌網(wǎng)站制作、定制開發(fā)、用戶體驗電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司