日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁(yè) 新聞資訊 >> 新聞?lì)^條 >> Linux文件與目錄管理
新聞資訊
NEWS INFORMATION

Linux文件與目錄管理

發(fā)布時(shí)間:2019-05-22

在linux中什么是一個(gè)文件的路徑呢,說(shuō)白了就是這個(gè)文件存在的地方,例如在上一章提到的/root/.ssh/authorized_keys 這就是一個(gè)文件的路徑。如果你告訴系統(tǒng)這個(gè)文件的路徑,那么系統(tǒng)就可以找到這個(gè)文件。在linux的世界中,存在著絕對(duì)路徑和相對(duì)路徑。

絕對(duì)路徑:路徑的寫法一定由根目錄”/”寫起,例如/usr/local/mysql 這就是絕對(duì)路徑。

相對(duì)路徑:路徑的寫法不是由根目錄”/”寫起,例如,首先用戶進(jìn)入到/ 然后再進(jìn)入到home ,命令為 cd /home 然后 cd test 此時(shí)用戶所在的路徑為 /home/test 。第一個(gè)cd命令后跟 /home 第二個(gè)cd命令后跟test ,并沒有斜杠,這個(gè)test是相對(duì)于/home 目錄來(lái)講的,所以叫做相對(duì)路徑。

pwd 這個(gè)命令打印出當(dāng)前所在目錄

[image]

cd 進(jìn)入到某一個(gè)目錄

[image]

./ 指的是當(dāng)前目錄

../ 指的是當(dāng)前目錄的上一級(jí)目錄。

[image]

上圖中,首先進(jìn)入到/usr/local/lib/ 目錄下,然后再進(jìn)入 ./ 其實(shí)還是進(jìn)入到當(dāng)前目錄下,用pwd查看當(dāng)前目錄,并沒有發(fā)生變化,然后再進(jìn)入../ 則是進(jìn)入到了/usr/local/目錄下,即/usr/local/lib目錄的上一級(jí)目錄。你看明白了嗎?

mkdir 創(chuàng)建一個(gè)目錄,這個(gè)命令在上一章節(jié)中提及過(guò)。mkdir 其實(shí)就是make directory的縮寫。其語(yǔ)法為 mkdir [-mp] [目錄名稱] ,其中-m , –p 為其選項(xiàng),-m:這個(gè)參數(shù)用來(lái)指定要?jiǎng)?chuàng)建目錄的權(quán)限,該參數(shù)不常用,所以筆者不做重點(diǎn)解釋。-p:這個(gè)參數(shù)很管用的,先來(lái)做個(gè)試驗(yàn),你會(huì)一目了然的。

[image]

當(dāng)我們想創(chuàng)建 /tmp/test/123 目錄,可是提示不能創(chuàng)建,原因是/tmp/test目錄不存在,你會(huì)說(shuō),這個(gè)linux怎么這樣傻,/tmp/test目錄不存在就自動(dòng)創(chuàng)建不就OK了嘛,的確linux確實(shí)很傻,如果它發(fā)現(xiàn)要?jiǎng)?chuàng)建的目錄的上一級(jí)目錄不存在就會(huì)報(bào)錯(cuò)。然后linux也為我們想好了解決辦法,即-p參數(shù)。

[image]

你看到這里,是不是明白-p參數(shù)的作用了?沒錯(cuò),它的作用就是遞歸創(chuàng)建目錄,即使上級(jí)目錄不存在。還有一種情況就是如果你想要?jiǎng)?chuàng)建的目錄存在的話,會(huì)提示報(bào)錯(cuò),然后你加上-p參數(shù)后,就不會(huì)報(bào)錯(cuò)了。

[image]

rmdir 刪除一個(gè)目錄。

[image]

rmdir 其實(shí)是rmove directory 縮寫,其只有一個(gè)選項(xiàng)-p 類似與mkdir命令,這個(gè)參數(shù)的作用是將上級(jí)目錄一起刪除。舉個(gè)例子吧,新建目錄mkdir -p d1/d2/d3 ,rmdir -p d1/d2/d3相當(dāng)于是刪除了d1,d1/d2, d1/d2/d3。如果一個(gè)目錄中還有目錄,那么當(dāng)你直接rmdir 該目錄時(shí),會(huì)提示該目錄不為空,不能刪除。如果你非要?jiǎng)h除不為空的目錄,那你用rm指令吧。

rm 刪除目錄或者文件

rmdir 只能刪除目錄但不能刪除文件,要想刪除一個(gè)文件,則要用rm命令了。rm同樣也有很多選項(xiàng)。你可以通過(guò) man rm 來(lái)獲得詳細(xì)幫助信息。在這里筆者只列舉較常用的幾個(gè)選項(xiàng)。

-f 強(qiáng)制的意思,如果不加這個(gè)選項(xiàng),當(dāng)刪除一個(gè)不存在的文件時(shí)會(huì)報(bào)錯(cuò)。

[image]

-i 這個(gè)選項(xiàng)的作用是,當(dāng)用戶刪除一個(gè)文件時(shí)會(huì)提示用戶是否真的刪除。

[image]

如果刪除,輸入y 否則輸入 n

-r 當(dāng)刪除目錄時(shí),加該選項(xiàng),如果不加這個(gè)選項(xiàng)會(huì)報(bào)錯(cuò)。rm是可以刪除不為空的目錄的。

[image]

你會(huì)發(fā)現(xiàn),筆者在列舉的rm例子中使用的是絕對(duì)路徑,而ls 則使用的相對(duì)路徑。這是為什么呢?

[image]

which 用來(lái)查找一個(gè)命令的絕對(duì)路徑,這個(gè)命令筆者不詳細(xì)介紹,因?yàn)槠綍r(shí)筆者只用來(lái)查找一個(gè)命令的絕對(duì)路徑。

