在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux命令file的案例說明

Linux愛好者 ? 來源:C語言中文網 ? 作者:C語言中文網 ? 2020-12-24 11:41 ? 次閱讀

有人的地方,就有江湖。人往往是最難揣摩的。如果有一面神奇的魔鏡能看出一個人的內心,世界會不會變得更加美好呢?

Linux 的世界里,file 就是這樣一面魔鏡,它可以看到每個文件的內心。file 命令可以識別出文件的類型和編碼格式,這是其他命令所做不到的。

查看文件類型

開門見山,我們直接用 file 這面魔鏡來看看文件的“內心”。

#不加任何選項, 直接查看poetry文件[roc@roclinux ~]$ file poetry.txtpoetry.txt: ASCII text

使用不帶任何選項的 file 命令,即可查看指定文件的類型信息。

在上面的例子中可以看出 poetry.txt 的文件類型為 text,編碼格式為 ASCII。

#使用-b選項來查看poetry文件[roc@roclinux ~]$ file -b poetry.txtASCII text

上面的例子中,我們使用了-b選項,可以使 file 命令的輸出不出現文件名,只顯示文件格式以及編碼。

#使用-i選項來查看poetry文件[roc@roclinux ~]$ file -i poetry.txtpoetry.txt: text/plain; charset=us-ascii

上面的例子中,我們使用了-i選項,可以輸出文件的 MIME 類型字符串。

小科普,MIME 類型,即 Multipurpose Internet Mail Extensions,稱為多用途互聯網郵件擴展類型,用來標識和記錄文件的打開方式,一些常見的類型包括:

text/plain:普通文本。

text/html:HTML文本。

application/pdf:PDF文檔。

application/msword:Word文檔。

image/png:PNG圖片。

mage/jpeg:JPEG圖片。

application/x-tar:TAR文件。

application/x-gzip:GZIP文件。

設置輸出分隔符

從上面的例子可以看出,file 命令的輸出格式是:

文件名:文件類型和編碼格式

如果希望將中間的分隔符由冒號(:)改成其他符號,則可以使用-F選項來實現。

[roc@roclinux ~]$ file poetry.txtpoetry.txt: ASCII text [roc@roclinux ~]$ file -F “=》” poetry.txtpoetry.txt=》 ASCII text

有些同學會問,這樣的功能有何意義呢?在一些自動化文件分析的腳本中,開發者為了避免分隔符和普通字符重復而造成誤解析的情況,通常是會手工調整間隔符的。

查看軟鏈接文件

file 命令能查看所有文件的類型信息,那么問題來了,對于一個軟鏈接文件,file 命令是返回軟鏈接文件本身的類型信息,還是返回軟鏈接所指向的目標文件的類型信息呢?讓我們通過試驗得出結論吧:

#新建一個軟鏈接文件[roc@roclinux ~]$ ln -s poetry.txt poetry_s.txt #通過file命令查看軟鏈接文件[roc@roclinux ~]$ file poetry_s.txtpoetry_s.txt: symbolic link to `poetry.txt‘ #使用-L選項來查看軟鏈接文件[roc@roclinux ~]$ file -L poetry_s.txtpoetry_s.txt: ASCII text

試驗是找到真相的最好方法。通過上面的示例,我們已經很清楚地看到了:

如果通過 file 命令直接查看軟鏈接文件,則查看的就是軟鏈接文件本身的信息。

如果使用-L選項來查看軟鏈接文件,則查看的是軟鏈接指向的目標文件的信息。

按照清單去工作

如果我們需要用 file 命令查看大量文件的類型信息,恰好這些文件的名稱都被存儲在了一個文本文件中,那么-f選項就派上用場了。

我們可以通過-f選項來指定這個文本文件,file 命令就會乖乖地去逐個查看每一個文件的類型信息,示例如下:

#文件中含有三個待查文件, 我們故意設置了一個不存在的文件, 位于最后一個[roc@roclinux ~]$ cat poetry_list.txt/root/book/poetry.txt /root/book/poetry_s.txt Nothing.txt #使用-f選項執行file命令[roc@roclinux ~]$ file -f poetry_list.txt/root/book/poetry.txt: ASCII text/root/book/poetry_s.txt: symbolic link to `poetry.txt’Nothing.txt: ERROR: cannot open `Nothing.txt ‘ (No such file or directory)在上面的例子中,poetry_list.txt 包含了 3 行內容:

poetry.txt。

指向poetry.txt的軟鏈接poetry_s.txt。

Nothing.txt,一個明顯不存在的文件。

從結果可以看出,前兩個如期輸出了類型信息,最后一個也如期報了錯誤。

-z 選項,想說愛你不容易

一次偶然的機會,我在 man file 中發現了-z選項,原文解釋是“Try to look inside compressed files”,看來 file 還可以查看壓縮文件內部的文件。

那為什么要用“Try to”這樣的字樣呢,為了弄明白這個細節,于是,我的試驗開始了。

第一輪試驗開始,我們先來試驗“一個未經壓縮的 tar 包”:

#制作一個未經壓縮的tar包[roc@roclinux ~]$ tar -cvf poetry.tar poetry.txt poetry_s.txtpoetry.txt poetry_s.txt #嘗試使用-z選項[roc@roclinux ~]$ file -z poetry.tarpoetry.tar: POSIX tar archive (GNU)

似乎并不盡如人意,file 只是看出 poetry.tar 是一個 tar 包,并沒有深入到 tar 包內部,第一輪試驗宣告失敗。

馬上進入第二輪試驗,我們看看一個經過 gzip 壓縮過的 tar 包情況如何?

#制作一個tar.gz包[roc@roclinux ~]$ tar -czvf poetry.tar.gz poetry.txt poetry_s.txtpoetry.txtpoetry_s.txt #使用-z選項查看[roc@roclinux ~]$ file -z poetry.tar.gzpoetry.tar.gz: POSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Tue Mar 1 17:43:59 2016)輸出的信息稍微豐富了一些,但還是停留在 tar 包的文件類型的層面,仍然沒有窺探到里面的 poetry.txt 和 poetry_s.txt 文件。第二輪試驗也宣告失敗。 那 bzip2 壓縮的 tar 包是否 OK 呢?我們又趕快進入了第三輪試驗。

#制作一個.tar.bz2文件[roc@roclinux ~]$ tar -cjvf poetry.tar.bz2 poetry.txt poetry_s.txtpoetry.txtpoetry_s.txt #使用-z選項查看[roc@roclinux ~]$ file -z poetry.tar.bz2poetry.tar.bz2: POSIX tar archive (GNU) (bzip2 compressed data, block size = 900k)

如你所見,第三輪試驗仍然是失敗的。我已經開始懷疑人生了。信念讓我堅持,不能服輸。哈哈,就這樣,我們再次踏上征程。我懷疑file只能窺探到單個文件壓縮的情況,于是,第四輪試驗開始了。

#制作一個只包含1個文件的bz2文件[roc@roclinux ~]$ bzip2 -c poetry.txt 》 poetry.bz2 #使用-z選項查看[roc@roclinux ~]$ file -z poetry.bz2poetry.bz2: ASCII text (bzip2 compressed data, block size = 900k)

結果依然讓我失望,這到底是要鬧哪樣啊?到了這步田地,也就剩下單個 gzip 壓縮文件的情況沒有嘗試了,我再碰碰運氣吧,如果-z選項還是不能如愿地顯示壓縮文件包含文件的類型信息,我就打算給 file 的作者寫郵件投訴了。

于是,第五輪試驗開始了。

#制作一個僅包含1個文件的gz文件[roc@roclinux ~]$ gzip -c poetry.txt 》 poetry.gz #嘗試用-z選項查看, 竟然查出結果了, 看到了ASCII text字樣[roc@roclinux ~]$ file -z poetry.gzpoetry.gz: ASCII text (gzip compressed data, was “poetry.txt”, from Unix, last modified: Tue Mar 1 19:01:22 2016) #再試試沒有-z選項的情況, 確實沒有探測出ASCII text類型[roc@roclinux ~]$ file poetry.gzpoetry.gz: gzip compressed data, was “poetry.txt”, from Unix, last modified: Tue Mar 1 19:01:22 2016

終于,終于,我們終于成功了,我們通過試驗找到了答案。

直到這步我們才知道,man 中 -z 選項的解釋雖然是“Try to look inside compressed files”,但其實只支持對 gzip 包內部文件的窺探,而對于 tar、tar.gz、tar.bz2 和 bz2 包全部都不支持。

大膽猜測,file 的作者可能是迫于開發時間的壓力,僅僅支持了 gzip 的情況,但是又不希望未來僅支持這一種壓縮類型,因此寫上“Try to”,為日后的擴展留下了可能性。

原文標題:每天一個 Linux 命令(62):file 命令

文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11465

    瀏覽量

    212841
  • File
    +關注

    關注

    0

    文章

    19

    瀏覽量

    14499

