在了解了linux文件管理背景知識(shí)之后, 我們可以學(xué)習(xí)一些命令來(lái)管理我們的文件。?
文件操作相關(guān)
有一些命令可以幫助我們”修剪”之前看到的文件樹(shù)。
$touch a.txt
如果a.txt不存在,生成一個(gè)新的空文檔a.txt。如果a.txt存在,那么只更改該文檔的時(shí)間信息。(這個(gè)命令實(shí)際上用得并不廣泛,但可以幫我們創(chuàng)建一個(gè)空文件來(lái)實(shí)驗(yàn)下面操作)
$ls?.
是list的簡(jiǎn)寫(xiě),列出當(dāng)前目錄下的所有文件名
$ls -l a.txt
列出文件的詳細(xì)信息
?
$cp a.txt b.txt?
cp是copy的簡(jiǎn)寫(xiě),用來(lái)復(fù)制文件。在工作目錄下,將a.txt復(fù)制到文件b.txt
$cp a.txt ..
將a.txt復(fù)制到父目錄的a.txt
?
$mv a.txt c.txt
mv是move的簡(jiǎn)寫(xiě),用來(lái)移動(dòng)文件。將a.txt移動(dòng)成為c.txt (相當(dāng)于重命名rename)
$mv c.txt /home/vamei
將c.txt移動(dòng)到/home/vamei目錄
?
$rm a.txt
rm是remove的縮寫(xiě),用于刪除文件。刪除a.txt
$rm -r /home/vamei
刪除從/home/vamei向下的整個(gè)子文件系統(tǒng)。-r表示recursive, 是指重復(fù)刪除的操作,/home/vamei文件夾為空,然后刪除/home/vamei文件夾本身。
(程序員總是對(duì)這個(gè)命令很感興趣,?? $rm -rf /?? 它會(huì)刪除整個(gè)文件樹(shù)。f的目的是告訴rm放心干,不用再確認(rèn)了…… 一般情況下,應(yīng)該沒(méi)有人會(huì)用這個(gè)命令。)
?
$mkdir /home/vamei/good
創(chuàng)建一個(gè)新的目錄
$rmdir /home/vamei/good
刪除一個(gè)空的目錄
?
文件權(quán)限相關(guān)
$chmod 755 a.txt
(你必須是文件a.txt的擁有者才能運(yùn)行此命令。或者以$sudo chmod 755 a.txt的方式,以超級(jí)用戶的身份運(yùn)行該命令。)
change mode 改變a.txt的讀、寫(xiě)以及執(zhí)行權(quán)限。還記得每個(gè)文件都有九位的讀寫(xiě)執(zhí)行權(quán)限(參看 linux文件管理背景知識(shí)),分為三組,分別對(duì)應(yīng)擁有者(owner),擁有組(owner group)中的用戶和所有其他用戶(other)。在這里,我們也有三個(gè)數(shù)字,755,對(duì)應(yīng)三個(gè)組。7被分配給擁有者,5被分配給擁有組,最后一個(gè)5分配給其它用戶。Linux規(guī)定: 4為有讀取的權(quán)利,2為有寫(xiě)入的權(quán)利,1為有執(zhí)行的權(quán)利。我們看到的7實(shí)際上是4 + 2 + 1,表示擁有者有讀、寫(xiě)、執(zhí)行三項(xiàng)權(quán)利。(想想5 意味著什么)
這時(shí),運(yùn)行$ls -l a.txt, 你應(yīng)該看到九位的權(quán)限變成了rwxr-xr-x。根據(jù)自己的需要,你可以用比如444, 744代替755,來(lái)讓文件有不同的權(quán)限。
?
$sudo chown root a.txt
change owner 改變文件的擁有者為root用戶。這個(gè)命令需要有超級(jí)用戶權(quán)限才能執(zhí)行,所以我們?cè)诿钪凹由蟬udo。
$sudo chgrp root a.txt
change group 改變文件的擁有組為root組
?
Linux文件名通配表達(dá)式
(wild card, 也叫filename pattern matching)
?
之前所講的命令,比如ls, mv, cp都可以接收多個(gè)參數(shù),比如:
$ls -l a.txt b.txt c.txt
就可以列出這三個(gè)文件的所有信息。
?
有時(shí)候,我們想列出工作目錄下所有的以.txt結(jié)尾的文件的信息,可以用下面的方式:
$ls -l *.txt
*.txt的寫(xiě)法就運(yùn)用了Linux通配表達(dá)式。它與正則表達(dá)式相類似,但語(yǔ)法有所不同。
?
Filename Pattern Matching ? ? ? 對(duì)應(yīng)含義
?
*?????????????????????????????? 任意多個(gè)任意字符
?
? ????????????????????????????? 任意一個(gè)字符
[kl]??????????????????????????? 字符k或者字符l
?
[0-4]?????????????????????????? 數(shù)字0到4字符中的一個(gè)
?
[b-e]?????????????????????????? b到e字符中的一個(gè)
?
[^mnp]????????????????????????? 一個(gè)字符,這個(gè)字符不是m,n,p
Linux會(huì)找到符合表達(dá)式的文件名,然后用這些文件名作為參數(shù)傳遞給命令。注意,當(dāng)使用rm的時(shí)候,要格外小心。下面兩個(gè)命令,只相差一個(gè)空格,但效果大為不同:
$rm * .txt
$rm *.txt
第一個(gè)命令會(huì)刪除當(dāng)前目錄下所有文件!
?
總結(jié)
touch, ls, mv, cp, rm, mkdir, rmdir
chmod, chown, chgrp
wild card