天天看點

Linux檔案和目錄管理常用指令(中)

ln 指令

描述:ln指令用來為檔案建立連接配接,連接配接類型分為硬連接配接和符号連接配接兩種,預設的連接配接類型是硬連接配接。如果要建立符号連接配接必須使用"-s"選項。

注意:符号連結檔案不是一個獨立的檔案,它的許多屬性依賴于源檔案,是以給符号連結檔案設定存取權限是沒有意義的。

文法:ln(選項)(參數)

常用選項:

-b或--backup              删除,覆寫目标檔案之前的備份;

-d或-F或——directory     建立目錄的硬連接配接;

-f或——force             強行建立檔案或目錄的連接配接,不論檔案或目錄是否存在;

-i或——interactive       覆寫既有檔案之前先詢問使用者;

-n或--no-dereference      把符号連接配接的目的目錄視為一般檔案;

-s或——symbolic          對源檔案建立符号連接配接,而非硬連接配接;

-S或--suffix=<字尾備份字元串>   用"-b"參數備份目标檔案後,備份檔案的字尾會被加上一個備份字元串,預設的備份字元串是符号“~”,使用者可通過“-S”參數來改變它;

-v或——verbose           顯示指令執行過程;

-V或--version-control=<備份方式>      使用“-V”參數<備份方式>指定不同備份方式時,也會産生不同字尾的備份字元串;

--help                    線上幫助;

--version                 顯示版本資訊。

用法舉例:

将目錄/usr/new/a1下的檔案a2.c連結到目錄/usr/old下的檔案b2.c

cd /usr/new   

ln /a1/a2.c /usr/old/b2.c

說明:在執行ln指令之前,目錄/usr/old中不存在b2.c檔案。執行ln之後,在/usr/old目錄中才有b2.c這一項,表明a2.c和b2.c連結起來(注意,二者在實體上是同一檔案),利用ls -l指令可以看到連結數的變化。

在目錄/usr/old下建立一個符号連結檔案abc,使它指向目錄/usr/new/a1

ln -s /usr/new/a1 /usr/old/abc

說明:執行該指令後,/usr/new/a1代表的路徑将存放在名為/usr/old/abc的檔案中。

updatedb 指令

描述:updatedb指令用來建立或更新slocate指令所必需的資料庫檔案。updatedb指令的執行過程較長,因為在執行時它會周遊整個系統的目錄樹,并将所有的檔案資訊寫入slocate資料庫檔案中。

說明:slocate本身具有一個資料庫,裡面存放了系統中檔案與目錄的相關資訊。

文法:updatedb(選項)

-o<檔案>       忽略預設的資料庫檔案,使用指定的slocate資料庫檔案;

-U<目錄>       更新指定目錄的slocate資料庫;

-v             顯示執行的詳細過程。

更新指定指令的slocate資料庫     updatedb -U /usr/local/

dirname 指令

描述:dirname指令用來去除檔案名中的非目錄部分,僅顯示與目錄有關的内容。dirname指令讀取指定路徑名保留最後一個“/”及其後面的字元,删除其他部分,并寫結果到标準輸出。如果最後一個“/”後無字元,dirname 指令使用倒數第二個“/”,并忽略其後的所有字元。dirname 和 basename 通常在 shell 内部指令替換使用,以指定一個與指定輸入檔案名略有差異的輸出檔案名。

文法:dirname(選項)(參數)

--help       顯示幫助

--version    顯示版本号

dirname //       結果為 /

dirname /a/b/    結果為:/a

dirname a        結果為 .

dirname a/b      結果為路徑名a

more 指令

描述:more指令是一個基于vi編輯器文本過濾器,它以全螢幕的方式按頁顯示文本檔案的内容,支援vi中的關鍵字定位操作。more名單中内置了若幹快捷鍵,常用的有H(獲得幫助資訊),Enter(向下翻滾一行),空格(向下滾動一屏),Q(退出指令)。

該指令一次顯示一屏文本,滿屏後停下來,并且在螢幕的底部出現一個提示資訊,給出至今己顯示的該檔案的百分比:--More--(XX%)可以用下列不同的方法對提示做出回答: 按Space鍵:顯示文本的下一屏内容。 按Enier鍵:隻顯示文本的下一行内容。按斜線符|:接着輸入一個模式,可以在文本中尋找下一個相比對的模式。 按H鍵:顯示幫助屏,該屏上有相關的幫助資訊。按B鍵:顯示上一屏内容。 按Q鍵:退出rnore指令。

文法:more(選項)(參數)

-<數字>:指定每屏顯示的行數;