原文標題:每天一個 Linux 命令(62):file 命令

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務,如管理文件和目錄、操作進程、網絡通信、軟
    的頭像 發表于 05-03 18:08 ?897次閱讀

    Linux系統中最重要的三個命令

    Linux三劍客是Linux系統中最重要的三個命令,它們以其強大的功能和廣泛的應用場景而聞名。這三個工具的組合使用幾乎可以完美應對Shell中的數據分析場景,因此被統稱為Linux三劍
    的頭像 發表于 03-03 10:37 ?359次閱讀

    Linux ip命令常用操作

    Linux?ip命令常用操作 在Linux系統中,ip命令是用于管理網絡接口和路由的強大工具。相比于舊的?ifconfig命令,ip
    的頭像 發表于 02-19 10:23 ?576次閱讀

    常用linux命令

    使用command A | command B | command C命令,將A命令產生的標準輸出作為B命令的標準輸入(注意只能接收前一個命令的標準輸出)。
    的頭像 發表于 01-20 14:26 ?350次閱讀

    Linux實時查看日志的四種命令詳解

    如何在Linux中實時查看日志文件的內容?那么有很多實用程序可以幫助用戶在文件更改或不斷更新時輸出文件的內容。在Linux中實時顯示文件內容的常用命令是tail命令(有效地管理文件)。
    的頭像 發表于 01-13 10:45 ?2686次閱讀
    <b class='flag-5'>Linux</b>實時查看日志的四種<b class='flag-5'>命令</b>詳解

    詳解Linux sort命令之掌握排序技巧與實用案例

    linux系統使用過程中,提供了sort排序命令,支持常用的排序功能。 常用參數 sort命令支持很多參數,常用參數如下: ? 短參數 長參數 說明 -n – number-sort
    的頭像 發表于 01-09 10:10 ?818次閱讀

    Linux grep命令詳解

    Linux grep命令是一種非常常用的文本搜索工具,它可以在給定的文件中搜索匹配的字符串,并輸出匹配的行。grep是全稱“global search regular expression print”,可以識別正則表達式,并使用正則表達式進行搜索。
    的頭像 發表于 12-25 09:39 ?768次閱讀

    盤點Linux系統中的常見命令

    作為運維同學怎能不知道Linux系統中的lsmod、lsof、lspci、lsscsi命令呢,今天就來盤一盤她及實例。
    的頭像 發表于 12-03 09:48 ?713次閱讀
    盤點<b class='flag-5'>Linux</b>系統中的常見<b class='flag-5'>命令</b>

    Linux常用命令

    remove nplay 復制、剪切、刪除 復制: cp file1 file2 遞歸復制: cp -r dir/* dir/ 剪切: mv file path 刪除: rm -rf fil
    的頭像 發表于 11-06 16:04 ?327次閱讀
    <b class='flag-5'>Linux</b>常用<b class='flag-5'>命令</b>

    Linux系統中shell命令解析

    shell是Linux系統的用戶界面,提供了用戶與內核交互的一種接口,它接收用戶輸入的命令并到送到內核去執行,因此也被稱為Linux命令解釋器。
    的頭像 發表于 11-05 15:40 ?803次閱讀

    Linux實用命令大全

    Linux實用命令大全
    的頭像 發表于 10-23 13:50 ?535次閱讀
    <b class='flag-5'>Linux</b>實用<b class='flag-5'>命令</b>大全

    Linux lsof命令的基本用法

    linux 系統中,一切皆文件。通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以 lsof 命令不僅可以查看進程打開的文件、目錄,還可以查看進程監聽的端口等 socket 相關的信息。本文將介紹 lsof 命令
    的頭像 發表于 10-23 11:52 ?1105次閱讀
    <b class='flag-5'>Linux</b> lsof<b class='flag-5'>命令</b>的基本用法

    Linux開發怎么學?

    file.txt 文件的權限為 755 chmod 755 file.txt 4.學習 Shell 編程: Shell 是 Linux 操作系統的命令行解釋器,它提供了豐富的編程接
    發表于 10-10 14:34

    CC256x與HCI命令應用說明

    電子發燒友網站提供《CC256x與HCI命令應用說明.pdf》資料免費下載
    發表于 09-11 09:37 ?0次下載
    CC256x與HCI<b class='flag-5'>命令</b>應用<b class='flag-5'>說明</b>

    Linux中cut命令的實用示例

    Linux command cut 用于文本處理。您可以使用此命令通過選擇列從文件中提取部分文本。
    的頭像 發表于 08-05 15:14 ?581次閱讀
    主站蜘蛛池模板: 亚洲视频在线视频 | 欧美黑人5o厘米全进去 | 日韩毛片免费视频一级特黄 | 视频免费在线观看 | 欧美性猛交xxxx乱大交高清 | 日本操穴 | 久久夜色精品 | 91插插视频| 亚洲第一区二区快射影院 | 女人被两根一起进3p在线观看 | 亚洲日本视频在线观看 | 天天操天天爽天天射 | 免费国产不卡午夜福在线观看 | 日产精品卡二卡三卡四卡无卡乱码 | 色综合天天综合网亚洲影院 | 手机看片午夜 | 97大香伊在人人线色 | 你懂的在线免费观看 | 黄色爽视频 | 日本xxxxx69hd日本 | 青青草99热久久 | 夜夜爱成人免费网站 | 美国激情ap毛片 | 国产精品嫩草影院人体模特 | sihu免费观看在线高清 | 视频在线高清完整免费观看 | 亚洲特黄大黄一级毛片 | 看片地址| 久久久午夜毛片免费 | 天天干天天爽 | 久青草国产手机在线观 | 亚洲色图狠狠干 | 四虎影永久在线观看网址 | 国产黄色a三级三级三级 | 国产三片高清在线观看 | 国产一区二区三区波多野吉衣 | 天堂最新版| 天天夜夜久久 | 成人毛片一区二区三区 | 天天综合天天综合 | 手机看片福利日韩 |