歡迎光臨
每天分享高質量文章

怎樣理解和識別 Linux 中的檔案型別 | Linux 中國

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

— Magesh Maruthamuthu

 

眾所周知,在 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 檔案系統中普通檔案可以出現在任何地方。 普通檔案的顏色是“白色”。

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

在 Linux 中如何檢視目錄檔案?

在 Linux 中使用下麵的命令去檢視目錄檔案。在 Linux 檔案系統中目錄檔案可以出現在任何地方。目錄檔案的顏色是“藍色”。

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

在 Linux 中如何檢視連結檔案?

在 Linux 中使用下麵的命令去檢視連結檔案。在 Linux 檔案系統中連結檔案可以出現在任何地方。 連結檔案有兩種可用型別,軟連線和硬連結。連結檔案的顏色是“淺綠寶石色”。

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

在 Linux 中如何檢視字元裝置檔案?

在 Linux 中使用下麵的命令檢視字元裝置檔案。字元裝置檔案僅出現在特定位置。它出現在目錄 /dev 下。字元裝置檔案的顏色是“黃色”。

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

在 Linux 中如何檢視塊檔案?

在 Linux 中使用下麵的命令檢視塊檔案。塊檔案僅出現在特定位置。它出現在目錄 /dev 下。塊檔案的顏色是“黃色”。

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

在 Linux 中如何檢視 Socket 檔案?

在 Linux 中使用下麵的命令檢視 Socket 檔案。Socket 檔案可以出現在任何地方。Scoket 檔案的顏色是“粉色”。(LCTT 譯註:此處及下麵關於 Socket 檔案、命名管道檔案可出現的位置原文描述有誤,已修改。)

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

在 Linux 中如何檢視命名管道檔案?

在 Linux 中使用下麵的命令檢視命名管道檔案。命名管道檔案可以出現在任何地方。命名管道檔案的顏色是“黃色”。

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

方法2:在 Linux 中如何使用 file 命令識別檔案型別

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

在 Linux 中如何使用 file 命令檢視普通檔案

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

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

  1. # file 2daygeek_access.log
  2. 2daygeek_access.log: ASCII text, with very long lines
  3. # file powertop.html
  4. powertop.html: HTML document, ASCII text, with very long lines
  5. # file 2g-test
  6. 2g-test: JSON data
  7. # file powertop.txt
  8. powertop.txt: HTML document, UTF-8 Unicode text, with very long lines
  9. # file 2g-test-05-01-2019.tar.gz
  10. 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 命令跟著目錄。參閱下麵的結果。

  1. # file Pictures/
  2. Pictures/: directory

在 Linux 中如何使用 file 命令檢視連結檔案?

在你的終端簡單地輸入 file 命令跟著連結檔案。參閱下麵的結果。

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

在 Linux 中如何使用 file 命令檢視字元裝置檔案?

在你的終端簡單地輸入 file 命令跟著字元裝置檔案。參閱下麵的結果。

  1. # file vcsu
  2. vcsu: character special (7/64)

在 Linux 中如何使用 file 命令檢視塊檔案?

在你的終端簡單地輸入 file 命令跟著塊檔案。參閱下麵的結果。

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

在 Linux 中如何使用 file 命令檢視 Socket 檔案?

在你的終端簡單地輸入 file 命令跟著 Socket 檔案。參閱下麵的結果。

  1. # file system_bus_socket
  2. system_bus_socket: socket

在 Linux 中如何使用 file 命令檢視命名管道檔案?

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

  1. # file pipe-test
  2. pipe-test: fifo (named pipe)

方法 3:在 Linux 中如何使用 stat 命令識別檔案型別?

stat 命令允許我們去檢視檔案型別或檔案系統狀態。該實用程式比 file 命令提供更多的資訊。它顯示檔案的大量資訊,例如大小、塊大小、IO 塊大小、Inode 值、連結、檔案許可權、UID、GID、檔案的訪問/更新和修改的時間等詳細資訊。

在 Linux 中如何使用 stat 命令檢視普通檔案?

在你的終端簡單地輸入 stat 命令跟著普通檔案。參閱下麵的結果。

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

在 Linux 中如何使用 stat 命令檢視目錄檔案?

在你的終端簡單地輸入 stat 命令跟著目錄檔案。參閱下麵的結果。

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

在 Linux 中如何使用 stat 命令檢視連結檔案?

在你的終端簡單地輸入 stat 命令跟著連結檔案。參閱下麵的結果。

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

在 Linux 中如何使用 stat 命令檢視字元裝置檔案?

在你的終端簡單地輸入 stat 命令跟著字元裝置檔案。參閱下麵的結果。

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

在 Linux 中如何使用 stat 命令檢視塊檔案?

在你的終端簡單地輸入 stat 命令跟著塊檔案。參閱下麵的結果。

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

在 Linux 中如何使用 stat 命令檢視 Socket 檔案?

在你的終端簡單地輸入 stat 命令跟著 Socket 檔案。參閱下麵的結果。

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

在 Linux 中如何使用 stat 命令檢視命名管道檔案?

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

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

已同步到看一看
贊(0)

分享創造快樂