+<數字>:從指定數字的行開始顯示。

-d     顯示“[pressspace to continue,'q' to quit.]”和“[Press 'h' forinstructions]”;

-c     不進行滾屏操作。每次重新整理這個螢幕;

-s     将多個空行壓縮成一行顯示;

-u     禁止下劃線;

顯示檔案file的内容,但在顯示之前先清屏,并且在螢幕的最下方顯示完核的百分比。

more -dc file

顯示檔案file的内容,每10行顯示一次,而且在顯示之前先清屏。

more -c -10 file

less 指令

描述:less指令的作用與more十分相似,都可以用來浏覽文字檔案的内容,不同的是less指令允許使用者向前或向後浏覽檔案,而more指令隻能向前浏覽。用less指令顯示檔案時,用PageUp鍵向上翻頁,用PageDown鍵向下翻頁。要退出less程式,應按Q鍵。

文法:less(選項)(參數)

-e       檔案内容顯示完畢後,自動退出;

-f       強制顯示檔案;

-g       不加亮顯示搜尋到的所有關鍵詞,僅顯示目前顯示的關鍵字,以提高顯示速度;

-l       搜尋時忽略大小寫的差異;

-N        每一行行首顯示行号;

-s        将連續多個空行壓縮成一行顯示;

-S        在單行顯示較長的内容,而不換行顯示;

-x<數字>  将TAB字元顯示為指定個數的空格字元。

head 指令

描述:head指令用于顯示檔案的開頭的内容。在預設情況下,head指令顯示檔案的頭10行内容。

文法:head(選項)(參數)

-n<數字>    指定顯示頭部内容的行數;

-c<字元數>  指定顯示頭部内容的字元數;

-v          總是顯示檔案名的頭資訊;

-q          不顯示檔案名的頭資訊。

tail 指令

描述:tail指令用于輸入檔案中的尾部内容。tail指令預設在螢幕上顯示指定檔案的末尾10行。如果給定的檔案不止一個,則在顯示的每個檔案前面加一個檔案名标題。如果沒有指定檔案或者檔案名為“-”,則讀取标準輸入。 注意:如果表示位元組或行數的N值之前有一個”+”号,則從檔案開頭的第N項開始顯示,而不是顯示檔案的最後N項。N值後面可以有字尾:b表示512,k表示1024,m表示1 048576(1M)。

文法:tail(選項)(參數)

--retry              即是在tail指令啟動時,檔案不可通路或者檔案稍後變得不可通路,都始終嘗試打開檔案。使用此選項時需要與選項“——follow=name”連用;

-c或——bytes=       輸出檔案尾部的N(N為整數)個位元組内容;

-f或--follow       顯示檔案最新追加的内容。“name”表示以檔案名的方式監視檔案的變化。“-f”與“-fdescriptor”等效;

-F                   與選項“-follow=name”和“--retry"連用時功能相同;

-n或——line=        輸出檔案的尾部N(N位數字)行内容。

--pid=<程序号>      與“-f”選項連用,當指定的程序号的程序終止後,自動退出tail指令;

-q或——quiet或——silent           當有多個檔案參數時,不輸出各個檔案名;

-s<秒數>或——sleep-interal=<秒數>  與“-f”選項連用,指定監視檔案變化時間隔的秒數;

-v或——verbose      當有多個檔案參數時,總是輸出各個檔案名;

--help               顯示指令的幫助資訊;

--version            顯示指令的版本資訊。

顯示檔案file的最後10行                    tail file  

顯示檔案file的内容,從第20行至檔案末尾    tail +20 file

顯示檔案file的最後10個字元                tail -c 10 file

umask 指令

描述:umask指令用來設定限制建立檔案權限的掩碼。當新檔案被建立時,其最初的權限由檔案建立掩碼決定。使用者每次注冊進入系統時,umask指令都被執行, 并自動設定掩碼mode來限制新檔案的權限。使用者可以通過再次執行umask指令來改變預設值,新的權限将會把舊的覆寫掉。

文法:umask(選項)(參數)

-p:輸出的權限掩碼可直接作為指令來執行;

-S:以符号方式輸出權限掩碼。

利用umask指令可以指定哪些權限将在新檔案的預設權限中被删除。例如,可以使用下面的指令建立掩碼,使得組使用者的寫權限,其他使用者的讀、寫和執行權限都被取消: umask u=, g=w, o=rwx

執行該指令以後,對于下面建立的新檔案,其檔案主的權限未做任何改變,而組使用者沒有寫權限,其他使用者的所有權限都被取消。