alias 用來(lái)設(shè)置指令的別名。語(yǔ)法:alias[別名]=[指令名稱],例如 alias rm='rm -i' ,即當(dāng)我們使用rm命令時(shí),實(shí)際上是使用的是rm –i ,而用絕對(duì)路徑的/bin/rm 則不會(huì)被alias,該命令在以后章節(jié)中會(huì)詳細(xì)介紹。

環(huán)境變量PATH】

上邊提到了alias,也提到了絕對(duì)路徑的/bin/rm ,然后你意識(shí)到?jīng)]有,為什么我們輸入很多命令時(shí)是直接打出了命令,而沒有去使用這些命令的絕對(duì)路徑?這是因?yàn)榄h(huán)境變量PATH在起作用了。請(qǐng)輸入 echo $PATH,這里的echo其實(shí)就是打印的意思,而PATH前面的$表示后面接的是變量。

[image]

因?yàn)?bin 在PATH的設(shè)定中,所以自然就可以找到ls了。如果你將 ls 移動(dòng)到 /root 底下的話,然后你自己本身也在 /root 底下,但是當(dāng)你執(zhí)行 ls 的時(shí)候,他就是不理你?怎么辦?這是因?yàn)?nbsp;PATH 沒有 /root 這個(gè)目錄,而你又將 ls 移動(dòng)到 /root 底下了,自然系統(tǒng)就找不到可執(zhí)行文件了,因此就會(huì)告訴你, command not found !那么該怎么克服這種問(wèn)題呢?

有兩個(gè)方法,一種方法是直接將 /root 的路徑加入 PATH 當(dāng)中!如何增加?可以使用:  

PATH=”$PATH”:/root

另一種方式則是使用完整檔名,亦即直接使用相對(duì)或絕對(duì)路徑來(lái)執(zhí)行,例如:

/root/ls

./ls

關(guān)于rm,筆者使用最多便是-rf兩個(gè)選項(xiàng)合用了。不管刪除文件還是目錄都可以。但是方便的同時(shí)也要多注意,萬(wàn)一你的手太快后邊跟了/那樣就會(huì)把你的系統(tǒng)文件全部刪除的,切記切記。

[image]

ls 在前面的命令中多次用到它,F(xiàn)在你已經(jīng)明白它的含義了吧。沒有錯(cuò),就是查看某個(gè)目錄或者某個(gè)文件,是list的簡(jiǎn)寫。ls 后可以跟一個(gè)目錄,也可以跟一個(gè)文件。以下是ls的選項(xiàng),在這里筆者并沒有完全列出,只是列出了平時(shí)使用最多的選項(xiàng)。其他選項(xiàng),你可以自行通過(guò)man ls 查詢。

-a 全部的檔案都列出,包括隱藏的。linux文件系統(tǒng)中同樣也有隱藏文件。這些隱藏文件的文件名是以.開頭的。例如.test, /root/.123, /root/.ssh 等等,隱藏文件可以是目錄也可以是普通文件。

-l 詳細(xì)列出文件的屬性信息,包括大小、創(chuàng)建日期、所屬主所屬組等等。ll 這個(gè)命令等同于ls –l 。

[image]

--color=never/always/auto never即不要顯示顏色,always 即總顯示顏色,auto 是由系統(tǒng)自行判斷。在Redhat/CentOS 系統(tǒng)中,默認(rèn)是帶顏色的,因?yàn)槲覀兤綍r(shí)用的ls已經(jīng)alias成了ls –color=tty 所以目錄的顏色是藍(lán)色的,而可執(zhí)行文件的顏色是綠色。這樣有助于幫我們區(qū)分文件的格式。

[image]

-d 后邊跟目錄,如果不加這個(gè)選項(xiàng)則列出目錄下的文件,加上后只列車目錄本身。

[image]

cp copy的簡(jiǎn)寫,即拷貝。格式為 cp [選項(xiàng)] [ 來(lái)源文件 ] [目的文件] ,例如我想把test1 拷貝成test2 ,這樣即可 cp test1 test2,以下介紹幾個(gè)常用的選項(xiàng)

-d 這里涉及到一個(gè)“連接”的概念。連接分為軟連接和硬連接。在以后的章節(jié)中會(huì)詳細(xì)解釋,現(xiàn)在你只要明白這里的軟連接跟windows中的快捷方式類似即可。如果不加這個(gè)-d 則拷貝軟連接時(shí)會(huì)把軟連接的目標(biāo)文件拷貝過(guò)去,而加上后,其實(shí)只是拷貝了一個(gè)連接文件(即快捷方式)。

[image]

上例中的ln 命令即為建立連接的,以后再做詳細(xì)解釋。

-r 如果你要拷貝一個(gè)目錄,必須要加-r選項(xiàng),否則你是拷貝不了目錄的。

[image]

-i 如果遇到一個(gè)存在的文件,會(huì)問(wèn)是否覆蓋。在Redhat/CentOS系統(tǒng)中,我們使用的cp其實(shí)是cp –i

[image]

下面簡(jiǎn)單做一個(gè)小試驗(yàn),很快你就會(huì)明白-i 選項(xiàng)的作用了。

[image]

上例中,touch 命令,看字面意思就是摸一下,沒錯(cuò),如果有這個(gè)文件,則會(huì)改變文件的訪問(wèn)時(shí)間,如果沒有這個(gè)文件就會(huì)創(chuàng)建這個(gè)文件。前面說(shuō)過(guò)echo,其實(shí)就是打印,在這里所echo的內(nèi)容”abc” 和 “def”并沒有顯示在屏幕上,而是分別寫進(jìn)了文件 111和222, 其寫入作用的就是這個(gè)大于號(hào)”>” 在linux中這叫做重定向,即把前面產(chǎn)生的輸出寫入到后面的文件中。在以后的章節(jié)中會(huì)做詳細(xì)介紹,這里你要明白它的含義即可。而cat 命令則是讀一個(gè)文件,并把讀出的內(nèi)容打印到當(dāng)前屏幕上。該命令也會(huì)在后續(xù)章節(jié)中詳細(xì)介紹。

