Linux——文件種類與擴展名

文件種類

用『ls -l』看到第一欄那十個字符中,第一個字符爲文件的類型。 除了常見的一般文件(-)與目錄文件(d)外,還有以下文件種類:

1、正規文件(regular file )

就是一般我們在進行存取的類型的文件,在由 ls -al 所顯示出來的屬性方面,第一個字符爲 [ - ],例如[-rwxrwxrwx ]。另外,依照文件的內容,又大略可以分爲:

  • 純文本檔(ASCII):這是 Linux 系統中最多的一種文件類型囉, 稱爲純文本檔是因爲內容爲我們人類可以直接讀到的數據,例如數字、字母等等。 幾乎只要我們可以用來做爲設定的文件都屬於這一種文件類型。 舉例來說,你可以下達『 cat ~/.bashrc 』就可以看到該文件的內容。 (cat 是將一個文件內容讀出來的指令)
  • 二進制文件(binary)Linux的可執行文件(scripts, 文字型批處理文件不算)就是這種格式~如下達指令 cat 就是一個binary file
  • 數據格式文件(data): 有些程序在運作的過程當中會讀取某些特定格式的文件,那些特定格式的文件可以被稱爲數據文件 (data file)。舉例來說,我們的 Linux 在使用者登入時,都會將登錄的數據記錄在 /var/log/wtmp 那個文件內,該文件是一個 data file,他能夠透過 last 這個指令讀出來! 但是使cat 時,會讀出亂碼~因爲他是屬於一種特殊格式的文件。

2、目錄(directory)

就是目錄囉~第一個屬性爲 [ d ],例如 [drwxrwxrwx]

3、連結檔(link)

就是類似 Windows 系統底下的快捷方式啦! 第一個屬性爲 [ l ](英文 L 的小寫),例如 [lrwxrwxrwx]

4、設備與裝置文件(device)

與系統周邊及儲存等相關的一些文件, 通常都集中在/dev 這個目錄之下!通常又分爲兩種:

  • 區塊(block)設備檔 :就是一些儲存數據, 以提供系統隨機存取的接口設備,舉例來說,硬盤與軟盤等就是啦! 你可以隨機的在硬盤的不同區塊讀寫,這種裝置就是成組設備囉!你可以自行查一下/dev/sda 看看, 會發現第一個屬性爲[ b ]喔!
  • 字符(character)設備文件:即一些串行端口的接口設備, 如鍵盤、鼠標等等!這些設備的特色就是『一次性讀取』的,不能夠截斷輸出。 舉例來說,你不可能讓鼠標『跳到』另一個畫面, 而是『連續性滑動』到另一個地方啊!第一個屬性爲 [ c ]

5、資料接口文件(sockets)

既然被稱爲數據接口文件, 這種類型的文件通常被用在網絡上的數據承接了。我們可以啓動一個程序來監聽客戶端的要求, 而客戶端就可以透過這個 socket 來進行數據的溝通了。第一個屬性爲 [ s ], 最常在/run /tmp 這些個目錄中看到這種文件類型了。

6、數據輸送文件(FIFO, pipe)

FIFO 也是一種特殊的文件類型,他主要的目的在解決多個程序同時存取一個文件所造成的錯誤問題。FIFO是 first-in-first-out 的縮寫。第一個屬性爲[p]

除了設備文件是系統中很重要的文件,最好不要隨意修改之外(通常他也不會讓你修改), 另一個比較有趣的文件就是連結檔。如你常常將應用程序捉到桌面來的話,你就應該知道在Windows 底下有所謂的『快捷方式』。同樣的,你可以將 linux 下的連結檔簡單的視爲一個文件或目錄的快捷方式。 至於 socket FIFO 文件比較難理解,因爲這兩個咚咚與程序(process)比較有關係, 這個等到未來你瞭解 process 之後,再回來查閱吧!此外, 你也可以透過 man fifo man socket 來查閱系統上的說明!

Linux 文件擴展名