應注意:操作符“=”在umask指令和chmod指令中的作用恰恰相反。在chmod指令中,利用它來設定指定的權限,而其餘權限則被删除;但是在umask指令中,它将在原有權限的基礎上删除指定的權限。

不能直接利用umask指令建立一個可執行的檔案,使用者隻能在其後利用chmod指令使它具有執行權限。假設執行了指令umask u=, g=w, o=rwx,雖然在指令行中,沒有删去檔案主群組使用者的執行權限,但預設的檔案權限還是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果建立的是目錄或者通過編譯程式建立的一個可執行檔案,将不受此限制。在這種情況下,會設定檔案的執行權限。 也可以使用八進制數值來設定mode。由于在umask中所指定的權限是要從檔案中删除的,是以,如果該檔案原來的初始化權限是777,那麼執行指令umask 022以後,該檔案的權限将變為755:如果該檔案原來的初始化權限是666,那麼該檔案的權限将變為644。

可以使用下面的指令檢查新建立檔案的預設權限: umask -s

選項-s表示以字元形式顯示目前的掩碼。如果直接輸入umask指令,不帶任何參數,那麼将以八進制形式顯示目前的掩碼。系統預設的掩碼是0022。

chattr 指令

描述:chattr指令用來改變檔案屬性。這項指令可改變存放在ext2檔案系統上的檔案或目錄屬性,這些屬性共有以下8種模式:

a:讓檔案或目錄僅供附加用途;

b:不更新檔案或目錄的最後存取時間;

c:将檔案或目錄壓縮後存放;

d:将檔案或目錄排除在傾倒操作之外;

i:不得任意更動檔案或目錄;

s:保密性删除檔案或目錄;

S:即時更新檔案或目錄;

u:預防意外删除。

文法:chattr(選項)(參數)

-R           遞歸處理,将指令目錄下的所有檔案及子目錄一并處理;

-v<版本編号> 設定檔案或目錄版本;

-V           顯示指令執行過程;

+<屬性>      開啟檔案或目錄的該項屬性;

-<屬性>      關閉檔案或目錄的該項屬性;

=<屬性>      指定檔案或目錄的該項屬性。

用chattr指令防止系統中某個關鍵檔案被修改:      chattr +i /etc/fstab

然後試一下rm、mv、rename等指令操作于該檔案,都是得到Operation not permitted的結果。讓某個檔案隻能往裡面追加内容,不能删除,一些日志檔案适用于這種操作:

chattr +a /data1/user_act.log

lsattr 指令

描述:lsattr指令用于檢視檔案的第二擴充檔案系統屬性。

文法:lsattr(選項)(參數)

-E    可顯示裝置屬性的目前值,但這個目前值是從使用者裝置資料庫中獲得的,而不是從裝置直接獲得的。 -D:顯示屬性的名稱,屬性的預設值,描述和使用者是否可以修改屬性值的标志。

-R    遞歸的操作方式;

-V    顯示指令的版本資訊;

-a    列出目錄中的所有檔案,包括隐藏檔案。

lsattr經常使用的幾個選項-D,-E,-R這三個選項不可以一起使用,它們是互斥的,經常使用的還有-l,-H,使用lsattr時,必須指出具體的裝置名,用-l選項指出要顯示裝置的邏輯名稱,否則要用-c,-s,-t等選項唯一的确定某個已存在的裝置。

chgrp 指令

描述:chgrp指令用來改變檔案或目錄所屬的使用者組。該指令用來改變指定檔案所屬的使用者組。其中,組名可以是使用者組的id,也可以是使用者組的組名。檔案名可以 是由空格分開的要改變屬組的檔案清單,也可以是由通配符描述的檔案集合。如果使用者不是該檔案的檔案主或超級使用者(root),則不能改變該檔案的組。

在UNIX系統家族裡,檔案或目錄權限的掌控以擁有者及所屬群組來管理。您可以使用chgrp指令去變更檔案與目錄的所屬群組,設定方式采用群組名稱或群組識别碼皆可。

文法:chgrp(選項)(參數)

-c或——changes         效果類似“-v”參數,但僅回報更改的部分;

-f或--quiet或——silent 不顯示錯誤資訊;

-h或--no-dereference    隻對符号連接配接的檔案作修改,而不是該其他任何相關檔案;

-R或——recursive       遞歸處理,将指令目錄下的所有檔案及子目錄一并處理;

-v或——verbose         顯示指令執行過程;

--reference=<參考檔案或目錄>   把指定檔案或目錄的所屬群組全部設成和參考檔案或目錄的所屬群組相同;

将/usr/new及其子目錄下的所有檔案的使用者組改為user1