-u 該選項(xiàng)僅當(dāng)目標(biāo)文件存在時(shí)才會(huì)生效,如果源文件比目標(biāo)文件新才會(huì)拷貝,否則不做任何動(dòng)作。

mv 移動(dòng)的意思,是move的簡(jiǎn)寫。格式為 mv [ 選項(xiàng) ] [源文件] [目標(biāo)文件],下面介紹幾個(gè)常用的選項(xiàng)。

-i 和cp的-i 一樣,當(dāng)目標(biāo)文件存在時(shí)會(huì)問(wèn)用戶是否要覆蓋。在Redhat/CentOS系統(tǒng)中,我們使用的mv其實(shí)是mv –i

-u 和上邊cp 命令的-u選項(xiàng)一個(gè)作用,當(dāng)目標(biāo)文件存在時(shí)才會(huì)生效,如果源文件比目標(biāo)文件新才會(huì)移動(dòng),否則不做任何動(dòng)作。

該命令有集中情況,你注意到了嗎?

1) 目標(biāo)文件是目錄,而且目標(biāo)文件不存在;

2) 目標(biāo)文件是目錄,而且目標(biāo)文件存在;

3) 目標(biāo)文件不是目錄不存在;

4) 目標(biāo)文件不是目錄存在;

目標(biāo)文件是目錄,存在和不存在,移動(dòng)的結(jié)果是不一樣的,如果存在,則會(huì)把源文件移動(dòng)到目標(biāo)文件目錄中。不存在的話移動(dòng)完后,目標(biāo)文件是一個(gè)文件。這樣說(shuō)也許你會(huì)覺得有點(diǎn)不好理解,看例子吧。

[image]

windows下的重命名,在linux下用mv就可以搞定。

cat 比較常用的一個(gè)命令,即查看一個(gè)文件的內(nèi)容并顯示在屏幕上。

-n 查看文件時(shí),把行號(hào)也顯示到屏幕上。

[image]

上例中出現(xiàn)了一個(gè)”>>”,這個(gè)符號(hào)跟前面介紹的”>”的作用都是重定向,即把前面輸出的東西輸入到后邊的文件中,只是”>>”是追加的意思,而用”>”,如果文件中有內(nèi)容則會(huì)刪除文件中內(nèi)容,而”>>”則不會(huì)。

-A 顯示所有東西出來(lái),包括特殊字符

[image]

tac 其實(shí)是cat的反寫,同樣的功能也是反向打印文件的內(nèi)容到屏幕上。

[image]

more 也是用來(lái)查看一個(gè)文件的內(nèi)容。當(dāng)文件內(nèi)容太多,一屏幕不能占下,而你用cat肯定是看不前面的內(nèi)容的,那么使用more就可以解決這個(gè)問(wèn)題了。當(dāng)看完一屏后按空格鍵繼續(xù)看下一屏。但看完所有內(nèi)容后就會(huì)退出。如果你想提前退出,只需按q鍵即可。

less 作用跟more一樣,但比more好在可以上翻,下翻?崭矜I同樣可以翻頁(yè),而按”j”鍵可以向下移動(dòng)(按一下就向下移動(dòng)一行),按”k”鍵向上移動(dòng)。在使用more和less查看某個(gè)文件時(shí),你可以按一下”/” 鍵,然后輸入一個(gè)word回車,這樣就可以查找這個(gè)word了。如果是多個(gè)該word可以按”n”鍵顯示下一個(gè)。另外你也可以不按”/”而是按”?”后邊同樣跟word來(lái)搜索這個(gè)word,唯一不同的是,”/”是在當(dāng)前行向下搜索,而”?”是在當(dāng)前行向上搜索。

head head后直接跟文件名,則顯示文件的前十行。如果加 –n 選項(xiàng)則顯示文件前n行。

[image]

tail 和head一樣,后面直接跟文件名,則顯示文件最后十行。如果加-n 選項(xiàng)則顯示文件最后n行。

[image]

-f 動(dòng)態(tài)顯示文件的最后十行,如果文件是不斷增加的,則用-f 選項(xiàng)。如:tail -f /var/log/messages

文件的所屬主以及所屬組

一個(gè)linux目錄或者文件,都會(huì)有一個(gè)所屬主和所屬組。所屬主,即文件的擁有者,而所屬組,即該文件所屬主所在的一個(gè)組。Linux這樣設(shè)置文件屬性的目的是為了文件的安全。例如,test文件的所屬主是user0 而test1文件的所屬主是user1,那么user1是不能查看test文件的,相應(yīng)的user0也不能查看test1文件。然后有這樣一個(gè)應(yīng)用,我想創(chuàng)建一個(gè)文件同時(shí)讓user0和user1來(lái)查看怎么辦呢?

這時(shí)“所屬組”就派上用場(chǎng)了。即,創(chuàng)建一個(gè)群組users,讓user0和user1同屬于users組,然后建立一個(gè)文件test2,且其所屬組為users,那么user0和user1都可以訪問(wèn)test2文件。

Linux文件屬性不僅規(guī)定了所屬主和所屬組,還規(guī)定了所屬主(user)、所屬組(group)以及其他用戶(others)對(duì)該文件的權(quán)限。你可以通過(guò)ls -l 來(lái)查看這些屬性。

[image]

【linux文件屬性

上例中,用ls –l 查看當(dāng)前目錄下的文件時(shí),共顯示了9列內(nèi)容(用空格劃分列),都代表了什么含義呢?

第1列,包含的東西有該文件類型和所屬主、所屬組以及其他用戶對(duì)該文件的權(quán)限。第一列共10位。其中第一位用來(lái)描述該文件的類型。上例中,我們看到的類型有”d”, “-“ ,其實(shí)除了這兩種外還有”l”, “b”, “c”,”s”等。

