Linux中國

怎樣理解和識別 Linux 中的文件類型

眾所周知,在 Linux 中一切皆為文件,包括硬碟和顯卡等。在 Linux 中導航時,大部分的文件都是普通文件和目錄文件。但是也有其他的類型,對應於 5 類不同的作用。因此,理解 Linux 中的文件類型在許多方面都是非常重要的。

如果你不相信,那隻需要瀏覽全文,就會發現它有多重要。如果你不能理解文件類型,就不能夠毫無畏懼的做任意的修改。

如果你做了一些錯誤的修改,會毀壞你的文件系統,那麼當你操作的時候請小心一點。在 Linux 系統中文件是非常重要的,因為所有的設備和守護進程都被存儲為文件。

在 Linux 中有多少種可用類型?

據我所知,在 Linux 中總共有 7 種類型的文件,分為 3 大類。具體如下。

  • 普通文件
  • 目錄文件
  • 特殊文件(該類有 5 個文件類型)
    • 鏈接文件
    • 字元設備文件
    • Socket 文件
    • 命名管道文件
    • 塊文件

參考下面的表可以更好地理解 Linux 中的文件類型。

 符號    意義                  
 普通文件。長列表中以中劃線 - 開頭。       
d  目錄文件。長列表中以英文字母 d 開頭。     
l  鏈接文件。長列表中以英文字母 l 開頭。      
c  字元設備文件。長列表中以英文字母 c 開頭。    
s  Socket 文件。長列表中以英文字母 s 開頭。     
p  命名管道文件。長列表中以英文字母 p 開頭。    
b  塊文件。長列表中以英文字母 b 開頭。       

方法1:手動識別 Linux 中的文件類型

如果你很了解 Linux,那麼你可以藉助上表很容易地識別文件類型。

在 Linux 中如何查看普通文件?

在 Linux 中使用下面的命令去查看普通文件。在 Linux 文件系統中普通文件可以出現在任何地方。 普通文件的顏色是「白色」。

# ls -la | grep ^-
-rw-------.  1 mageshm mageshm      1394 Jan 18 15:59 .bash_history
-rw-r--r--.  1 mageshm mageshm        18 May 11  2012 .bash_logout
-rw-r--r--.  1 mageshm mageshm       176 May 11  2012 .bash_profile
-rw-r--r--.  1 mageshm mageshm       124 May 11  2012 .bashrc
-rw-r--r--.  1 root    root           26 Dec 27 17:55 liks
-rw-r--r--.  1 root    root    104857600 Jan 31  2006 test100.dat
-rw-r--r--.  1 root    root    104874307 Dec 30  2012 test100.zip
-rw-r--r--.  1 root    root     11536384 Dec 30  2012 test10.zip
-rw-r--r--.  1 root    root           61 Dec 27 19:05 test2-bzip2.txt
-rw-r--r--.  1 root    root           61 Dec 31 14:24 test3-bzip2.txt
-rw-r--r--.  1 root    root           60 Dec 27 19:01 test-bzip2.txt

在 Linux 中如何查看目錄文件?

在 Linux 中使用下面的命令去查看目錄文件。在 Linux 文件系統中目錄文件可以出現在任何地方。目錄文件的顏色是「藍色」。

# ls -la | grep ^d
drwxr-xr-x.  3 mageshm mageshm      4096 Dec 31 14:24 links/
drwxrwxr-x.  2 mageshm mageshm      4096 Nov 16 15:44 perl5/
drwxr-xr-x.  2 mageshm mageshm      4096 Nov 16 15:37 public_ftp/
drwxr-xr-x.  3 mageshm mageshm      4096 Nov 16 15:37 public_html/

在 Linux 中如何查看鏈接文件?

在 Linux 中使用下面的命令去查看鏈接文件。在 Linux 文件系統中鏈接文件可以出現在任何地方。 鏈接文件有兩種可用類型,軟連接和硬鏈接。鏈接文件的顏色是「淺綠寶石色」。

# ls -la | grep ^l
lrwxrwxrwx.  1 root    root           31 Dec  7 15:11 s-link-file -> /links/soft-link/test-soft-link
lrwxrwxrwx.  1 root    root           38 Dec  7 15:12 s-link-folder -> /links/soft-link/test-soft-link-folder

在 Linux 中如何查看字元設備文件?

在 Linux 中使用下面的命令查看字元設備文件。字元設備文件僅出現在特定位置。它出現在目錄 /dev 下。字元設備文件的顏色是「黃色」。