chgrp -R user1 /usr/new

chown 指令

描述:chown指令改變某個檔案或目錄的所有者和所屬的組,該指令可以向某個使用者授權,使該使用者變成指定檔案的所有者或者改變檔案所屬的組。使用者可以是使用者或者是使用者D,使用者組可以是組名或組id。檔案名可以使由空格分開的檔案清單,在檔案名中可以包含通配符。隻有檔案主和超級使用者才可以便用該指令。

文法:chown(選項)(參數)

-c或——changes          效果類似“-v”參數,但僅回報更改的部分;

-f或--quite或——silent  不顯示錯誤資訊;

-h或--no-dereference     隻對符号連接配接的檔案作修改,而不更改其他任何相關檔案;

-R或——recursive       遞歸處理,将指定目錄下的所有檔案及子目錄一并處理;

-v或——version         顯示指令執行過程;

--dereference           效果和“-h”參數相同;

--help                  線上幫助;

--reference=<參考檔案或目錄>  把指定檔案或目錄的擁有者與所屬群組全部設成和參考檔案或目錄的擁有者與所屬群組相同;

--version               顯示版本資訊。

将目錄/usr/new及其下面的所有檔案、子目錄的檔案主改成 grp1:

chown -R grp1 /usr/new

mkdir 指令

描述:mkdir指令用來建立目錄。該指令建立由dirname命名的目錄。如果在目錄名的前面沒有加任何路徑名,則在目前目錄下建立由dirname指定的目錄;如果給出了一個已經存在的路徑,将會在該目錄下建立一個指定的目錄。在建立目錄時,應保證建立的目錄與它所在目錄下的檔案沒有重名。 

注意:在建立檔案時,不要把所有的檔案都存放在主目錄中,可以建立子目錄,通過它們來更有效地組織檔案。最好采用前後一緻的命名方式來區分檔案和目錄。例如,目錄名可以以大寫字母開頭,這樣,在目錄清單中目錄名就出現在前面。

在一個子目錄中應包含類型相似或用途相近的檔案。例如,應建立一個子目錄,它包含所有的資料庫檔案,另有一個子目錄應包含電子表格檔案,還有一個子目錄應包含文字處理文檔,等等。目錄也是檔案,它們和普通檔案一樣遵循相同的命名規則,并且利用全路徑可以唯一地指定一個目錄。

文法:mkdir(選項)(參數)

-Z   設定安全上下文,當使用SELinux時有效;

-m<目标屬性>或--mode<目标屬性>   建立目錄的同時設定目錄的權限;

-p或--parents    若所要建立目錄的上層目錄目前尚未建立,則會一并建立上層目錄;

--version    顯示版本資訊。

在目錄/usr/meng下建立子目錄test,并且隻有檔案主有讀、寫和執行權限,其他人無權通路

mkdir -m 700 /usr/meng/test

在目前目錄中建立bin和bin下的os_1目錄,權限設定為檔案主可讀、寫、執行,同組使用者可讀和執行,其他使用者無權通路       mkdir -p-m 750 bin/os_1

chmod 指令

描述:chmod指令用來變更檔案或目錄的權限。在UNIX系統家族裡,檔案或目錄權限的控制分别以讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可供運用。使用者可以使用chmod指令去變更檔案與目錄的權限,設定方式采用文字或數字代号皆可。符号連接配接的權限無法變更,如果使用者對符号連接配接修改權限,其改變會作用在被連接配接的原始檔案。

權限範圍的表示法如下:

u User,即檔案或目錄的擁有者;

g Group,即檔案或目錄的所屬群組;

o Other,除了檔案或目錄擁有者或所屬群組之外,其他使用者皆屬于這個範圍;

a All,即全部的使用者,包含擁有者,所屬群組以及其他使用者;

r 讀取權限,數字代号為“4”;

w 寫入權限,數字代号為“2”;

x 執行或切換權限,數字代号為“1”;

- 不具任何權限,數字代号為“0”;

s 特殊功能說明:變更檔案或目錄的權限。

文法:chmod(選項)(參數)

-c或——changes           效果類似“-v”參數,但僅回報更改的部分;

-f或--quiet或——silent   不顯示錯誤資訊;

-R或——recursive         遞歸處理,将指令目錄下的所有檔案及子目錄一并處理;

--reference= <參考檔案或目錄>  把指定檔案或目錄的所屬群組全部設成和參考檔案或目錄的所屬群組相同;

<權限範圍>+<權限設定>     開啟權限範圍的檔案或目錄的該選項權限設定;

<權限範圍>-<權限設定>     關閉權限範圍的檔案或目錄的該選項權限設定;