d 表示該文件為目錄;

- 表示該文件為普通文件;

l 表示該文件為連接文件(linux file),上邊提到的軟連接即為該類型;

[image]

b 表示該文件為塊設(shè)備文件,比如磁盤分區(qū)

[image]

c 表示該文件為串行端口設(shè)備,例如鍵盤、鼠標(biāo)。

s 表示該文件為套接字文件(socket),用于進(jìn)程間通信。

后邊的9位,每三個(gè)為一組。均為rwx 三個(gè)參數(shù)的組合。其中r 代表可讀,w代表可寫,x代表可執(zhí)行。前三位為所屬主(user)的權(quán)限,中間三位為所屬組(group)的權(quán)限,最后三位為其他非本群組(others)的權(quán)限。下面拿一個(gè)具體的例子來(lái)述說(shuō)一下。

一個(gè)文件的屬性為-rwxr-xr-- ,它代表的意思是,該文件為普通文件,文件擁有者可讀可寫可執(zhí)行,文件所屬組對(duì)其可讀不可寫可執(zhí)行,其他用戶對(duì)其只可讀。

對(duì)于一個(gè)目錄來(lái)講,打開這個(gè)目錄即為執(zhí)行這個(gè)目錄,所以任何一個(gè)目錄必須要有x權(quán)限才能打開并查看該目錄。例如一個(gè)目錄的屬性為 drwxr--r-- 其所屬主為root,那么除了root外的其他用戶是不能打開這個(gè)目錄的。

第2列,表示為連接占用的節(jié)點(diǎn)(inode),若為目錄時(shí),通常與該目錄地下還有多少目錄有關(guān)系,關(guān)于連接(link)在以后章節(jié)詳細(xì)介紹。

第3列,表示該文件的所屬主。

第4列,表示該文件的所屬組。

第5列,表示該文件的大小。

第6列、第7列和第8列為該文件的創(chuàng)建日期或者最近的修改日期,分別為月份日期以及時(shí)間。

第9列,文件名。如果前面有一個(gè). 則表示該文件為隱藏文件。

更改文件的權(quán)限

更改文件的權(quán)限,也就是更改所屬主、所屬組以及他們對(duì)應(yīng)的讀寫執(zhí)行權(quán)限。

1)更改所屬組 chgrp

語(yǔ)法:chgrp [組名] [文件名]

 

[image]

這里用到了groupadd 命令,其含義即增加一個(gè)用戶組。該命令在以后章節(jié)中做詳細(xì)介紹,你只要知道它是用來(lái)增加用戶組的即可。

2)更改文件的所屬主 chown

語(yǔ)法:chown [ -R ] 賬戶名 文件名

chown [ -R ] 賬戶名:組名 文件名

這里的-R選項(xiàng)只作用于目錄,作用是級(jí)聯(lián)更改,即不僅更改當(dāng)前目錄,連目錄里的目錄或者文件全部更改。

[image]

useradd 是增加一個(gè)賬戶,以后會(huì)詳細(xì)介紹。上例中,首先建立一個(gè)目錄test,然后在test目錄下創(chuàng)建一個(gè)普通文件test2,因?yàn)槭且詒oot的身份創(chuàng)建的目錄和文件,所以所屬主以及所屬組都是root。chown user1 test 這使test的目錄所屬主由root變?yōu)榱藆ser1 ,然后test目錄下的test2文件所屬主以及所屬組還是root。接著 chown –R user1:testgroup test 這樣把test連同test目錄下的test2 的所屬主以及所屬組都改變了。

3)改變用戶對(duì)文件的讀寫執(zhí)行權(quán)限 chmod

在linux中為了方便更改這些權(quán)限,linux使用數(shù)字去代替rwx ,具體規(guī)則為r: 4 w:2 x:1 -:0 舉個(gè)例子,-rwxrwx---用數(shù)字表示就是 770,具體是這樣來(lái)的:

rwx = 4+2+1=7; rwx= 4+2+1=7; --- = 0+0+0=0

chmod 語(yǔ)法: chmod [-R] xyz 文件名 (這里的xyz,表示數(shù)字)

-R 選項(xiàng)作用同chown,級(jí)聯(lián)更改。

值得提一下的是,在linux系統(tǒng)中,默認(rèn)一個(gè)目錄的權(quán)限為 755,而一個(gè)文件的默認(rèn)權(quán)限為644.

[image]

如果你創(chuàng)建了一個(gè)目錄,而該目錄不想讓其他人看到內(nèi)容,則只需設(shè)置成 rwxr----- (740) 即可。

chmod 還支持使用rwx的方式來(lái)設(shè)置權(quán)限。!從之前的介紹中我們可以發(fā)現(xiàn),基本上就九個(gè)屬性分別是(1)user (2)group (3)others 三群啦!那么我們就可以藉由 u, g, o 來(lái)代表三群的屬性!此外, a 則代表 all 亦即全部的三群!那么讀寫的屬性就可以寫成了 r, w, x!也就是可以使用底下的方式來(lái)看:

[image]

現(xiàn)在我想把一個(gè)文件設(shè)置成這樣的權(quán)限 rwxr-xr-x (755),使用這種方式改變權(quán)限的命令為

[image]

另外還可以針對(duì)u, g, o, a增加或者減少某個(gè)權(quán)限(讀,寫,執(zhí)行),例如

[image]

另外linux下還有兩個(gè)比較特殊的權(quán)限s和t,請(qǐng)點(diǎn)擊linux下文件的特殊權(quán)限s和t

umask

上邊也提到了默認(rèn)情況下,目錄權(quán)限值為766,普通文件權(quán)限值為644。那么這個(gè)值是由誰(shuí)規(guī)定呢?追究其原因就涉及到了umask。

umask語(yǔ)法: umask xxx (這里的xxx代表三個(gè)數(shù)字)

查看umask值只要輸入umask然后回車。 umask預(yù)設(shè)是0022,其代表什么含義?先看一下下面的規(guī)則:

