一切都是文件
在Linux系統(tǒng)中则剃,一切都是文件耘柱。如文本文檔、OpenOffice文檔棍现、圖片调煎、MP3和視頻等都是文件,這點和Windows是一樣的轴咱。
??但是目錄呢汛蝙?它也是一種文件,只不過是一種特殊的文件朴肺,其中包含其他文件的信息窖剑。磁盤算是真正的大文件。網(wǎng)絡(luò)連接也是文件戈稿,甚至運行中的進(jìn)程也是文件西土,這些都是屬于文件范疇。
??對于Linux來說鞍盗,文件只是bit和字節(jié)流需了。Linux并不關(guān)心這些二進(jìn)制和字節(jié)最終組成了什么格式,相反般甲,在Linux上運行的程序才關(guān)心它們組成的格式肋乍。對于Linux而言,文本文檔和網(wǎng)絡(luò)連接都是文件敷存,而文本編輯器知道如何使用文本文檔墓造,Internet應(yīng)用程序則可以識別網(wǎng)絡(luò)連接,所以在Linux锚烦,需要我們根據(jù)上下文將“文件”理解為“文件觅闽、目錄、子目錄以及系統(tǒng)中其他所有東西”涮俄。
文件名最大長度
Linux和Unix文件名允許的最大長度為255個字符蛉拙。在實際應(yīng)用中,建議將文件名的長度控制在80以內(nèi)比較好彻亲,因為大部分的終端都是這個寬度孕锄,文件名能在一行顯示完,不用換行苞尝。
文件名區(qū)分大小寫
與Windows和Mac OS不一樣的是在Linux中硫惕,文件名是區(qū)分大小寫的。對Linux而言野来,同一目錄可以允許同時存在以下的3個文件:
- foldertest
- FolderTest
- folderTest
對于Linux文件系統(tǒng)而言,它們是3個完全不同的文件(這一點與Windows區(qū)別還是很明顯的)踪旷。區(qū)分大小寫也就意味著必須準(zhǔn)確輸入命令和文件名曼氛。例如:如果要使用命令rm刪除文件豁辉,就不能使用RM/rM/Rm。
文件命名的限制
在各個不同的系統(tǒng)中舀患,對于文件或目錄的命令都會存在一些限制和禁止使用的字符徽级。如在Mac OS中不允許使用:,在Windows中不能使用**等等聊浅。在Linux中可以安全使用的字符如下所示:
數(shù)字餐抢、字母、圓點低匙、下劃線
其他的字符雖然也可以使用旷痕,但卻代表一些特定的含義,因為Shell對它們的解釋方法可能各不相同顽冶,而有一些則根本不能使用欺抗。
??/字符就禁止使用,因為在Linux中它是用來分隔目錄和文件的特殊字符强重。如果文件名包含/為folder/Test绞呈,則代表在目錄folder中存在文件Test,而實際上并不存在這個目錄和文件间景。
空格雖然不禁止使用佃声,但建議不要在文件名包含空格。因為在Shell中倘要,通常將空格做為參數(shù)之間的分隔符圾亏,使用空格會讓Shell解釋時產(chǎn)生誤解。如使用命令刪除folder Test:
rm folder Test
Shell會理解為先刪除文件folder再刪除文件Test碗誉。那么如何處理文件名的中空格召嘶,甚至?哮缺、*弄跌、'、"呢尝苇?雖然在Shell命令可以使用轉(zhuǎn)義符**铛只、""和'',但還是建議避免使用糠溜。下面就列舉一些在文件名中如何使用特殊字符:
字符 | 建議 |
---|---|
/ | 禁止使用淳玩,也不能被轉(zhuǎn)義 |
\ | 必須轉(zhuǎn)義,避免使用 |
- | 不能做為文件名或目錄名的開始 |
[] | 必須轉(zhuǎn)義非竿,避免使用 |
{} | 必須轉(zhuǎn)義蜕着,避免使用 |
* | 必須轉(zhuǎn)義,避免使用 |
? | 必須轉(zhuǎn)義,避免使用 |
' | 必須轉(zhuǎn)義承匣,避免使用 |
" | 必須轉(zhuǎn)義蓖乘,避免使用 |
通配符及其含義
在Linux中常見的通配符有三個*、韧骗?嘉抒、[ ],含義分別如下:
參數(shù) | 含義 |
---|---|
* | 匹配0個或多個任意字符 |
? | 匹配單個字符 |
[ ] | 匹配一組單個字符 |
假設(shè)計算機(jī)中某一目錄下面有如下所示的文件
file1.jpg
file2.jpg
file3.jpg
file4.jpb
file5.jpg
file.log
現(xiàn)在想使用rm命令刪除文件袍暴,使用通配符的示例如下:
命令 | 匹配 |
---|---|
rm file*.jpg | 刪除所有file1-5.jpg文件些侍,但不包含log文件 |
rm *log | 刪除file.log,但不會刪除jpg文件 |
rm * | 刪除目錄中所有文件 |
rm fil?1.jpg | 刪除file1.jpg文件 |
rm file?.jpg | 刪除所有file1-5.jpg文件政模,但不包含log文件 |
rm file[12].jpg | 刪除file1.jpg和file2.jpg |
rm file[1-4].jpg | 刪除file1/fiel2/file3/file4.jpg文件 |