# ls -la | grep ^c
# ls -la | grep ^c
crw-------.  1 root root      5,   1 Jan 28 14:05 console
crw-rw----.  1 root root     10,  61 Jan 28 14:05 cpu_dma_latency
crw-rw----.  1 root root     10,  62 Jan 28 14:05 crash
crw-rw----.  1 root root     29,   0 Jan 28 14:05 fb0
crw-rw-rw-.  1 root root      1,   7 Jan 28 14:05 full
crw-rw-rw-.  1 root root     10, 229 Jan 28 14:05 fuse

在 Linux 中如何查看塊文件?

在 Linux 中使用下面的命令查看塊文件。塊文件僅出現在特定位置。它出現在目錄 /dev 下。塊文件的顏色是「黃色」。

# ls -la | grep ^b
brw-rw----.  1 root disk      7,   0 Jan 28 14:05 loop0
brw-rw----.  1 root disk      7,   1 Jan 28 14:05 loop1
brw-rw----.  1 root disk      7,   2 Jan 28 14:05 loop2
brw-rw----.  1 root disk      7,   3 Jan 28 14:05 loop3
brw-rw----.  1 root disk      7,   4 Jan 28 14:05 loop4

在 Linux 中如何查看 Socket 文件?

在 Linux 中使用下面的命令查看 Socket 文件。Socket 文件可以出現在任何地方。Scoket 文件的顏色是「粉色」。(LCTT 譯註:此處及下面關於 Socket 文件、命名管道文件可出現的位置原文描述有誤,已修改。)

# ls -la | grep ^s
srw-rw-rw- 1 root root 0 Jan  5 16:36 system_bus_socket

在 Linux 中如何查看命名管道文件?

在 Linux 中使用下面的命令查看命名管道文件。命名管道文件可以出現在任何地方。命名管道文件的顏色是「黃色」。

# ls -la | grep ^p
prw-------.  1 root    root        0 Jan 28 14:06 replication-notify-fifo|
prw-------.  1 root    root        0 Jan 28 14:06 stats-mail|

方法2:在 Linux 中如何使用 file 命令識別文件類型

在 Linux 中 file 命令允許我們去確定不同的文件類型。這裡有三個測試集,按此順序進行三組測試:文件系統測試、魔術位元組測試和用於識別文件類型的語言測試。

在 Linux 中如何使用 file 命令查看普通文件

在你的終端簡單地輸入 file 命令跟著普通文件。file 命令將會讀取提供的文件內容並且準確地顯示文件的類型。

這就是我們看到對於每個普通文件有不同結果的原因。參考下面普通文件的不同結果。

# file 2daygeek_access.log 
2daygeek_access.log: ASCII text, with very long lines

# file powertop.html 
powertop.html: HTML document, ASCII text, with very long lines

# file 2g-test
2g-test: JSON data

# file powertop.txt
powertop.txt: HTML document, UTF-8 Unicode text, with very long lines

# file 2g-test-05-01-2019.tar.gz
2g-test-05-01-2019.tar.gz: gzip compressed data, last modified: Sat Jan  5 18:22:20 2019, from Unix, original size 450560

在 Linux 中如何使用 file 命令查看目錄文件?

在你的終端簡單地輸入 file 命令跟著目錄。參閱下面的結果。

# file Pictures/
Pictures/: directory

在 Linux 中如何使用 file 命令查看鏈接文件?

在你的終端簡單地輸入 file 命令跟著鏈接文件。參閱下面的結果。

# file log
log: symbolic link to /run/systemd/journal/dev-log

在 Linux 中如何使用 file 命令查看字元設備文件?

在你的終端簡單地輸入 file 命令跟著字元設備文件。參閱下面的結果。

# file vcsu
vcsu: character special (7/64)

在 Linux 中如何使用 file 命令查看塊文件?

在你的終端簡單地輸入 file 命令跟著塊文件。參閱下面的結果。

# file sda1
sda1: block special (8/1)

在 Linux 中如何使用 file 命令查看 Socket 文件?

在你的終端簡單地輸入 file 命令跟著 Socket 文件。參閱下面的結果。

# file system_bus_socket
system_bus_socket: socket

在 Linux 中如何使用 file 命令查看命名管道文件?

在你的終端簡單地輸入 file 命令跟著命名管道文件。參閱下面的結果。

# file pipe-test
pipe-test: fifo (named pipe)

方法 3:在 Linux 中如何使用 stat 命令識別文件類型?

stat 命令允許我們去查看文件類型或文件系統狀態。該實用程序比 file 命令提供更多的信息。它顯示文件的大量信息,例如大小、塊大小、IO 塊大小、Inode 值、鏈接、文件許可權、UID、GID、文件的訪問/更新和修改的時間等詳細信息。