1)若用戶建立為普通文件,則預(yù)設(shè)“沒有可執(zhí)行權(quán)限”,只有rw兩個(gè)權(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)建目錄或者文件時(shí),默認(rèn)權(quán)限分別為(rwxrwxrwx) – (-------w-) = (rwxrwxr-x)和(rw-rw-rw-) – (-------w-) = (rw-rw-r--)。

[image]

umask 可以在/etc/bashrc里面更改,預(yù)設(shè)情況下,root的umask為022,而一般使用者則為002,因?yàn)榭蓪懙臋?quán)限非常重要,因此預(yù)設(shè)會(huì)去掉寫權(quán)限。

chattr 修改文件的特殊屬性

語(yǔ)法: chattr [+-=][ASaci [文件或者目錄名]

+-= :分別為增加、減少、設(shè)定

A:增加該屬性后,文件或目錄的atime將不可被修改;

S:增加該屬性后,會(huì)將數(shù)據(jù)同步寫入磁盤中;

a:增加該屬性后,只能追加不能刪除,非root用戶不能設(shè)定該屬性;

c:自動(dòng)壓縮該文件,讀取時(shí)會(huì)自動(dòng)解壓;

i:增加后,使文件不能被刪除、重命名、設(shè)定連接、寫入、新增數(shù)據(jù);

[image]

增加i屬性后不能在該目錄中建立文件。

[image]

增加a屬性后,只能追加不能刪除。

lsattr 列出文件/目錄的特殊屬性

語(yǔ)法: lsattr [-aR] [文件/目錄名]

-a:類似與ls 的-a 選項(xiàng),即連同隱藏文件一同列出;

-R:連同子目錄的數(shù)據(jù)一同列出

[image]

在上例中,test4是在test3目錄增加a屬性后建立的,所以test4也有a屬性,通過(guò)這個(gè)例子可以看出,chattr 的屬性是級(jí)聯(lián)生效的,不僅對(duì)當(dāng)前目錄生效而且會(huì)對(duì)目錄下的文件同樣生效。

linux下搜索一個(gè)文件

在windows下有一個(gè)搜索工具,可以讓我們很快的找到一個(gè)文件,這是很有用的。然而在linux下搜索功能更加強(qiáng)大。

which 用來(lái)查找可執(zhí)行文件的絕對(duì)路徑。

在前面章節(jié)中已經(jīng)多次用到該命令,需要注意的一點(diǎn)是,which只能用來(lái)查找PATH環(huán)境變量中出現(xiàn)的路徑下的可執(zhí)行文件。這個(gè)命令用的也是蠻多的,有時(shí)候我們不知道某個(gè)命令的絕對(duì)路徑,which一下很容易就知道了。

[image]

當(dāng)查找的文件在PATH變量中并沒有時(shí),就會(huì)報(bào)錯(cuò)。

whereis 通過(guò)預(yù)先生成的一個(gè)文件列表庫(kù)去查找跟給出的文件名相關(guān)的文件。

語(yǔ)法: whereis [-bmsu] [文件名稱]

-b:只找binary 文件

-m:只找在說(shuō)明文件manual路徑下的文件

-s:只找source來(lái)源文件

-u:沒有說(shuō)明檔的文件

[image]

說(shuō)明:whereis 筆者幾乎很少用到,如果你感興趣請(qǐng)深入研究。

locate 類似于whereis,也是通過(guò)查找預(yù)先生成的文件列表庫(kù)來(lái)告訴用戶要查找的文件在哪里。后邊直接跟文件名。如果你的linux沒有這個(gè)命令,請(qǐng)安裝軟件包 mlocate ,這個(gè)軟件包在你的系統(tǒng)安裝盤里,后綴名是RPM,隨后介紹的find命令會(huì)告訴你如何查找這個(gè)包。如果你裝的CentOS你可以使用這個(gè)命令來(lái)安裝 yum install –y mlocate 。 前提是你的CentOS能連互聯(lián)網(wǎng)。至于yum這個(gè)命令如何使用,到后續(xù)章節(jié)你自然會(huì)明白。如果你剛裝上這個(gè)命令,初次使用會(huì)報(bào)錯(cuò)。

[image]

這是因?yàn)橄到y(tǒng)還沒有生成那個(gè)文件列表庫(kù)。你可以使用updatedb 命令立即生成(更新)這個(gè)庫(kù)。如果你的服務(wù)器上正跑著重要的業(yè)務(wù),那么你最好不要去運(yùn)行這個(gè)命令,因?yàn)橐坏┻\(yùn)行,服務(wù)器的壓力會(huì)變大。這個(gè)數(shù)據(jù)庫(kù)默認(rèn)情況下每周更新一次。所以你用locate命令去搜索一個(gè)文件,正好是在兩次更新時(shí)間段內(nèi),那你肯定是得不到結(jié)果的。你可以到/etc/updated.conf 去配置這個(gè)數(shù)據(jù)庫(kù)生成(更新)的規(guī)則。locate命令筆者用的也并不多,所以你只要明白有這么一個(gè)東西即可。你用到時(shí)再去深究其用法吧。

find 這個(gè)搜索工具是筆者用的最多的一個(gè),所以請(qǐng)你務(wù)必要熟悉它。

語(yǔ)法: find [路徑] [參數(shù)] 下面介紹幾個(gè)筆者經(jīng)常用的參數(shù)

-atime +n :訪問(wèn)或執(zhí)行時(shí)間大于n天的文件

-ctime +n :寫入、更改inode屬性(例如更改所有者、權(quán)限或者連接)時(shí)間大于n天的文件

-mtime +n :寫入時(shí)間大于n天的文件

看到這里,你對(duì)這三個(gè)time是不是有些暈了,那筆者就先給你介紹一下這三個(gè)time屬性。