基本上Linux 的文件是沒有所謂『擴展名』的,一個 Linux 文件能不能被執行,與他的第一欄的十個屬性有關,與文件名根本一點關係也沒有。這個觀念跟 Windows 的情況不相同喔!在 Windows 底下, 能被執行的文件擴展名通常是 .com .exe .bat 等等,而在 Linux 底下,只要你的權限當中具有 x 的話,例如[ -rwxr-xr-x ] 即代表這個文件具有可以被執行的能力喔

注意:具有『可執行的權限』以及『具有可執行的程序代碼』是兩回事!在 Linux 底下,可以讓一個文本文件,例如我們之前寫的 text.txt 具有『可執行的權限』 (加入 x 權限即可), 但是這個文件明顯的無法執行,因爲他不具備可執行的程序代碼!而如果你將上面提到的 cat 這個可以執行的指令,將他的 x 拿掉, 那麼 cat 將無法被你執行!不過,可以被執行跟可以執行成功是不一樣的~如在 root 家目錄下的 initial-setup-ks.cfg 是一個純文本檔,如果經由修改權限成爲 -rwxrwxrwx 後,這個文件能夠真的執行成功嗎? 當然不行~ 因爲他的內容根本就沒有可以執行的數據。所以說,這個 x 代表這個文件具有可執行的能力, 但是能不能執行成功,當然就得要看該文件的內容囉~

雖然如此,不過我們仍然希望可以藉由擴展名來了解該文件是什麼東西,所以, 通常我們還是會以適當的擴展名來表示該文件是什麼種類的。底下有數種常用的擴展名:

  • *.sh : 腳本或批處理文件 (scripts),因爲批處理文件爲使用 shell 寫成的,所以擴展名就編成 .sh  囉;
  • *Z, *.tar, *.tar.gz, *.zip, *.tgz: 經過打包的壓縮文件。這是因爲壓縮軟件分別爲 gunzip, tar 等等的,由於不同的壓縮軟件,而取其相關的擴展名囉!
  • *.html, *.php:網頁相關文件,分別代表 HTML 語法與 PHP 語法的網頁文件囉! .html 的文件可使用網頁瀏覽器來直接開啓,至於 .php 的文件, 則可以透過 client 端的瀏覽器來 server 端瀏覽,以得到運算後的網頁結果呢!

基本上,Linux 系統上的文件名真的只是讓你瞭解該文件可能的用途而已,真正的執行與否仍然需要權限的規範纔行!例如雖然有一個文件爲可執行文件, 如常見的/bin/ls 這個顯示文件屬性的指令, 不過,如果這個文件的權限被修改成無法執行時, 那麼 ls 就變成不能執行囉!

上述這種問題最常發生在文件傳送的過程中。如在網絡上下載一個可執行文件,但偏偏在你Linux 系統中就是無法執行!那麼就是可能文件的屬性被改變了!不要懷疑,從網絡上傳送到你的 Linux 系統中,文件的屬性與權限確實是會被改變的喔!

Linux 文件長度限制

Linux下,使用傳統的 Ext2/Ext3/Ext4 文件系統和被CentOS 7當作預設文件系統的 xfs而言,針對文件的檔名長度限制爲:

  • 單一文件或目錄的最大容許文件名爲 255bytes,以一個 ASCII 英文佔用一個 bytes 來說,則大約可達 255個字符長度。若是以每個中文字佔用 2bytes 來說, 最大檔名就是大約在 128  箇中文字之譜!

是相當長的檔名喔!我們希望 Linux 的文件名可以一看就知道該文件在幹嘛的, 所以檔名通常是很長很長!而用慣了 Windows 的人可能會受不了,因爲文件名通常真的都很長, 對於用慣 Windows 而導致打字速度不快的朋友來說,嗯!真的是很困擾。

Linux 文件名的限制

由於 Linux 在文字接口下的一些指令操作關係,一般來說,你在設定 Linux 底下的文件名時, 最好可以避免一些特殊字符比較好,因爲這些符號在文字接口下,是有特殊意義的!例如:* ? > < ; & ! [ ] | \ ' " ` ( ) { }

注意:文件名的開頭爲小數點『.』時, 代表這個文件爲『隱藏檔』喔!同時,由於指令下達當中,常常會使用到 -option  之類的選項, 所以你最好也避免將文件檔名的開頭以 - 或 + 來命名啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章