在 Linux 中如何使用 stat 命令查看普通文件?

在你的終端簡單地輸入 stat 命令跟著普通文件。參閱下面的結果。

# stat 2daygeek_access.log
  File: 2daygeek_access.log
  Size: 14406929    Blocks: 28144      IO Block: 4096   regular file
Device: 10301h/66305d   Inode: 1727555     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ daygeek)   Gid: ( 1000/ daygeek)
Access: 2019-01-03 14:05:26.430328867 +0530
Modify: 2019-01-03 14:05:26.460328868 +0530
Change: 2019-01-03 14:05:26.460328868 +0530
 Birth: -

在 Linux 中如何使用 stat 命令查看目錄文件?

在你的終端簡單地輸入 stat 命令跟著目錄文件。參閱下面的結果。

# stat Pictures/
  File: Pictures/
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 10301h/66305d   Inode: 1703982     Links: 3
Access: (0755/drwxr-xr-x)  Uid: ( 1000/ daygeek)   Gid: ( 1000/ daygeek)
Access: 2018-11-24 03:22:11.090000828 +0530
Modify: 2019-01-05 18:27:01.546958817 +0530
Change: 2019-01-05 18:27:01.546958817 +0530
 Birth: -

在 Linux 中如何使用 stat 命令查看鏈接文件?

在你的終端簡單地輸入 stat 命令跟著鏈接文件。參閱下面的結果。

# stat /dev/log
  File: /dev/log -> /run/systemd/journal/dev-log
  Size: 28          Blocks: 0          IO Block: 4096   symbolic link
Device: 6h/6d   Inode: 278         Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-01-05 16:36:31.033333447 +0530
Modify: 2019-01-05 16:36:30.766666768 +0530
Change: 2019-01-05 16:36:30.766666768 +0530
 Birth: -

在 Linux 中如何使用 stat 命令查看字元設備文件?

在你的終端簡單地輸入 stat 命令跟著字元設備文件。參閱下面的結果。

# stat /dev/vcsu
  File: /dev/vcsu
  Size: 0           Blocks: 0          IO Block: 4096   character special file
Device: 6h/6d   Inode: 16          Links: 1     Device type: 7,40
Access: (0660/crw-rw----)  Uid: (    0/    root)   Gid: (    5/     tty)
Access: 2019-01-05 16:36:31.056666781 +0530
Modify: 2019-01-05 16:36:31.056666781 +0530
Change: 2019-01-05 16:36:31.056666781 +0530
 Birth: -

在 Linux 中如何使用 stat 命令查看塊文件?

在你的終端簡單地輸入 stat 命令跟著塊文件。參閱下面的結果。

# stat /dev/sda1
  File: /dev/sda1
  Size: 0           Blocks: 0          IO Block: 4096   block special file
Device: 6h/6d   Inode: 250         Links: 1     Device type: 8,1
Access: (0660/brw-rw----)  Uid: (    0/    root)   Gid: (  994/    disk)
Access: 2019-01-05 16:36:31.596666806 +0530
Modify: 2019-01-05 16:36:31.596666806 +0530
Change: 2019-01-05 16:36:31.596666806 +0530
 Birth: -

在 Linux 中如何使用 stat 命令查看 Socket 文件?

在你的終端簡單地輸入 stat 命令跟著 Socket 文件。參閱下面的結果。

# stat /var/run/dbus/system_bus_socket 
  File: /var/run/dbus/system_bus_socket
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 15h/21d Inode: 576         Links: 1
Access: (0666/srw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-01-05 16:36:31.823333482 +0530
Modify: 2019-01-05 16:36:31.810000149 +0530
Change: 2019-01-05 16:36:31.810000149 +0530
 Birth: -

在 Linux 中如何使用 stat 命令查看命名管道文件?

在你的終端簡單地輸入 stat 命令跟著命名管道文件。參閱下面的結果。

# stat pipe-test 
  File: pipe-test
  Size: 0           Blocks: 0          IO Block: 4096   fifo
Device: 10301h/66305d   Inode: 1705583     Links: 1
Access: (0644/prw-r--r--)  Uid: ( 1000/ daygeek)   Gid: ( 1000/ daygeek)
Access: 2019-01-06 02:00:03.040394731 +0530
Modify: 2019-01-06 02:00:03.040394731 +0530
Change: 2019-01-06 02:00:03.040394731 +0530
 Birth: -

via: https://www.2daygeek.com/how-to-understand-and-identify-file-types-in-linux/

作者:Magesh Maruthamuthu 選題:lujun9972 譯者:liujing97 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國