[code]Linux一般將檔案可存取的身份分為三個類別(owner/group/others),三種身份各自具有各自的r/w/x權限。
Linux文件類型:
1、普通文件(regular file,符號'-'):
a、純文本(ASCII):Linux系統中最多的一種文件類型;這類文件內容是我們可以直接讀到的數據(eg:數字、字母)。
b、二進制文件(binary file):可執行文件(scripts,文字型批吃力文件除外)就是這種類型。
c、數據格式文件(data file):有些程序在運行的過程中會讀取到某些特定格式的檔案,這些特定檔案可被稱為數據文件;一般用cat查看顯示出來的為一堆亂碼。
2、目錄(directory):符號'd';
3、連接文件(link):符號'l';
4、設備和文件(device):
a、塊設備文件:存儲文件(eg:硬盤、軟盤等),符號'b';
b、字符設備文件:串行端口的接口文件(eg:鍵盤、鼠標),符號'c';
5、套接字(sockets):符號's'; 通常用於網絡的數據連接。
6、管道(FIFO,pipe):符號'p',是一種特殊的文件類型,主要目的是解決多個程序同時訪問同一個文件所造成的錯誤問題(first-in-first-out)。
文件的類型介紹完了那麼直觀的來感受一下Linux中的文件。要查看Linux中的文件,有一個重要的指令——ls(查看檔案的指令),使用root身份進入Linux,下達[ls -al]指令,效果如下圖:
[code]第三行前十個字符表示的就是檔案類型權限,數字表示的是連結數,接下來是檔案的擁有者,檔案所屬的群組,檔案的容量,檔案最後被修改的時間,檔名。下面詳細說明前十個字符。
第一個代表的是該文件的文件類型,前面已經介紹過了;然後剩余的九個字符,依次每三個一組,分別為檔案擁有者、檔案所屬群組、其他人的權限。權限總共分為三種,分別為[r]可讀(read)、[w]可寫(write)、[x]可執行(execute)。這三個權限的位置是固定的不會改變,如果沒有該權限則會以'-'替代。下面以[..]檔案為例分別介紹
首先、第一個字符為'd'表明該檔案為目錄文件;
第一組(擁有者權限):該擁有者可讀、可寫並且可執行;
第二組(通群組權限):可讀、可執行但是不可寫;
第三組(其他非本群組權限):可讀、可執行但不可寫。
注意:r/w/x權限對於目錄與檔案的意義並不相同,這是因為目錄與檔案所記錄的數據內容不相同所至。
權限對檔案的重要性:檔案是實際含有數據的地方,包括一般文本文件、數據庫內容文件、二進制可執行文件(binary program)。因此權限對於檔案來說含義如下:
a、[r](read):可取該檔案的實際內容;
b、[w](write):可以編輯、新增或者修改該檔案的內容(沒有刪除);
c、[x](execute):該檔案可以被系統執行。
權限對於目錄的重要性:檔案是存放實際數據的“家”,目錄主要的內容在記錄文件名列表。權限對於目錄的意義如下:
a、[r](read contents in directory):表示具有讀取目錄結構列表的權限,所以當具有(r)權限時,表示可以查詢該目錄下的文件名數據。
b、[w](modify contents of directory):表示具有異動該目錄列表的權限,即就是如下權限:
1、建立新的文件與目錄;
2、刪除已經存在的檔案與目錄(不論檔案的權限為何);
3、靜一靜訊在的檔案或目錄進行重命名;
4、搬移該目錄內的檔案或目錄的位置
c、[x](access directory):目錄是不可以被執行的,目錄的[x]表示的是用戶能否進入該目錄為工作目錄(work directory)的用途。
Linux檔案擴展名:
Linux的檔案是沒有所謂的擴展名的,一個檔案能不能被執行取決於它的第一欄的十個屬性,與文件名沒有半毛線錢關系。雖然如此,我們仍然希望可以藉由擴展名來了解該檔案是什麼鬼,所以我們還是需要用適當的擴展名來表示該檔案的類型。
Linux檔案長度限制:使用預設的Ext2/Ext3文件系統時,針對檔案名長度的限制為
a、單一檔案或目錄的最大容許文件名為255個字符;
b、包含完整路徑名及目錄(/)的完整檔案名為4096個字符。
Linux文件名限制:一般來說在設定文件名時,最好可以避免一些特殊符號:* ? > < ; & ! [] \ + - ' " () {};因為這些符號在文字接口下具有特殊的含義;以'.'開頭的檔案為隱藏的。
ls指令:
-a:來處目錄下的所有文件(包括隱藏文件);
-b:把文件名中不可出現的字符用反斜槓加字符編號的形式列出;
-c:輸出文件的i節點的修改時間,並以此排序;
-d:將目錄像文件一樣的顯示,而不是顯示旗下的文件;
-f:-U對輸出的文件不進行排序;
-i:輸出文件的i節點的索引信息;eg:ls -ai 指定文件
-k:以k字節的形式表示文件的大小;eg:ls -alk 指定文件
-l:列出文件的詳細信息;
-m:橫向輸出文件名,並以","作為分隔
-n:用數字的UID,GID代替名稱;
-o:顯示文件的除組信息外的詳細信息;
-F:在每個文件名後面附上一個字符以說明文件的類型,'*'表示可執行的平通文件;'/'表示目錄;'@'表示符號鏈接;'|'表示FIFOs;'='表示套接字;
-q:用?代替不可輸出的字符;
-r:對目錄反向排序;
-s:在l文件名後輸出該文件大小。
-t:以時間排序;
-u:以文件上次被訪問的時間排序;
-x:按列輸出,橫向排列;
-A:顯示除'.'、'..'外的所有文件;
-B:不輸出以'~'結尾的備份文件;
-C:按列輸出,縱向排列;
-G:輸出文件組的信息;
-L:列出連接文件名而不是鏈接到的文件;
-N:不限制文件長度;
-Q:把輸出的文件名用”“括起來;
-R:列出所有子目錄下的文件;
-S:以文件大小排序;
-X:以文件的擴展名排序;
-1:一行只輸出一個文件;
--color=no:不顯示彩色文件名;
--help:在標准輸出上顯示幫助信息;
--version:在標准文件上輸出版本信息並退出。
cd命令:用於切換目錄
cd ~:進入用戶目錄;
cd -:返回最近訪問目錄;
cd ..:返回上級目錄;
cd !$:把上個命令的參數作為cd命令的目標參數使用