文件的 Access time,atime 是在讀取文件或者執(zhí)行文件時(shí)更改的。文件的 Modified time,mtime 是在寫入文件時(shí)隨文件內(nèi)容的更改而更改的。文件的 Create time,ctime 是在寫入文件、更改所有者、權(quán)限或鏈接設(shè)置時(shí)隨 Inode 的內(nèi)容更改而更改的。 因此,更改文件的內(nèi)容即會(huì)更改 mtime 和 ctime,但是文件的 ctime 可能會(huì)在 mtime 未發(fā)生任何變化時(shí)更改,例如,更改了文件的權(quán)限,但是文件內(nèi)容沒有變化。 如何獲得一個(gè)文件的atime mtime 以及ctime ?

ls -l 命令可用來(lái)列出文件的 atime、ctime 和 mtime。

ls -lc filename         列出文件的 ctime

ls -lu filename         列出文件的 atime

ls -l filename          列出文件的 mtime    

atime不一定在訪問(wèn)文件之后被修改,因?yàn)椋菏褂胑xt3文件系統(tǒng)的時(shí)候,如果在mount的時(shí)候使用了noatime參數(shù)那么就不會(huì)更新atime的信息。而這是加了 noatime 取消了, 不代表真實(shí)情況。反正, 這三個(gè) time stamp 都放在 inode 中。若 mtime, atime 修改inode 就一定會(huì)改, 既然 inode 改了, 那 ctime 也就跟著要改了。

繼續(xù)講find常用的參數(shù)。

-name filename 直接查找該文件名的文件,這個(gè)使用最多了。

[image]

-type type :通過(guò)文件類型查找。文件類型在前面部分已經(jīng)簡(jiǎn)單介紹過(guò),相信你已經(jīng)大體上了解了。type 包含了 f, b, c, d, l, s 等等。后續(xù)的內(nèi)容還會(huì)介紹文件類型的。

[image]

linux的文件系統(tǒng)

搞計(jì)算機(jī)的應(yīng)該都知道windows的系統(tǒng)格式化硬盤時(shí)會(huì)指定格式,fat 或者 ntfs。而linux的文件系統(tǒng)格式為Ext2,或者Ext3 。早期的linux使用Ext2格式,目前的linux都使用了Ext3。 Ext2文件系統(tǒng)雖然是高效穩(wěn)定的。但是,隨著Linux系統(tǒng)在關(guān)鍵業(yè)務(wù)中的應(yīng)用,Linux文件系統(tǒng)的弱點(diǎn)也漸漸顯露出來(lái)了,因?yàn)镋xt2文件系統(tǒng)是非日志文件系統(tǒng)。這在關(guān)鍵行業(yè)的應(yīng)用是一個(gè)致命的弱點(diǎn)。Ext3文件系統(tǒng)是直接從Ext2文件系統(tǒng)發(fā)展而來(lái),Ext3文件系統(tǒng)帶有日志功能,可以跟蹤記錄文件系統(tǒng)的變化,并將變化內(nèi)容寫入日志,寫操作首先是對(duì)日志記錄文件進(jìn)行操作,若整個(gè)寫操作由于某種原因 (如系統(tǒng)掉電) 而中斷,系統(tǒng)重啟時(shí),會(huì)根據(jù)日志記錄來(lái)恢復(fù)中斷前的寫操作,而且這個(gè)過(guò)程費(fèi)時(shí)極短。目前Ext3文件系統(tǒng)已經(jīng)非常穩(wěn)定可靠。它完全兼容Ext2文件系統(tǒng)。用戶可以平滑地過(guò)渡到一個(gè)日志功能健全的文件系統(tǒng)中來(lái)。這實(shí)際上了也是ext3日志文件系統(tǒng)初始設(shè)計(jì)的初衷。

Linux文件系統(tǒng)在windows中是不能識(shí)別的,但是在linux系統(tǒng)中你可以掛載的windows的文件系統(tǒng),linux目前支持MS-DOS,VFAT,F(xiàn)AT,BSD等格式。如果你使用的是Redhat或者CentOS,那么你不要妄圖掛載NFS格式的文件到linux下,因?yàn)樗恢С諲FS。雖然有些版本的linux支持NFS,但不建議使用,因?yàn)槟壳暗募夹g(shù)還不成熟。

Ext3文件系統(tǒng)為Redhat/CentOS默認(rèn)使用的文件系統(tǒng),除了Ext3文件系統(tǒng)外,有些linux發(fā)行版例如SuSE默認(rèn)的文件系統(tǒng)為reiserFS ,Ext3 獨(dú)特的優(yōu)點(diǎn)就是易于轉(zhuǎn)換,很容易在 Ext2 和 Ext3 之間相互轉(zhuǎn)換,而具有良好的兼容性,其它優(yōu)點(diǎn) ReiserFS 都有,而且還比它做得更好。如高效的磁盤空間利用和獨(dú)特的搜尋方式都是Ext3 所不具備的,速度上它也不能和 ReiserFS相媲美,在實(shí)際使用過(guò)程中,reiserFS 也更加安全高效,據(jù)說(shuō)反刪除功能也不錯(cuò)。

ReiserFS 的優(yōu)勢(shì)在于,它是基于 B*Tree 快速平衡樹這種高效算法的文件系統(tǒng),例如在處理小于 1k 的文件比 Ext3 快 10 倍。再一個(gè)就是 ReiserFS 空間浪費(fèi)較少,它不會(huì)對(duì)一些小文件分配 inode,而是打包存放在同一個(gè)磁盤塊 (簇) 中,Ext2/Ext3 是把它們單獨(dú)存放在不同的簇上,如簇大小為 4k,那么 2 個(gè) 100 字節(jié)的文件會(huì)占用 2 個(gè)簇,ReiserFS 則只占用一個(gè)。當(dāng)然 ReiserFS 也有缺點(diǎn),就是每升級(jí)一個(gè)版本,都要將磁盤重新格式化一次。

