linux檔案型別和linux檔案的檔名所代表的意義是兩個不同的概念。我們通過一般應用程式而建立的比如file.txt、file.tar.gz ,這些檔案雖然要用不同的程式來開啟,但放在linux檔案型別中衡量的話,大多是常規檔案(也被稱為普通檔案)。
我們用ls -lh
來檢視某個檔案的屬性,可以看到有類似-rwxrwxrwx
,值得注意的是第乙個符號是-
,這樣的檔案在linux中就是普通檔案。這些檔案一般是用一些相關的應用程式建立,比如影象工具、文件工具、歸檔工具 或 cp工具等。這類檔案的刪除方式是用rm 命令。 另外,依照檔案的內容,又大略可以分為:
1.1.1 純文字檔(ascii)
這是linux系統中最多的一種檔案型別,稱為純文字檔是因為內容為我們人類可以直接讀到的資料,例如數字、字母等等。 幾乎只要我們可以用來做為設定的檔案都屬於這一種檔案型別。 舉例來說,可以用命令:cat ~/.bashrc
來看到該檔案的內容。
1.1.2 二進位制檔案(binary)
linux系統其實僅認識且可以執行二進位制檔案(binary file)。linux當中的可執行檔案(scripts, 文字型批處理檔案不算)就是這種格式的檔案。
剛剛使用的命令cat就是乙個binary file。
1.1.3 資料格式檔案(data)
有些程式在運作的過程當中會讀取某些特定格式的檔案,那些特定格式的檔案可以被稱為資料檔案 (data file)。
舉例來說,我們的linux在使用者登入時,都會將登入的資料記錄在/var/log/wtmp
那個檔案內,該檔案是乙個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼~因為他是屬於一種特殊格式的檔案.
當我們在某個目錄下執行,看到有類似drwxr-xr-x
,這樣的檔案就是目錄,目錄在linux是乙個比較特殊的檔案。
注意它的第乙個字元是d。
建立目錄的命令可以用 mkdir 命令,或cp命令,cp可以把乙個目錄複製為另乙個目錄。
刪除用rm 或rmdir命令。
進入/dev目錄時,列一下檔案,會看到類似如下的:
[root@localhost ~]# ls -al /dev/tty
crw-rw-rw- 1 root tty 5, 0 11-03 15:11 /dev/tty
[root@localhost ~]# ls -la /dev/sda1
brw-r----- 1 root disk 8, 1 11-03 07:11 /dev/sda1
我們看到/dev/tty
的屬性是crw-rw-rw-
,注意前面第乙個字元是c
,這表示字元裝置檔案。比如貓等串列埠裝置。我們看到/dev/sda1
的屬性是brw-r-----
,注意前面的第乙個字元是b,這表示塊裝置,比如硬碟,光碟機等裝置。
這個種類的檔案,是用mknode
來建立,用rm
來刪除。目前在最新的linux發行版本中,我們一般不用自己來建立裝置檔案。因為這些檔案是和核心相關聯的。
1.3.1 區塊(block)裝置檔
就是一些儲存資料, 以提供系統隨機訪問的介面裝置,舉例來說,硬碟與軟盤等就是. 你可以隨機的在硬碟的不同區塊讀寫,這種裝置就是成組裝置!你可以自行查一下/dev/sda
看看, 會發現第乙個屬性為b
1.3.2 字元(character)裝置檔案
即是一些串列埠的介面裝置, 例如鍵盤、滑鼠等等!這些裝置的特色就是一次性讀取的,不能夠截斷輸出。 舉例來說,你不可能讓滑鼠跳到另乙個畫面,而是滑動到另乙個地方!第乙個屬性為c
資料介面檔案(或者:套介面檔案),這種型別的檔案通常被用在網路上的資料承接了。我們可以啟動乙個程式來監聽客戶端的要求, 而客戶端就可以透過這個socket來進行資料的溝通了。第乙個屬性為s
, 最常在/var/run
這個目錄中看到這種檔案型別了。
例如:當我們啟動mysql伺服器時,會產生乙個mysql.sock的檔案。
注意這個檔案的屬性的第乙個字元是s
。
[root@localhost ~]# ls -lh /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock
當我們檢視檔案屬性時,會看到有類似lrwxrwxrwx
,注意第乙個字元是l
,這類檔案是鏈結檔案。是通過ln -s 源檔名 新檔名
。
linklog.log是2012.log的軟鏈結檔案
[root@localhost test]# ls -lh log2012.log
-rw-r--r-- 1 root root 296k 11-13 06:03 log2012.log
[root@localhost test]# ln -s log2012.log linklog.log
[root@localhost test]# ls -lh *.log
lrwxrwxrwx 1 root root 11 11-22 06:58 linklog.log -> log2012.log
-rw-r--r-- 1 root root 296k 11-13 06:03 log2012.log
fifo也是一種特殊的檔案型別,他主要的目的在解決多個程式同時訪問乙個檔案所造成的錯誤問題。 fifo是first-in-first-out的縮寫。第乙個屬性為p
基本上,linux的檔案是沒有所謂的副檔名的,乙個linux檔案能不能被執行,與他的第一欄的十個屬性有關, 與檔名根本一點關係也沒有。這個觀念跟windows的情況不相同。在windows底下, 能被執行的副檔名通常是 .com .exe .bat等等,而在linux底下,只要你的許可權當中具有x
的話,例如-rwx-r-xr-x
即代表這個檔案可以被執行。
不過,可以被執行跟可以執行成功是不一樣的。
舉例來說,在root目錄下的install.log 是乙個純文字檔,如果經由修改許可權成為 -rwxrwxrwx 後,這個檔案能夠真的執行成功嗎? 當然不行.因為他的內容根本就沒有可以執行的資料。所以說,這個x代表這個檔案具有可執行的能力, 但是能不能執行成功,當然就得要看該檔案的內容.
雖然如此,不過我們仍然希望可以藉由副檔名來了解該檔案是什麼東西,所以,通常我們還是會以適當的副檔名來表示該檔案是什麼種類的。底下有數種常用的副檔名:
*.sh : 指令碼或批處理檔案 (scripts),因為批處理檔案為使用shell寫成的,所以副檔名就編成 .sh
*.html, *.php:網頁相關檔案,分別代表 html 語法與 php 語法的網頁檔案。 .html 的檔案可使用網頁瀏覽器來直接開啟,至於 .php 的檔案, 則可以透過 client 端的瀏覽器來 server 端瀏覽,以得到運算後的網頁結果。
基本上,linux系統上的檔名真的只是讓你了解該檔案可能的用途而已,真正的執行與否仍然需要許可權的規範才行。例如雖然有乙個檔案為可執行檔案,如常見的/bin/ls
這個顯示檔案屬性的指令,不過,如果這個檔案的許可權被修改成無法執行時,那麼ls就變成不能執行。
在linux底下,使用預設的ext2/ext3
檔案系統時,針對檔名長度限制為:
是相當長的檔名.我們希望linux的檔名可以一看就知道該檔案在幹嘛的, 所以檔名通常很長。
由於linux在文字介面下的一些指令操作關係,一般來說,你在設定linux底下的檔名時, 最好可以避免一些特殊字元比較好.
例如底下這些:
* ? > < ; & ! [ ] | \ ' " ` ( )
因為這些符號在文字介面下,是有特殊意義的。另外,檔名的開頭為小數點.
時, 代表這個檔案為隱藏檔案.同時,由於指令下達當中,常常會使用到-option
之類的選項, 所以你最好也避免將檔案檔名的開頭以-
或+
來命名。 Linux檔案型別與副檔名
我們提過乙個概念,就是任何裝置在linux中都是檔案,不僅如此,連資料通訊的介面也由專屬檔案負責。所以,你會了解到,linux的檔案種類很多。除了前面提到的 d即所謂的一般檔案與目錄檔案之外,還有哪些種類的檔案呢?檔案種類 在介紹屬性時,提到了最前面的標誌 d或 可以表示目錄或檔案,那就是不同的檔案...
linux下檔案型別 副檔名
在linux檔案系統中,主要有以下幾種型別的檔案 普通檔案 regular file 就是一般型別的檔案,當用 ls l 檢視某個目錄時,第乙個屬性為 的檔案就是正規檔案,或者叫普通檔案。正規檔案又可分成純文字檔案 ascii 和二進位制檔案 binary 純文字檔案是可以通過cat,more,le...
Linux 檔案型別及檔案的副檔名
1 linux檔案的副檔名 一談到檔案型別,大家就能想到windows的檔案型別,比如file.txt file.doc file.sys file.file.exe等,根據檔案的字尾就能判斷檔案的型別。但在linux乙個檔案是否能被執行,和字尾名沒有太大的關係,主要看檔案的屬性有關。但我們了解一下...