Linux文件類型和Linux文件的文件名所代表的意義是兩個(gè)不同的概念,。我們通過(guò)一般應(yīng)用程序而創(chuàng)建的比如file.txt、file.tar.gz ,,這些文件雖然要用不同的程序來(lái)打開(kāi),,但放在Linux文件類型中衡量的話,大多是常規(guī)文件(也被稱為普通文件),。 一. 文件類型 Linux文件類型常見(jiàn)的有:普通文件,、目錄文件、字符設(shè)備文件和塊設(shè)備文件,、符號(hào)鏈接文件等,,現(xiàn)在我們進(jìn)行一個(gè)簡(jiǎn)要的說(shuō)明。 1. 普通文件 我們用 ls -lh 來(lái)查看某個(gè)文件的屬性,,可以看到有類似-rwxrwxrwx,,值得注意的是第一個(gè)符號(hào)是 - ,這樣的文件在Linux中就是普通文件,。這些文件一般是用一些相關(guān)的應(yīng)用程序創(chuàng)建,,比如圖像工具、文檔工具,、歸檔工具... .... 或 cp工具等,。這類文件的刪除方式是用rm 命令。 另外,,依照文件的內(nèi)容,,又大略可以分為: 1>. 純文本檔(ASCII): 這是Linux系統(tǒng)中最多的一種文件類型,稱為純文本檔是因?yàn)閮?nèi)容為我們?nèi)祟惪梢灾苯幼x到的數(shù)據(jù),,例如數(shù)字,、字母等等。 幾乎只要我們可以用來(lái)做為設(shè)定的文件都屬于這一種文件類型,。 舉例來(lái)說(shuō),,你可以用命令: cat ~/.bashrc 來(lái)看到該文件的內(nèi)容。 (cat 是將一個(gè)文件內(nèi)容讀出來(lái)的指令). 2>. 二進(jìn)制文件(binary): Linux系統(tǒng)其實(shí)僅認(rèn)識(shí)且可以執(zhí)行二進(jìn)制文件(binary file),。Linux當(dāng)中的可執(zhí)行文件(scripts, 文字型批處理文件不算)就是這種格式的文件,。 剛剛使用的命令cat就是一個(gè)binary file。 3>. 數(shù)據(jù)格式文件(data): 有些程序在運(yùn)作的過(guò)程當(dāng)中會(huì)讀取某些特定格式的文件,,那些特定格式的文件可以被稱為數(shù)據(jù)文件 (data file),。舉例來(lái)說(shuō),我們的Linux在使用者登錄時(shí),,都會(huì)將登錄的數(shù)據(jù)記錄在 /var/log/wtmp那個(gè)文件內(nèi),,該文件是一個(gè)data file,他能夠透過(guò)last這個(gè)指令讀出來(lái)! 但是使用cat時(shí),,會(huì)讀出亂碼~因?yàn)樗菍儆谝环N特殊格式的文件,? 2. 目錄文件 當(dāng)我們?cè)谀硞€(gè)目錄下執(zhí)行,看到有類似 drwxr-xr-x ,,這樣的文件就是目錄,,目錄在Linux是一個(gè)比較特殊的文件。注意它的第一個(gè)字符是d,。創(chuàng)建目錄的命令可以用 mkdir 命令,,或cp命令,cp可以把一個(gè)目錄復(fù)制為另一個(gè)目錄,。刪除用rm 或rmdir命令,。 3. 字符設(shè)備或塊設(shè)備文件 如時(shí)您進(jìn)入/dev目錄,列一下文件,,會(huì)看到類似如下的: [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- ,,注意前面第一個(gè)字符是 c ,這表示字符設(shè)備文件,。比如貓等串口設(shè)備,。我們看到 /dev/sda1 的屬性是 brw-r----- ,注意前面的第一個(gè)字符是b,,這表示塊設(shè)備,,比如硬盤,光驅(qū)等設(shè)備,。 這個(gè)種類的文件,,是用mknode來(lái)創(chuàng)建,用rm來(lái)刪除,。目前在最新的Linux發(fā)行版本中,我們一般不用自己來(lái)創(chuàng)建設(shè)備文件,。因?yàn)檫@些文件是和內(nèi)核相關(guān)聯(lián)的,。 與系統(tǒng)周邊及儲(chǔ)存等相關(guān)的一些文件, 通常都集中在/dev這個(gè)目錄之下,!通常又分為兩種: 區(qū)塊(block)設(shè)備檔 : 就是一些儲(chǔ)存數(shù)據(jù),, 以提供系統(tǒng)隨機(jī)存取的接口設(shè)備,舉例來(lái)說(shuō),,硬盤與軟盤等就是啦,! 你可以隨機(jī)的在硬盤的不同區(qū)塊讀寫,這種裝置就是成組設(shè)備,!你可以自行查一下/dev/sda看看,, 會(huì)發(fā)現(xiàn)第一個(gè)屬性為[ b ]! 字符(character)設(shè)備文件: 亦即是一些串行端口的接口設(shè)備,, 例如鍵盤,、鼠標(biāo)等等,!這些設(shè)備的特色就是一次性讀取的,不能夠截?cái)噍敵觥?nbsp;舉例來(lái)說(shuō),,你不可能讓鼠標(biāo)跳到另一個(gè)畫面,,而是滑動(dòng)到另一個(gè)地方!第一個(gè)屬性為 [ c ],。 4. 數(shù)據(jù)接口文件(sockets): 數(shù)據(jù)接口文件(或者:套接口文件),,這種類型的文件通常被用在網(wǎng)絡(luò)上的數(shù)據(jù)承接了。我們可以啟動(dòng)一個(gè)程序來(lái)監(jiān)聽(tīng)客戶端的要求,, 而客戶端就可以透過(guò)這個(gè)socket來(lái)進(jìn)行數(shù)據(jù)的溝通了,。第一個(gè)屬性為 [ s ], 最常在/var/run這個(gè)目錄中看到這種文件類型了,。 例如:當(dāng)我們啟動(dòng)MySQL服務(wù)器時(shí),,會(huì)產(chǎn)生一個(gè)mysql.sock的文件。 [root@localhost ~]# ls -lh /var/lib/mysql/mysql.sock srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock 注意這個(gè)文件的屬性的第一個(gè)字符是 s,。 5. 符號(hào)鏈接文件: 當(dāng)我們查看文件屬性時(shí),,會(huì)看到有類似 lrwxrwxrwx,注意第一個(gè)字符是l,這類文件是鏈接文件,。是通過(guò)ln -s 源文件名 新文件名 ,。上面是一個(gè)例子,表示setup.log是install.log的軟鏈接文件,。怎么理解呢,?這和Windows操作系統(tǒng)中的快捷方式有點(diǎn)相似。 符號(hào)鏈接文件的創(chuàng)建方法舉例: [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 6. 數(shù)據(jù)輸送文件(FIFO,pipe): FIFO也是一種特殊的文件類型,,他主要的目的在解決多個(gè)程序同時(shí)存取一個(gè)文件所造成的錯(cuò)誤問(wèn)題,。 FIFO是first-in-first-out的縮寫。第一個(gè)屬性為[p] ,。 二. Linux文件擴(kuò)展名 1. 擴(kuò)展名類型 基本上,,Linux的文件是沒(méi)有所謂的擴(kuò)展名的,一個(gè)Linux文件能不能被執(zhí)行,,與他的第一欄的十個(gè)屬性有關(guān),, 與檔名根本一點(diǎn)關(guān)系也沒(méi)有。這個(gè)觀念跟Windows的情況不相同喔,!在Windows底下,, 能被執(zhí)行的文件擴(kuò)展名通常是 .com .exe .bat等等,而在Linux底下,,只要你的權(quán)限當(dāng)中具有x的話,,例如[ -rwx-r-xr-x ] 即代表這個(gè)文件可以被執(zhí)行。 不過(guò),可以被執(zhí)行跟可以執(zhí)行成功是不一樣的~舉例來(lái)說(shuō),,在root家目錄下的install.log 是一個(gè)純文本檔,,如果經(jīng)由修改權(quán)限成為 -rwxrwxrwx 后,這個(gè)文件能夠真的執(zhí)行成功嗎,? 當(dāng)然不行~因?yàn)樗膬?nèi)容根本就沒(méi)有可以執(zhí)行的數(shù)據(jù),。所以說(shuō),這個(gè)x代表這個(gè)文件具有可執(zhí)行的能力,, 但是能不能執(zhí)行成功,,當(dāng)然就得要看該文件的內(nèi)容. 雖然如此,不過(guò)我們?nèi)匀幌M梢越逵蓴U(kuò)展名來(lái)了解該文件是什么東西,,所以,,通常我們還是會(huì)以適當(dāng)?shù)臄U(kuò)展名來(lái)表示該文件是什么種類的。底下有數(shù)種常用的擴(kuò)展名: *.sh : 腳本或批處理文件 (scripts),,因?yàn)榕幚砦募槭褂胹hell寫成的,,所以擴(kuò)展名就編成 .sh *Z, *.tar, *.tar.gz, *.zip, *.tgz: 經(jīng)過(guò)打包的壓縮文件。這是因?yàn)閴嚎s軟件分別為 gunzip, tar 等等的,,由于不同的壓縮軟件,,而取其相關(guān)的擴(kuò)展名! *.html, *.php:網(wǎng)頁(yè)相關(guān)文件,,分別代表 HTML 語(yǔ)法與 PHP 語(yǔ)法的網(wǎng)頁(yè)文件,。 .html 的文件可使用網(wǎng)頁(yè)瀏覽器來(lái)直接開(kāi)啟,至于 .php 的文件,, 則可以透過(guò) client 端的瀏覽器來(lái) server 端瀏覽,,以得到運(yùn)算后的網(wǎng)頁(yè)結(jié)果。 基本上,,Linux系統(tǒng)上的文件名真的只是讓你了解該文件可能的用途而已,,真正的執(zhí)行與否仍然需要權(quán)限的規(guī)范才行。例如雖然有一個(gè)文件為可執(zhí)行文件,,如常見(jiàn)的/bin/ls這個(gè)顯示文件屬性的指令,,不過(guò),如果這個(gè)文件的權(quán)限被修改成無(wú)法執(zhí)行時(shí),,那么ls就變成不能執(zhí)行。 上述的這種問(wèn)題最常發(fā)生在文件傳送的過(guò)程中,。例如你在網(wǎng)絡(luò)上下載一個(gè)可執(zhí)行文件,,但是偏偏在你的 Linux系統(tǒng)中就是無(wú)法執(zhí)行!呵呵,!那么就是可能文件的屬性被改變了,。不要懷疑,從網(wǎng)絡(luò)上傳送到你的 Linux系統(tǒng)中,文件的屬性與權(quán)限確實(shí)是會(huì)被改變的,。 2. Linux文件名長(zhǎng)度限制: 在Linux底下,,使用預(yù)設(shè)的Ext2/Ext3文件系統(tǒng)時(shí),針對(duì)文件名長(zhǎng)度限制為: 單一文件或目錄的最大容許文件名為 255 個(gè)字符 包含完整路徑名稱及目錄 (/) 之完整檔名為 4096 個(gè)字符 是相當(dāng)長(zhǎng)的檔名,!我們希望Linux的文件名可以一看就知道該文件在干嘛的,, 所以檔名通常是很長(zhǎng)很長(zhǎng)。 3. Linux文件名的字符的限制: 由于Linux在文字接口下的一些指令操作關(guān)系,,一般來(lái)說(shuō),,你在設(shè)定Linux底下的文件名時(shí), 最好可以避免一些特殊字符比較好,!例如底下這些: * ? > < ; & ! [ ] | \ ' " ` ( ) { } 因?yàn)檫@些符號(hào)在文字接口下,,是有特殊意義的。另外,,文件名的開(kāi)頭為小數(shù)點(diǎn)“.”時(shí),, 代表這個(gè)文件為隱藏文件!同時(shí),,由于指令下達(dá)當(dāng)中,,常常會(huì)使用到 -option 之類的選項(xiàng), 所以你最好也避免將文件檔名的開(kāi)頭以 - 或 + 來(lái)命名,。 |
|
來(lái)自: charlie_linux > 《linux開(kāi)發(fā)》