【linux文件類型

在前面的內(nèi)容中簡(jiǎn)單介紹了普通文件(-),目錄(d)等,在linux文件系統(tǒng)中,主要有以下幾種類型的文件。

1)正規(guī)文件(regular file):就是一般類型的文件,當(dāng)用ls –l 查看某個(gè)目錄時(shí),第一個(gè)屬性為”-“的文件就是正規(guī)文件,或者叫普通文件。正規(guī)文件又可分成純文字文件(ascii)和二進(jìn)制文件(binary)。純文本文件是可以通過(guò)cat, more, less等工具直接查看內(nèi)容的,而二進(jìn)制文件并不能。例如我們用的命令/bin/ls 這就是一個(gè)二進(jìn)制文件。

2)目錄(directory):這個(gè)很容易理解,就是目錄,跟windows下的文件夾一個(gè)意思,只不過(guò)在linux中我們不叫文件夾,而是叫做目錄。ls –l 查看第一個(gè)屬性為”d”。

3)連接檔(link):ls –l 查看第一個(gè)屬性為 “l”,類似windows下的快捷方式。這種文件在linux中很常見,而且筆者在日常的系統(tǒng)運(yùn)維工作中用的很多,所以你要特意留意一下這種類型的文件。在后續(xù)章節(jié)筆者會(huì)介紹。

4)設(shè)備檔(device):與系統(tǒng)周邊相關(guān)的一些檔案,通常都集中在 /dev 這個(gè)目錄之下!通常又分為兩種:區(qū)塊 (block) 設(shè)備檔 :就是一些儲(chǔ)存數(shù)據(jù),以提供系統(tǒng)存取的接口設(shè)備,簡(jiǎn)單的說(shuō)就是硬盤啦!例如你的一號(hào)硬盤的代碼是 /dev/hda1 等等的檔案啦!第一個(gè)屬性為 “ b “;字符 (character) 設(shè)備檔 :亦即是一些串行端口的接口設(shè)備,例如鍵盤、鼠標(biāo)等等!第一個(gè)屬性為 “ c “。

* linux 文件后綴名

對(duì)于后綴名這個(gè)概念,相信你不陌生吧。在linux系統(tǒng)中,文件的后綴名并沒有具體意義,也就是說(shuō),你加或者不加,都無(wú)所謂。但是為了容易區(qū)分,linux愛好者們都習(xí)慣給文件加一個(gè)后綴名,這樣當(dāng)用戶看到這個(gè)文件名時(shí)就會(huì)很快想到它到底是一個(gè)什么文件。例如1.sh, 2.tar.gz, my.cnf, test.zip等等,如果你首次接觸這些文件,你也許會(huì)感到很暈,沒有關(guān)系,隨著學(xué)習(xí)的深入,你就會(huì)逐漸的了解這些文件了。筆者所列舉的幾個(gè)文件名中1.sh代表它是一個(gè)shell script ,2.tar.gz 代表它是一個(gè)壓縮包,my.cnf 代表它是一個(gè)配置文件,test.zip 代表它是一個(gè)壓縮文件。

另外需要你知道的是,早期Unix系統(tǒng)文件名最多允許14個(gè)字符,而新的Unix或者linux系統(tǒng)中,文件名最長(zhǎng)可以到達(dá) 256 個(gè)字符!

【linux中的連接檔

在講連接檔之前,需要你先理解inode的概念。什么是inode呢?這就需要你知道磁盤的整體構(gòu)造。磁盤是有多個(gè)盤片(類似與光盤)重疊在一起構(gòu)成的,而每個(gè)盤片上會(huì)有一個(gè)可以移動(dòng)的磁頭,這個(gè)磁頭的作用就是用來(lái)讀寫數(shù)據(jù)的。磁頭并不是一直在動(dòng),當(dāng)磁頭固定時(shí),盤片轉(zhuǎn)一圈,這一圈就是一個(gè)磁道了。很多個(gè)盤片同半徑的那一圈的磁道總和稱為磁柱。而由圓心向外畫出直線,可以得到一個(gè)個(gè)扇區(qū),如圖二所示,一個(gè)扇區(qū)的物理量大約是 512 bytes ( 約 0.5K )。

[image]

圖一

[image]

圖二

知道了大體的硬盤構(gòu)造之后,再來(lái)談一談怎么硬盤分割( partition )呢?我們?cè)谶M(jìn)行硬盤分割的時(shí)候,最小都是以磁柱為單位進(jìn)行分割的,那么分割完成之后自然就是格式化( format )啰,在 Linux 里面我們?cè)谶M(jìn)行格式化的時(shí)候必須要考慮到 Block 與 inode 的信息,這個(gè) block 還好理解,他是我們磁盤可以記錄的最小單位,是由數(shù)個(gè) sector 所組成的,所以他的大小通常為 n*512 bytes ,例如 4K 。那么 inode 是什么? Block 是記錄“檔案內(nèi)容數(shù)據(jù)”的地區(qū),而 inode 則是記錄“該檔案的屬性、及該檔案放置在哪一個(gè) Block 之內(nèi)”的信息!所以,每個(gè)檔案都會(huì)占用到至少一個(gè) inode 。而當(dāng)我們 Linux 系統(tǒng)要找到這個(gè)檔案時(shí),他會(huì)先去搜尋 inode table 找到這個(gè)檔案的屬性及數(shù)據(jù)放置的地區(qū),然后再到數(shù)據(jù)去找到數(shù)據(jù)存放的 Block 進(jìn)而將數(shù)據(jù)取出利用。這個(gè) inode 數(shù)目在一開始就會(huì)被設(shè)定好,他的設(shè)定方式通常是利用 ( 硬盤大小 / 一個(gè)容量 ),這個(gè)容量至少應(yīng)該比 Block 要大一些較佳,例如剛剛的 Block 訂為 4K ,那么 inode 可以訂為 8K 左右。所以,一顆 1GB 的硬盤,如果以 8K 來(lái)規(guī)劃他的 inode 數(shù)時(shí),他的 inode 就會(huì)有 131072 個(gè) inode 啦!而一個(gè) inode 的大小為 128 bytes 這么大!這么一來(lái)的話,我們就可以清楚的知道了,那就是一個(gè) partition 格式化為一個(gè) filesystem 之后,基本上,他一定會(huì)有 inode table 與 data area 兩個(gè)區(qū)塊,一個(gè)用來(lái)記錄檔案的信息與該檔案放置的 block 區(qū)塊,一個(gè)用來(lái)記錄檔案的內(nèi)容!

