在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Linux 文件與目錄管理
初步進(jìn)入 linux 世界
Linux 系統(tǒng)的遠(yuǎn)程登錄
配置 Tomcat
配置 samba 服務(wù)器
LNMP 環(huán)境搭建
配置 FTP 服務(wù)
linux 系統(tǒng)用戶以及用戶組管理
正則表達(dá)式
LAMP環(huán)境搭建
安裝 RPM 包或者安裝源碼包
NFS 服務(wù)配置
文檔的壓縮與打包
Linux 操作系統(tǒng)的安裝
配置 squid 服務(wù)
Linux 文件與目錄管理
Linux 磁盤管理
學(xué)會使用簡單的 MySQL 操作
關(guān)于 Linux 的歷史
學(xué)習(xí) shell 腳本之前的基礎(chǔ)知識
圖形界面還是命令窗口
文本編輯工具 vim
shell 腳本
使用 Nagios 搭建監(jiān)控服務(wù)器
linux 系統(tǒng)日常管理

Linux 文件與目錄管理

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ì)介紹。

環(huán)境變量 PATH

上邊提到了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)了文件 111222, 其寫入作用的就是這個大于號”>” 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”鍵向上移動在使用moreless查看某個文件時,你可以按一下”/” 鍵,然后輸入一個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)建一個文件同時讓user0user1來查看怎么辦呢?

這時所屬組就派上用場了即,創(chuàng)建一個群組users,讓user0user1同屬于users組,然后建立一個文件test2,且其所屬組為users,那么user0user1都可以訪問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" />

linux 文件屬性

上例中,用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)限

更改文件的權(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)限均開放,即777drwxrwxrwx

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è)情況下,rootumask022,而一般使用者則為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)前目錄生效而且會對目錄下的文件同樣生效

在 linux 下搜索一個文件

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 timemtime 是在寫入文件時隨文件內(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)容還會介紹文件類型的