在 linux 中什么是一個文件的路徑呢,說白了就是這個文件存在的地方,例如在上一章提到的/root/.ssh/authorized_keys 這就是一個文件的路徑。如果你告訴系統(tǒng)這個文件的路徑,那么系統(tǒng)就可以找到這個文件。在 linux 的世界中,存在著絕對路徑和相對路徑。
絕對路徑:路徑的寫法一定由根目錄”/”寫起,例如/usr/local/mysql 這就是絕對路徑。
相對路徑:路徑的寫法不是由根目錄”/”寫起,例如,首先用戶進(jìn)入到/ 然后再進(jìn)入到 home ,命令為 cd /home 然后 cd test 此時用戶所在的路徑為 /home/test 。第一個cd命令后跟 /home 第二個 cd 命令后跟 test ,并沒有斜杠,這個test是相對于/home 目錄來講的,所以叫做相對路徑。
pwd這個命令打印出當(dāng)前所在目錄
http://wiki.jikexueyuan.com/project/linux/images/6_1.png.jpg" alt="6_1.png.jpg" />
cd 進(jìn)入到某一個目錄
http://wiki.jikexueyuan.com/project/linux/images/6_12.png.jpg" alt="6_12.png.jpg" />
./ 指的是當(dāng)前目錄
../ 指的是當(dāng)前目錄的上一級目錄。
http://wiki.jikexueyuan.com/project/linux/images/6_13.png.jpg" alt="6_13.png.jpg" />
上圖中,首先進(jìn)入到/usr/local/lib/ 目錄下,然后再進(jìn)入 ./ 其實還是進(jìn)入到當(dāng)前目錄下,用pwd查看當(dāng)前目錄,并沒有發(fā)生變化,然后再進(jìn)入../ 則是進(jìn)入到了/usr/local/目錄下,即/usr/local/lib目錄的上一級目錄。你看明白了嗎?
mkdir創(chuàng)建一個目錄,這個命令在上一章節(jié)中提及過。mkdir 其實就是make directory的縮寫。其語法為 mkdir [-mp] [目錄名稱] ,其中-m , –p 為其選項,-m:這個參數(shù)用來指定要創(chuàng)建目錄的權(quán)限,該參數(shù)不常用,所以筆者不做重點(diǎn)解釋。-p:這個參數(shù)很管用的,先來做個試驗,你會一目了然的。
http://wiki.jikexueyuan.com/project/linux/images/6_14.png.jpg" alt="6_14.png.jpg" />
當(dāng)我們想創(chuàng)建 /tmp/test/123 目錄,可是提示不能創(chuàng)建,原因是/tmp/test目錄不存在,你會說,這個linux怎么這樣傻,/tmp/test目錄不存在就自動創(chuàng)建不就OK了嘛,的確linux確實很傻,如果它發(fā)現(xiàn)要創(chuàng)建的目錄的上一級目錄不存在就會報錯。然后linux也為我們想好了解決辦法,即-p參數(shù)。
http://wiki.jikexueyuan.com/project/linux/images/6_15.png.jpg" alt="6_15.png.jpg" />
你看到這里,是不是明白-p參數(shù)的作用了?沒錯,它的作用就是遞歸創(chuàng)建目錄,即使上級目錄不存在。還有一種情況就是如果你想要創(chuàng)建的目錄存在的話,會提示報錯,然后你加上-p參數(shù)后,就不會報錯了。
http://wiki.jikexueyuan.com/project/linux/images/6_16.png.jpg" alt="6_16.png.jpg" />
rmdir刪除一個目錄。
http://wiki.jikexueyuan.com/project/linux/images/6_17.png.jpg" alt="6_17.png.jpg" />
rmdir 其實是rmove directory 縮寫,其只有一個選項-p 類似與mkdir命令,這個參數(shù)的作用是將上級目錄一起刪除。舉個例子吧,新建目錄mkdir -p d1/d2/d3 ,rmdir -p d1/d2/d3相當(dāng)于是刪除了d1,d1/d2, d1/d2/d3。如果一個目錄中還有目錄,那么當(dāng)你直接rmdir 該目錄時,會提示該目錄不為空,不能刪除。如果你非要刪除不為空的目錄,那你用rm指令吧。
rm刪除目錄或者文件
rmdir 只能刪除目錄但不能刪除文件,要想刪除一個文件,則要用rm命令了。rm同樣也有很多選項。你可以通過 man rm 來獲得詳細(xì)幫助信息。在這里筆者只列舉較常用的幾個選項。
-f 強(qiáng)制的意思,如果不加這個選項,當(dāng)刪除一個不存在的文件時會報錯。
http://wiki.jikexueyuan.com/project/linux/images/6_18.png.jpg" alt="6_18.png.jpg" />
-i 這個選項的作用是,當(dāng)用戶刪除一個文件時會提示用戶是否真的刪除。
http://wiki.jikexueyuan.com/project/linux/images/6_19.png.jpg" alt="6_19.png.jpg" />
如果刪除,輸入y 否則輸入 n
-r 當(dāng)刪除目錄時,加該選項,如果不加這個選項會報錯。rm是可以刪除不為空的目錄的。
http://wiki.jikexueyuan.com/project/linux/images/6_20.png.jpg" alt="6_20.png.jpg" />
你會發(fā)現(xiàn),筆者在列舉的rm例子中使用的是絕對路徑,而ls 則使用的相對路徑。這是為什么呢?
http://wiki.jikexueyuan.com/project/linux/images/6_21.png.jpg" alt="6_21.png.jpg" />
which 用來查找一個命令的絕對路徑,這個命令筆者不詳細(xì)介紹,因為平時筆者只用來查找一個命令的絕對路徑。
alias用來設(shè)置指令的別名。語法:alias[別名]=[指令名稱],例如 alias rm='rm -i' ,即當(dāng)我們使用rm命令時,實際上是使用的是rm –i ,而用絕對路徑的/bin/rm 則不會被alias,該命令在以后章節(jié)中會詳細(xì)介紹。
上邊提到了alias,也提到了絕對路徑的/bin/rm ,然后你意識到?jīng)]有,為什么我們輸入很多命令時是直接打出了命令,而沒有去使用這些命令的絕對路徑?這是因為環(huán)境變量PATH在起作用了。請輸入 echo $PATH,這里的echo其實就是打印的意思,而PATH前面的$表示后面接的是變量。
http://wiki.jikexueyuan.com/project/linux/images/6_65.png.jpg" alt="6_65.png.jpg" />
因為/bin 在PATH的設(shè)定中,所以自然就可以找到ls了。如果你將 ls 移動到 /root 底下的話,然后你自己本身也在 /root 底下,但是當(dāng)你執(zhí)行 ls 的時候,他就是不理你?怎么辦?這是因為 PATH 沒有 /root 這個目錄,而你又將 ls 移動到 /root 底下了,自然系統(tǒng)就找不到可執(zhí)行文件了,因此就會告訴你, command not found !那么該怎么克服這種問題呢?
有兩個方法,一種方法是直接將 /root 的路徑加入 PATH 當(dāng)中!如何增加?可以使用:
PATH=”$PATH”:/root
另一種方式則是使用完整檔名,亦即直接使用相對或絕對路徑來執(zhí)行,例如:
/root/ls
./ls
關(guān)于rm,筆者使用最多便是-rf兩個選項合用了。不管刪除文件還是目錄都可以。但是方便的同時也要多注意,萬一你的手太快后邊跟了/那樣就會把你的系統(tǒng)文件全部刪除的,切記切記。
http://wiki.jikexueyuan.com/project/linux/images/6_66.png.jpg" alt="6_66.png.jpg" />
ls 在前面的命令中多次用到它。現(xiàn)在你已經(jīng)明白它的含義了吧。沒有錯,就是查看某個目錄或者某個文件,是list的簡寫。ls 后可以跟一個目錄,也可以跟一個文件。以下是ls的選項,在這里筆者并沒有完全列出,只是列出了平時使用最多的選項。其他選項,你可以自行通過man ls 查詢。
-a 全部的檔案都列出,包括隱藏的。linux文件系統(tǒng)中同樣也有隱藏文件。這些隱藏文件的文件名是以.開頭的。例如.test, /root/.123, /root/.ssh 等等,隱藏文件可以是目錄也可以是普通文件。
-l 詳細(xì)列出文件的屬性信息,包括大小、創(chuàng)建日期、所屬主所屬組等等。ll 這個命令等同于ls –l 。
http://wiki.jikexueyuan.com/project/linux/images/6_67.png.jpg" alt="6_67.png.jpg" />
--color=never/always/auto never即不要顯示顏色,always 即總顯示顏色,auto 是由系統(tǒng)自行判斷。在Redhat/CentOS 系統(tǒng)中,默認(rèn)是帶顏色的,因為我們平時用的ls已經(jīng)alias成了ls –color=tty 所以目錄的顏色是藍(lán)色的,而可執(zhí)行文件的顏色是綠色。這樣有助于幫我們區(qū)分文件的格式。
http://wiki.jikexueyuan.com/project/linux/images/6_68.png.jpg" alt="6_68.png.jpg" />
-d 后邊跟目錄,如果不加這個選項則列出目錄下的文件,加上后只列車目錄本身。
http://wiki.jikexueyuan.com/project/linux/images/6_69.png.jpg" alt="6_69.png.jpg" />
cp copy的簡寫,即拷貝。格式為 cp [選項] [ 來源文件 ] [目的文件] ,例如我想把test1 拷貝成test2 ,這樣即可 cp test1 test2,以下介紹幾個常用的選項
-d 這里涉及到一個“連接”的概念。連接分為軟連接和硬連接。在以后的章節(jié)中會詳細(xì)解釋,現(xiàn)在你只要明白這里的軟連接跟windows中的快捷方式類似即可。如果不加這個-d 則拷貝軟連接時會把軟連接的目標(biāo)文件拷貝過去,而加上后,其實只是拷貝了一個連接文件(即快捷方式)。
http://wiki.jikexueyuan.com/project/linux/images/6_70.png.jpg" alt="6_70.png.jpg" />
上例中的ln 命令即為建立連接的,以后再做詳細(xì)解釋。
-r 如果你要拷貝一個目錄,必須要加-r選項,否則你是拷貝不了目錄的。
http://wiki.jikexueyuan.com/project/linux/images/6_71.png.jpg" alt="6_71.png.jpg" />
-i 如果遇到一個存在的文件,會問是否覆蓋。在Redhat/CentOS系統(tǒng)中,我們使用的cp其實是cp –i
http://wiki.jikexueyuan.com/project/linux/images/6_72.png.jpg" alt="6_72.png.jpg" />
下面簡單做一個小試驗,很快你就會明白-i 選項的作用了。
http://wiki.jikexueyuan.com/project/linux/images/6_73.png.jpg" alt="6_73.png.jpg" />
上例中,touch 命令,看字面意思就是摸一下,沒錯,如果有這個文件,則會改變文件的訪問時間,如果沒有這個文件就會創(chuàng)建這個文件。前面說過echo,其實就是打印,在這里所echo的內(nèi)容”abc” 和 “def”并沒有顯示在屏幕上,而是分別寫進(jìn)了文件 111和222, 其寫入作用的就是這個大于號”>” 在linux中這叫做重定向,即把前面產(chǎn)生的輸出寫入到后面的文件中。在以后的章節(jié)中會做詳細(xì)介紹,這里你要明白它的含義即可。而cat 命令則是讀一個文件,并把讀出的內(nèi)容打印到當(dāng)前屏幕上。該命令也會在后續(xù)章節(jié)中詳細(xì)介紹。
-u 該選項僅當(dāng)目標(biāo)文件存在時才會生效,如果源文件比目標(biāo)文件新才會拷貝,否則不做任何動作。
mv 移動的意思,是move的簡寫。格式為 mv [ 選項 ] [源文件] [目標(biāo)文件],下面介紹幾個常用的選項。
-i 和cp的-i 一樣,當(dāng)目標(biāo)文件存在時會問用戶是否要覆蓋。在Redhat/CentOS系統(tǒng)中,我們使用的mv其實是mv –i
-u 和上邊cp 命令的-u選項一個作用,當(dāng)目標(biāo)文件存在時才會生效,如果源文件比目標(biāo)文件新才會移動,否則不做任何動作。
該命令有集中情況,你注意到了嗎?
1)目標(biāo)文件是目錄,而且目標(biāo)文件不存在;
2)目標(biāo)文件是目錄,而且目標(biāo)文件存在;
3)目標(biāo)文件不是目錄不存在;
4)目標(biāo)文件不是目錄存在;
目標(biāo)文件是目錄,存在和不存在,移動的結(jié)果是不一樣的,如果存在,則會把源文件移動到目標(biāo)文件目錄中。不存在的話移動完后,目標(biāo)文件是一個文件。這樣說也許你會覺得有點(diǎn)不好理解,看例子吧。
http://wiki.jikexueyuan.com/project/linux/images/6_74.png.jpg" alt="6_74.png.jpg" />
windows下的重命名,在linux下用mv就可以搞定。
cat 比較常用的一個命令,即查看一個文件的內(nèi)容并顯示在屏幕上。
-n 查看文件時,把行號也顯示到屏幕上。
http://wiki.jikexueyuan.com/project/linux/images/6_75.png.jpg" alt="6_75.png.jpg" />
上例中出現(xiàn)了一個”>>”,這個符號跟前面介紹的”>”的作用都是重定向,即把前面輸出的東西輸入到后邊的文件中,只是”>>”是追加的意思,而用”>”,如果文件中有內(nèi)容則會刪除文件中內(nèi)容,而”>>”則不會。
-A 顯示所有東西出來,包括特殊字符
http://wiki.jikexueyuan.com/project/linux/images/6_76.png.jpg" alt="6_76.png.jpg" />
tac其實是cat的反寫,同樣的功能也是反向打印文件的內(nèi)容到屏幕上。
http://wiki.jikexueyuan.com/project/linux/images/6_77.png.jpg" alt="6_77.png.jpg" />
more也是用來查看一個文件的內(nèi)容。當(dāng)文件內(nèi)容太多,一屏幕不能占下,而你用cat肯定是看不前面的內(nèi)容的,那么使用more就可以解決這個問題了。當(dāng)看完一屏后按空格鍵繼續(xù)看下一屏。但看完所有內(nèi)容后就會退出。如果你想提前退出,只需按q鍵即可。
less作用跟more一樣,但比more好在可以上翻,下翻。空格鍵同樣可以翻頁,而按”j”鍵可以向下移動(按一下就向下移動一行),按”k”鍵向上移動。在使用more和less查看某個文件時,你可以按一下”/” 鍵,然后輸入一個word回車,這樣就可以查找這個word了。如果是多個該word可以按”n”鍵顯示下一個。另外你也可以不按”/”而是按”?”后邊同樣跟word來搜索這個word,唯一不同的是,”/”是在當(dāng)前行向下搜索,而”?”是在當(dāng)前行向上搜索。
head head后直接跟文件名,則顯示文件的前十行。如果加 –n 選項則顯示文件前n行。
http://wiki.jikexueyuan.com/project/linux/images/6_78.png.jpg" alt="6_78.png.jpg" />
tail 和head一樣,后面直接跟文件名,則顯示文件最后十行。如果加-n 選項則顯示文件最后n行。
http://wiki.jikexueyuan.com/project/linux/images/6_79.png.jpg" alt="6_79.png.jpg" />
-f 動態(tài)顯示文件的最后十行,如果文件是不斷增加的,則用-f 選項。如:tail -f /var/log/messages
一個linux目錄或者文件,都會有一個所屬主和所屬組。所屬主,即文件的擁有者,而所屬組,即該文件所屬主所在的一個組。Linux這樣設(shè)置文件屬性的目的是為了文件的安全。例如,test文件的所屬主是user0 而test1文件的所屬主是user1,那么user1是不能查看test文件的,相應(yīng)的user0也不能查看test1文件。然后有這樣一個應(yīng)用,我想創(chuàng)建一個文件同時讓user0和user1來查看怎么辦呢?
這時“所屬組”就派上用場了。即,創(chuàng)建一個群組users,讓user0和user1同屬于users組,然后建立一個文件test2,且其所屬組為users,那么user0和user1都可以訪問test2文件。
Linux文件屬性不僅規(guī)定了所屬主和所屬組,還規(guī)定了所屬主(user)、所屬組(group)以及其他用戶(others)對該文件的權(quán)限。你可以通過ls -l 來查看這些屬性。
http://wiki.jikexueyuan.com/project/linux/images/6_80.png.jpg" alt="6_80.png.jpg" />
上例中,用ls –l 查看當(dāng)前目錄下的文件時,共顯示了9列內(nèi)容(用空格劃分列),都代表了什么含義呢?
第1列,包含的東西有該文件類型和所屬主、所屬組以及其他用戶對該文件的權(quán)限。第一列共10位。其中第一位用來描述該文件的類型。上例中,我們看到的類型有”d”, “-“ ,其實除了這兩種外還有”l”, “b”, “c”,”s”等。
d 表示該文件為目錄;
- 表示該文件為普通文件;
l 表示該文件為連接文件(linux file),上邊提到的軟連接即為該類型;
http://wiki.jikexueyuan.com/project/linux/images/6_81.png.jpg" alt="6_81.png.jpg" />
b 表示該文件為塊設(shè)備文件,比如磁盤分區(qū)
http://wiki.jikexueyuan.com/project/linux/images/6_82.png.jpg" alt="6_82.png.jpg" />
c 表示該文件為串行端口設(shè)備,例如鍵盤、鼠標(biāo)。
s 表示該文件為套接字文件(socket),用于進(jìn)程間通信。
后邊的9位,每三個為一組。均為rwx 三個參數(shù)的組合。其中r 代表可讀,w代表可寫,x代表可執(zhí)行。前三位為所屬主(user)的權(quán)限,中間三位為所屬組(group)的權(quán)限,最后三位為其他非本群組(others)的權(quán)限。下面拿一個具體的例子來述說一下。
一個文件的屬性為-rwxr-xr-- ,它代表的意思是,該文件為普通文件,文件擁有者可讀可寫可執(zhí)行,文件所屬組對其可讀不可寫可執(zhí)行,其他用戶對其只可讀。
對于一個目錄來講,打開這個目錄即為執(zhí)行這個目錄,所以任何一個目錄必須要有x權(quán)限才能打開并查看該目錄。例如一個目錄的屬性為 drwxr--r-- 其所屬主為root,那么除了root外的其他用戶是不能打開這個目錄的。
第2列,表示為連接占用的節(jié)點(diǎn)(inode),若為目錄時,通常與該目錄地下還有多少目錄有關(guān)系,關(guān)于連接(link)在以后章節(jié)詳細(xì)介紹。
第3列,表示該文件的所屬主。
第4列,表示該文件的所屬組。
第5列,表示該文件的大小。
第6列、第7列和第8列為該文件的創(chuàng)建日期或者最近的修改日期,分別為月份日期以及時間。
第9列,文件名。如果前面有一個. 則表示該文件為隱藏文件。
更改文件的權(quán)限,也就是更改所屬主、所屬組以及他們對應(yīng)的讀寫執(zhí)行權(quán)限。
1)更改所屬組 chgrp
語法:chgrp [組名] [文件名]
?
http://wiki.jikexueyuan.com/project/linux/images/6_83.png.jpg" alt="6_83.png.jpg" />
這里用到了groupadd 命令,其含義即增加一個用戶組。該命令在以后章節(jié)中做詳細(xì)介紹,你只要知道它是用來增加用戶組的即可。
2)更改文件的所屬主 chown
語法:chown [ -R ] 賬戶名文件名
chown [ -R ] 賬戶名:組名文件名
這里的-R選項只作用于目錄,作用是級聯(lián)更改,即不僅更改當(dāng)前目錄,連目錄里的目錄或者文件全部更改。
http://wiki.jikexueyuan.com/project/linux/images/6_84.png.jpg" alt="6_84.png.jpg" />
useradd 是增加一個賬戶,以后會詳細(xì)介紹。上例中,首先建立一個目錄test,然后在test目錄下創(chuàng)建一個普通文件test2,因為是以root的身份創(chuàng)建的目錄和文件,所以所屬主以及所屬組都是root。chown user1 test 這使test的目錄所屬主由root變?yōu)榱?/span>user1 ,然后test目錄下的test2文件所屬主以及所屬組還是root。接著 chown –R user1:testgroup test 這樣把test連同test目錄下的test2 的所屬主以及所屬組都改變了。
3)改變用戶對文件的讀寫執(zhí)行權(quán)限 chmod
在linux中為了方便更改這些權(quán)限,linux使用數(shù)字去代替rwx ,具體規(guī)則為r: 4 w:2 x:1 -:0 舉個例子,-rwxrwx---用數(shù)字表示就是 770,具體是這樣來的:
rwx = 4+2+1=7; rwx= 4+2+1=7; --- = 0+0+0=0
chmod 語法: chmod [-R] xyz 文件名(這里的xyz,表示數(shù)字)
-R 選項作用同chown,級聯(lián)更改。
值得提一下的是,在linux系統(tǒng)中,默認(rèn)一個目錄的權(quán)限為 755,而一個文件的默認(rèn)權(quán)限為644.
http://wiki.jikexueyuan.com/project/linux/images/6_85.png.jpg" alt="6_85.png.jpg" />
如果你創(chuàng)建了一個目錄,而該目錄不想讓其他人看到內(nèi)容,則只需設(shè)置成 rwxr----- (740) 即可。
chmod 還支持使用rwx的方式來設(shè)置權(quán)限。!從之前的介紹中我們可以發(fā)現(xiàn),基本上就九個屬性分別是(1)user (2)group (3)others 三群啦!那么我們就可以藉由 u, g, o 來代表三群的屬性!此外, a 則代表 all 亦即全部的三群!那么讀寫的屬性就可以寫成了 r, w, x!也就是可以使用底下的方式來看:
http://wiki.jikexueyuan.com/project/linux/images/6_86.png.jpg" alt="6_86.png.jpg" />
現(xiàn)在我想把一個文件設(shè)置成這樣的權(quán)限 rwxr-xr-x (755),使用這種方式改變權(quán)限的命令為
http://wiki.jikexueyuan.com/project/linux/images/6_87.png.jpg" alt="6_87.png.jpg" />
另外還可以針對u, g, o, a增加或者減少某個權(quán)限(讀,寫,執(zhí)行),例如
http://wiki.jikexueyuan.com/project/linux/images/6_88.png.jpg" alt="6_88.png.jpg" />
另外linux下還有兩個比較特殊的權(quán)限s和t,請點(diǎn)擊linux下文件的特殊權(quán)限s和t
umask
上邊也提到了默認(rèn)情況下,目錄權(quán)限值為766,普通文件權(quán)限值為644。那么這個值是由誰規(guī)定呢?追究其原因就涉及到了umask。
umask語法: umask xxx (這里的xxx代表三個數(shù)字)
查看umask值只要輸入umask然后回車。 umask預(yù)設(shè)是0022,其代表什么含義?先看一下下面的規(guī)則:
1)若用戶建立為普通文件,則預(yù)設(shè)“沒有可執(zhí)行權(quán)限”,只有rw兩個權(quán)限。最大為666(-rw-rw-rw-)
2)若用戶建立為目錄,則預(yù)設(shè)所有權(quán)限均開放,即777(drwxrwxrwx)
umask數(shù)值代表的含義為,上邊兩條規(guī)則中的默認(rèn)值(文件為666,目錄為777)需要減掉的權(quán)限。所以目錄的權(quán)限為(rwxrwxrwx) – (----w--w-) = (rwxr-xr-x),普通文件的權(quán)限為(rw-rw-rw-) – (----w--w-) = (rw-r--r--)。umask的值是可以自定義的,比如設(shè)定umask 為 002,你再創(chuàng)建目錄或者文件時,默認(rèn)權(quán)限分別為(rwxrwxrwx) – (-------w-) = (rwxrwxr-x)和(rw-rw-rw-) – (-------w-) = (rw-rw-r--)。
http://wiki.jikexueyuan.com/project/linux/images/6_89.png.jpg" alt="6_89.png.jpg" />
umask 可以在/etc/bashrc里面更改,預(yù)設(shè)情況下,root的umask為022,而一般使用者則為002,因為可寫的權(quán)限非常重要,因此預(yù)設(shè)會去掉寫權(quán)限。
chattr 修改文件的特殊屬性
語法: chattr [+-=][ASaci [文件或者目錄名]
+-= :分別為增加、減少、設(shè)定
A:增加該屬性后,文件或目錄的atime將不可被修改;
S:增加該屬性后,會將數(shù)據(jù)同步寫入磁盤中;
a:增加該屬性后,只能追加不能刪除,非root用戶不能設(shè)定該屬性;
c:自動壓縮該文件,讀取時會自動解壓;
i:增加后,使文件不能被刪除、重命名、設(shè)定連接、寫入、新增數(shù)據(jù);
http://wiki.jikexueyuan.com/project/linux/images/6_90.png.jpg" alt="6_90.png.jpg" />
增加i屬性后不能在該目錄中建立文件。
http://wiki.jikexueyuan.com/project/linux/images/6_91.png.jpg" alt="6_91.png.jpg" />
增加a屬性后,只能追加不能刪除。
lsattr 列出文件/目錄的特殊屬性
語法: lsattr [-aR] [文件/目錄名]
-a:類似與ls 的-a 選項,即連同隱藏文件一同列出;
-R:連同子目錄的數(shù)據(jù)一同列出
http://wiki.jikexueyuan.com/project/linux/images/6_92.png.jpg" alt="6_92.png.jpg" />
在上例中,test4是在test3目錄增加a屬性后建立的,所以test4也有a屬性,通過這個例子可以看出,chattr 的屬性是級聯(lián)生效的,不僅對當(dāng)前目錄生效而且會對目錄下的文件同樣生效。
在windows下有一個搜索工具,可以讓我們很快的找到一個文件,這是很有用的。然而在linux下搜索功能更加強(qiáng)大。
which用來查找可執(zhí)行文件的絕對路徑。
在前面章節(jié)中已經(jīng)多次用到該命令,需要注意的一點(diǎn)是,which只能用來查找PATH環(huán)境變量中出現(xiàn)的路徑下的可執(zhí)行文件。這個命令用的也是蠻多的,有時候我們不知道某個命令的絕對路徑,which一下很容易就知道了。
http://wiki.jikexueyuan.com/project/linux/images/6_93.png.jpg" alt="6_93.png.jpg" />
當(dāng)查找的文件在PATH變量中并沒有時,就會報錯。
whereis 通過預(yù)先生成的一個文件列表庫去查找跟給出的文件名相關(guān)的文件。
語法: whereis [-bmsu] [文件名稱]
-b:只找binary 文件
-m:只找在說明文件manual路徑下的文件
-s:只找source來源文件
-u:沒有說明檔的文件
http://wiki.jikexueyuan.com/project/linux/images/6_94.png.jpg" alt="6_94.png.jpg" />
說明:whereis 筆者幾乎很少用到,如果你感興趣請深入研究。
locate類似于whereis,也是通過查找預(yù)先生成的文件列表庫來告訴用戶要查找的文件在哪里。后邊直接跟文件名。如果你的linux沒有這個命令,請安裝軟件包 mlocate ,這個軟件包在你的系統(tǒng)安裝盤里,后綴名是RPM,隨后介紹的find命令會告訴你如何查找這個包。如果你裝的CentOS你可以使用這個命令來安裝 yum install –y mlocate 。 前提是你的CentOS能連互聯(lián)網(wǎng)。至于yum這個命令如何使用,到后續(xù)章節(jié)你自然會明白。如果你剛裝上這個命令,初次使用會報錯。
http://wiki.jikexueyuan.com/project/linux/images/6_95.png.jpg" alt="6_95.png.jpg" />
這是因為系統(tǒng)還沒有生成那個文件列表庫。你可以使用updatedb 命令立即生成(更新)這個庫。如果你的服務(wù)器上正跑著重要的業(yè)務(wù),那么你最好不要去運(yùn)行這個命令,因為一旦運(yùn)行,服務(wù)器的壓力會變大。這個數(shù)據(jù)庫默認(rèn)情況下每周更新一次。所以你用locate命令去搜索一個文件,正好是在兩次更新時間段內(nèi),那你肯定是得不到結(jié)果的。你可以到/etc/updated.conf 去配置這個數(shù)據(jù)庫生成(更新)的規(guī)則。locate命令筆者用的也并不多,所以你只要明白有這么一個東西即可。你用到時再去深究其用法吧。
find 這個搜索工具是筆者用的最多的一個,所以請你務(wù)必要熟悉它。
語法: find [路徑] [參數(shù)] 下面介紹幾個筆者經(jīng)常用的參數(shù)
-atime +n :訪問或執(zhí)行時間大于n天的文件
-ctime +n :寫入、更改inode屬性(例如更改所有者、權(quán)限或者連接)時間大于n天的文件
-mtime +n :寫入時間大于n天的文件
看到這里,你對這三個time是不是有些暈了,那筆者就先給你介紹一下這三個time屬性。
文件的 Access time,atime 是在讀取文件或者執(zhí)行文件時更改的。文件的 Modified time,mtime 是在寫入文件時隨文件內(nèi)容的更改而更改的。文件的 Create time,ctime 是在寫入文件、更改所有者、權(quán)限或鏈接設(shè)置時隨 Inode 的內(nèi)容更改而更改的。 因此,更改文件的內(nèi)容即會更改 mtime 和 ctime,但是文件的 ctime 可能會在 mtime 未發(fā)生任何變化時更改,例如,更改了文件的權(quán)限,但是文件內(nèi)容沒有變化。 如何獲得一個文件的atime mtime 以及ctime ?
ls -l 命令可用來列出文件的 atime、ctime 和 mtime。
ls -lc filename? ?? ?? ?列出文件的 ctime
ls -lu filename? ?? ?? ?列出文件的 atime
ls -l filename? ?? ?? ? 列出文件的 mtime ? ?
atime不一定在訪問文件之后被修改,因為:使用ext3文件系統(tǒng)的時候,如果在mount的時候使用了noatime參數(shù)那么就不會更新atime的信息。而這是加了 noatime 取消了, 不代表真實情況。反正, 這三個 time stamp 都放在 inode 中。若 mtime, atime 修改inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了。
繼續(xù)講find常用的參數(shù)。
-name filename 直接查找該文件名的文件,這個使用最多了。
http://wiki.jikexueyuan.com/project/linux/images/6_96.png.jpg" alt="6_96.png.jpg" />
-type type :通過文件類型查找。文件類型在前面部分已經(jīng)簡單介紹過,相信你已經(jīng)大體上了解了。type 包含了 f, b, c, d, l, s 等等。后續(xù)的內(nèi)容還會介紹文件類型的