由于我們 Linux 在讀取數(shù)據(jù)的時(shí)候,是先查詢 inode table 以得到數(shù)據(jù)是放在那個(gè) Block 里面,然后再去該 Block 里面讀取真正的數(shù)據(jù)內(nèi)容!然后,那個(gè) block 是我們?cè)诟袷交脖P的時(shí)候規(guī)定出來(lái)的一個(gè)值,這個(gè) block 是由 2 的 n 次方個(gè)sector 所集結(jié)而成的!所以,他是 0.5K 的倍數(shù)!假設(shè)我們 block 規(guī)劃為 4KBytes 好了,那么由于一個(gè) inode 與一個(gè)block 最多均只紀(jì)錄一個(gè)檔案,所以,如果你的一個(gè)檔案有 0.1 K bytes 這么大時(shí),你要曉得的是,由于你的 block 為 4K bytes ,因此,你就會(huì)有 3.9 Kbytes 的空間浪費(fèi)掉!所以,當(dāng)你在格式化硬盤的時(shí)候,請(qǐng)千萬(wàn)注意到你的系統(tǒng)未來(lái)的使用方向。

【ln 建立連接檔

前面提到過(guò)兩次連接檔的概念,現(xiàn)在終于該好好介紹下這部分內(nèi)容了。連接檔分為兩種,硬連接(hard link)和軟連接(symbolic link)。

Hard Links 上面內(nèi)容中說(shuō)過(guò),當(dāng)系統(tǒng)要讀取一個(gè)文件時(shí),就會(huì)先去讀inode table,然后再去根據(jù)inode中的信息到塊區(qū)域去將數(shù)據(jù)取出來(lái)。而hard link 是直接再建立一個(gè)inode連接到文件放置的塊區(qū)域。也就是說(shuō),進(jìn)行hard link的時(shí)候?qū)嶋H上該文件內(nèi)容沒有任何變化,只是增加了一個(gè)指到這個(gè)文件的inode,不過(guò)這樣一來(lái)就會(huì)有個(gè)問(wèn)題,因?yàn)樵黾拥膇node會(huì)連接到塊區(qū)域,而目錄本身僅僅消耗inode而已,那么hard link就不能連接目錄了。請(qǐng)你記住,hard link 有兩個(gè)限制:1 不能跨文件系統(tǒng),因?yàn)椴煌ǖ奈募到y(tǒng)有不同的inode table; 2 不能連接目錄。

Symbolic Links跟hard link不同,這個(gè)是建立一個(gè)獨(dú)立的文件,而這個(gè)文件的作用是當(dāng)讀取這個(gè)連接文件時(shí),它會(huì)把讀取的行為轉(zhuǎn)發(fā)到該文件所link的文件上。這樣講,也許比較繞口,那么就來(lái)舉一個(gè)例子,F(xiàn)在有文件a,我們做了一個(gè)軟連接文件b(只是一個(gè)連接文件,非常。琤指向了文件a。當(dāng)讀取b時(shí),那么b就會(huì)把讀取的動(dòng)作轉(zhuǎn)發(fā)到a上,這樣就讀取到了文件a。所以,當(dāng)你刪除文件a時(shí),文件b并不會(huì)被刪除,但是再讀取b時(shí),會(huì)提示無(wú)法打開文件。而,當(dāng)你刪除b時(shí),a是不會(huì)有任何影響的。

看樣子,似乎 hard link 比較安全,因?yàn)榧词鼓骋粋(gè) inode 被殺掉了,只要有任何一個(gè) inode 存在,那么該文件就不會(huì)不見!不過(guò),不幸的是,由于 Hard Link 的限制太多了,包括無(wú)法做目錄的 link ,所以在用途上面是比較受限的!反而是 Symbolic Link 的使用方向較廣!那么如何建立軟連接和硬連接呢?這就用到了ln 命令。

ln 語(yǔ)法: ln [-s] [來(lái)源文件] [目的文件]

ln 常用的選項(xiàng)就一個(gè)-s ,如果不加就是建立硬連接,加上就建立軟連接。

[image]

在建立硬連接前后,123目錄所占空間大小并沒有改變。

[image]

當(dāng)把源文件刪除后,空間仍舊沒有變化。說(shuō)明了刪除一個(gè)文件其實(shí)只是刪除了inode信息。

[image]

不能創(chuàng)建目錄的硬連接。

[image]

建立軟連接后,456目錄增加了4k

[image]

刪除源文件后會(huì)提示“沒有這個(gè)文件”的錯(cuò)誤。

[image]

目錄是可以軟連接的。

[image]

刪除軟連接對(duì)源文件沒有任何影響。

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

平利县| 长沙市| 侯马市| 丹阳市| 罗甸县| 博乐市| 扶风县| 西和县| 易门县| 湘潭市| 阿坝| 罗甸县| 化州市| 栾城县| 揭西县| 安平县| 巫山县| 油尖旺区| 察隅县| 威海市| 贡嘎县| 忻州市| 禹城市| 蕲春县| 昭觉县| 和顺县| 漳浦县| 马山县| 鹿邑县| 大竹县| 枝江市| 来宾市| 清丰县| 郸城县| 塔河县| 明溪县| 来安县| 页游| 兰州市| 博白县| 阜阳市|