<權限範圍>=<權限設定>     指定權限範圍的檔案或目錄的該選項權限設定;

為檔案f01設定自己可以執行,組員可以寫入的權限   

chmod u+x,g+w f01    chmod u=rwx,g=rw,o=r f01      chmod 764 f01

對檔案f01的u,g,o都設定可執行屬性     chmod a+x f01

把檔案f01給uesr,添加到grp1組      chown user:grp1 f01

rmdir 指令

描述:rmdir指令用來删除空目錄。當目錄不再被使用時,或者磁盤空間已到達使用限定值,就需要删除失去使用價值的目錄。利用rmdir指令可以從一個目錄中删除一個或多個空的子目錄。該指令從一個目錄中删除一個或多個子目錄,其中dirname佬表示目錄名。如果dirname中沒有指定路徑,則删除目前目錄下由dirname指定的目錄;如dirname中包含路徑,則删除指定位置的目錄。删除目錄時,必須具有對其父目錄的寫權限。

注意:子目錄被删除之前應該是空目錄。就是說,該目錄中的所有檔案必須用rm指令全部,另外,目前工作目錄必須在被删除目錄之上,不能是被删除目錄本身,也不能是被删除目錄的子目錄。

雖然還可以用帶有-r選項的rm指令遞歸删除一個目錄中的所有檔案和該目錄本身,但是這樣做存在很大的危險性。

文法:rmdir(選項)(參數)

-p或--parents       删除指定目錄後,若該目錄的上層目錄已變成空目錄,則将其一并删除;

--ignore-fail-on-non-empty  此選項使rmdir指令忽略由于删除非空目錄時導緻的錯誤資訊;

-v或-verboes        顯示指令的詳細執行過程;

--help              顯示指令的幫助資訊;

--version           顯示指令的版本資訊。

删除子目錄dir1和其父目錄dir

cd /usr/new/test

rmdir -p dir/a1

locate/slocate 指令

描述:locate指令和slocate指令都用來查找檔案或目錄。 locate指令其實是find -name的另一種寫法,但是要比後者快得多,原因在于它不搜尋具體目錄,而是搜尋一個資料庫/var/lib/locatedb,這個資料庫中含有本地所有檔案資訊。Linux系統自動建立這個資料庫,并且每天自動更新一次,是以使用locate指令查不到最新變動過的檔案。為了避免這種情況,可以在使用locate之前,先使用updatedb指令,手動更新資料庫。

文法:locate/slocate(選項)(參數)

-d<目錄>或--database=<目錄>   指定資料庫所在的目錄;

-u         更新slocate資料庫;

--help     顯示幫助;

--version  顯示版本資訊。

搜尋etc目錄下所有以sh開頭的檔案:        locate /etc/sh

搜尋使用者主目錄下,所有以m開頭的檔案:   locate ~/m

搜尋使用者主目錄下,所有以m開頭的檔案,并且忽略大小寫:    locate -i ~/m

tree 指令

描述:tree指令以樹狀圖列出目錄的内容。

文法:tree(選項)(參數)

-a   顯示所有檔案和目錄;

-A   使用ASNI繪圖字元顯示樹狀圖而非以ASCII字元組合;

-C   在檔案和目錄清單加上色彩,便于區分各種類型;

-d   先是目錄名稱而非内容;

-D   列出檔案或目錄的更改時間;

-f   在每個檔案或目錄之前,顯示完整的相對路徑名稱;

-F   在執行檔案,目錄,Socket,符号連接配接,管道名稱名稱,各自加上"*","/","@","|"号;

-g   列出檔案或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識别碼;

-i   不以階梯狀列出檔案和目錄名稱;

-l   <範本樣式> 不顯示符号範本樣式的檔案或目錄名稱;

-l   如遇到性質為符号連接配接的目錄,直接列出該連接配接所指向的原始目錄;

-n   不在檔案和目錄清單加上色彩;

-N   直接列出檔案和目錄名稱,包括控制字元;

-p   列出權限标示;

-P   <範本樣式> 隻顯示符合範本樣式的檔案和目錄名稱;

-q   用“?”号取代控制字元,列出檔案和目錄名稱;

-s   列出檔案和目錄大小;

-t   用檔案和目錄的更改時間排序;

-u   列出檔案或目錄的擁有者名稱,沒有對應的名稱時,則顯示使用者識别碼;

-x   将範圍局限在現行的檔案系統中,若指定目錄下的某些子目錄,其存放于另一個檔案系統上,則将該目錄予以排除在尋找範圍外。

繼續閱讀