1. 程式人生 > >Linux—檔案與目錄管理(1)

Linux—檔案與目錄管理(1)

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]指令,效果如下圖:

1

第三行前十個字元表示的就是檔案型別許可權,數字表示的是連結數,接下來是檔案的擁有者,檔案所屬的群組,檔案的容量,檔案最後被修改的時間,檔名。下面詳細說明前十個字元。
第一個代表的是該檔案的檔案型別,前面已經介紹過了;然後剩餘的九個字元,依次每三個一組,分別為檔案擁有者、檔案所屬群組、其他人的許可權。許可權總共分為三種,分別為[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命令的目標引數使用