pwd命令用于顯示當(dāng)前的工作目錄。
成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元西市做網(wǎng)站,已為上家服務(wù),為西市各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
$ pwd [選項(xiàng)]
如果沒(méi)有指定選項(xiàng),則默認(rèn)為 -P ,也就是顯示絕對(duì)路徑。
cd命令用于切換工作路徑。
$ cd [目錄名稱]
常用的有返回上級(jí)目錄:
$ cd ..
返回上一次的目錄:
$ cd -
返回當(dāng)前用戶的home目錄:
$ cd ~ 或者 $ cd
ls命令用于查看目錄中有哪些文件。
ls [選項(xiàng)] [文件]
(1) $ ls -a
查看全部文件,包括隱藏文件,有些文件(如記錄歷史命令的.bash_history文件)是隱藏的,直接用ls不會(huì)顯示出來(lái),這時(shí)就需要加上 -a 參數(shù)。
(2) $ ls -d
僅看目錄本身,例如,輸入命令 $ ls -d /etc ,輸出結(jié)果為 /etc ,而不會(huì)顯示/etc目錄中的文件。
(3) $ ls -l
顯示文件的詳細(xì)信息,包括文件的類型權(quán)限、被引用次數(shù)、所屬用戶名、所屬組名、文件大小、最后一次修改時(shí)間、文件名。
如果我們要查看某個(gè)目錄本身的詳細(xì)信息,我們就可以用 -l 和 -d 這兩個(gè)參數(shù):
(4) $ ls -n
這個(gè)命令也是顯示文件的詳細(xì)信息,不過(guò)跟上一個(gè)不同的是,顯示的是用戶id和組id,而不是用戶名和組名。
處理目錄的常用命令
接下來(lái)我們就來(lái)看幾個(gè)常見(jiàn)的處理目錄的命令吧:
ls(英文全拼:list files): 列出目錄及文件名
cd(英文全拼:change directory):切換目錄
pwd(英文全拼:print work directory):顯示目前的目錄
mkdir(英文全拼:make directory):創(chuàng)建一個(gè)新的目錄
rmdir(英文全拼:remove directory):刪除一個(gè)空的目錄
cp(英文全拼:copy file): 復(fù)制文件或目錄
rm(英文全拼:remove): 刪除文件或目錄
mv(英文全拼:move file): 移動(dòng)文件與目錄,或修改文件與目錄的名稱
你可以使用 man [命令] 來(lái)查看各個(gè)命令的使用文檔,如 :man cp。
ls (列出目錄)
在Linux系統(tǒng)當(dāng)中, ls 命令可能是最常被運(yùn)行的。
語(yǔ)法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目錄名稱
[root@www ~]# ls [--color={never,auto,always}] 目錄名稱
[root@www ~]# ls [--full-time] 目錄名稱
選項(xiàng)與參數(shù):
-a :全部的文件,連同隱藏文件( 開(kāi)頭為 . 的文件) 一起列出來(lái)(常用)
-d :僅列出目錄本身,而不是列出目錄內(nèi)的文件數(shù)據(jù)(常用)
-l :長(zhǎng)數(shù)據(jù)串列出,包含文件的屬性與權(quán)限等等數(shù)據(jù);(常用)
將家目錄下的所有文件列出來(lái)(含屬性與隱藏檔)
[root@www ~]# ls -al ~
cd (切換目錄)
cd是Change Directory的縮寫(xiě),這是用來(lái)變換工作目錄的命令。
語(yǔ)法:
cd [相對(duì)路徑或絕對(duì)路徑]#使用 mkdir 命令創(chuàng)建 runoob 目錄
[root@www ~]# mkdir runoob
#使用絕對(duì)路徑切換到 runoob 目錄
[root@www ~]# cd /root/runoob/
#使用相對(duì)路徑切換到 runoob 目錄
[root@www ~]# cd ./runoob/
# 表示回到自己的家目錄,亦即是 /root 這個(gè)目錄
[root@www runoob]# cd ~
# 表示去到目前的上一級(jí)目錄,亦即是 /root 的上一級(jí)目錄的意思;
[root@www ~]# cd ..
接下來(lái)大家多操作幾次應(yīng)該就可以很好的理解 cd 命令的。
pwd (顯示目前所在的目錄)
pwd 是 Print Working Directory 的縮寫(xiě),也就是顯示目前所在目錄的命令。
[root@www ~]# pwd [-P]
選項(xiàng)與參數(shù):
-P :顯示出確實(shí)的路徑,而非使用連結(jié) (link) 路徑。
實(shí)例:?jiǎn)渭冿@示出目前的工作目錄:
[root@www ~]# pwd
/root ? == 顯示出目錄啦~
實(shí)例顯示出實(shí)際的工作目錄,而非連結(jié)檔本身的目錄名而已。
[root@www ~]# cd /var/mail ? ==注意,/var/mail是一個(gè)連結(jié)檔
[root@www mail]# pwd
/var/mail ? ? ? ? ==列出目前的工作目錄
[root@www mail]# pwd -P
/var/spool/mail ? ==怎么回事?有沒(méi)有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep ?4 17:54 /var/mail - spool/mail
# 看到這里應(yīng)該知道為啥了吧?因?yàn)?/var/mail 是連結(jié)檔,連結(jié)到 /var/spool/mail
# 所以,加上 pwd -P 的選項(xiàng)后,會(huì)不以連結(jié)檔的數(shù)據(jù)顯示,而是顯示正確的完整路徑??!
mkdir (創(chuàng)建新目錄)
如果想要?jiǎng)?chuàng)建新的目錄的話,那么就使用mkdir (make directory)吧。
語(yǔ)法:
mkdir [-mp] 目錄名稱
選項(xiàng)與參數(shù):
-m :配置文件的權(quán)限喔!直接配置,不需要看默認(rèn)權(quán)限 (umask) 的臉色~
-p :幫助你直接將所需要的目錄(包含上一級(jí)目錄)遞歸創(chuàng)建起來(lái)!
實(shí)例:請(qǐng)到/tmp底下嘗試創(chuàng)建數(shù)個(gè)新目錄看看:
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test ? ?==創(chuàng)建一名為 test 的新目錄
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory ? ? ? == 沒(méi)辦法直接創(chuàng)建此目錄啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4
加了這個(gè) -p 的選項(xiàng),可以自行幫你創(chuàng)建多層目錄!
實(shí)例:創(chuàng)建權(quán)限為 rwx--x--x 的目錄。
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x ?3 root ?root 4096 Jul 18 12:50 test
drwxr-xr-x ?3 root ?root 4096 Jul 18 12:53 test1
drwx--x--x ?2 root ?root 4096 Jul 18 12:54 test2
上面的權(quán)限部分,如果沒(méi)有加上 -m 來(lái)強(qiáng)制配置屬性,系統(tǒng)會(huì)使用默認(rèn)屬性。
如果我們使用 -m ,如上例我們給予 -m 711 來(lái)給予新的目錄 drwx--x--x 的權(quán)限。
rmdir (刪除空的目錄)
語(yǔ)法:
rmdir [-p] 目錄名稱
選項(xiàng)與參數(shù):
-p :連同上一級(jí)『空的』目錄也一起刪除
刪除 runoob 目錄
[root@www tmp]# rmdir runoob/
將 mkdir 實(shí)例中創(chuàng)建的目錄(/tmp 底下)刪除掉!
[root@www tmp]# ls -l ? ==看看有多少目錄存在?
drwxr-xr-x ?3 root ?root 4096 Jul 18 12:50 test
drwxr-xr-x ?3 root ?root 4096 Jul 18 12:53 test1
drwx--x--x ?2 root ?root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test ? ==可直接刪除掉,沒(méi)問(wèn)題
[root@www tmp]# rmdir test1 ?==因?yàn)樯杏袃?nèi)容,所以無(wú)法刪除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l ? ? ? ?==您看看,底下的輸出中test與test1不見(jiàn)了!
drwx--x--x ?2 root ?root 4096 Jul 18 12:54 test2
利用 -p 這個(gè)選項(xiàng),立刻就可以將 test1/test2/test3/test4 一次刪除。
不過(guò)要注意的是,這個(gè) rmdir 僅能刪除空的目錄,你可以使用 rm 命令來(lái)刪除非空目錄。
cp (復(fù)制文件或目錄)
cp 即拷貝文件和目錄。
語(yǔ)法:
[root@www ~]# cp [-adfilprsu] 來(lái)源檔(source) 目標(biāo)檔(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
選項(xiàng)與參數(shù):
-a:相當(dāng)於 -pdr 的意思,至於 pdr 請(qǐng)參考下列說(shuō)明;(常用)
-d:若來(lái)源檔為連結(jié)檔的屬性(link file),則復(fù)制連結(jié)檔屬性而非文件本身;
-f:為強(qiáng)制(force)的意思,若目標(biāo)文件已經(jīng)存在且無(wú)法開(kāi)啟,則移除后再嘗試一次;
-i:若目標(biāo)檔(destination)已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢問(wèn)動(dòng)作的進(jìn)行(常用)
-l:進(jìn)行硬式連結(jié)(hard link)的連結(jié)檔創(chuàng)建,而非復(fù)制文件本身;
-p:連同文件的屬性一起復(fù)制過(guò)去,而非使用默認(rèn)屬性(備份常用);
-r:遞歸持續(xù)復(fù)制,用於目錄的復(fù)制行為;(常用)
-s:復(fù)制成為符號(hào)連結(jié)檔 (symbolic link),亦即『捷徑』文件;
-u:若 destination 比 source 舊才升級(jí) destination !
用 root 身份,將 root 目錄下的 .bashrc 復(fù)制到 /tmp 下,并命名為 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n ?==n不覆蓋,y為覆蓋
rm (移除文件或目錄)
語(yǔ)法:
rm [-fir] 文件或目錄
選項(xiàng)與參數(shù):
-f :就是 force 的意思,忽略不存在的文件,不會(huì)出現(xiàn)警告信息;
-i :互動(dòng)模式,在刪除前會(huì)詢問(wèn)使用者是否動(dòng)作
-r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險(xiǎn)的選項(xiàng)!?。?/p>
將剛剛在 cp 的實(shí)例中創(chuàng)建的 bashrc 刪除掉!
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
如果加上 -i 的選項(xiàng)就會(huì)主動(dòng)詢問(wèn)喔,避免你刪除到錯(cuò)誤的檔名!
mv (移動(dòng)文件與目錄,或修改名稱)
語(yǔ)法:
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
選項(xiàng)與參數(shù):
-f :force 強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會(huì)詢問(wèn)而直接覆蓋;
-i :若目標(biāo)文件 (destination) 已經(jīng)存在時(shí),就會(huì)詢問(wèn)是否覆蓋!
-u :若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會(huì)升級(jí) (update)
復(fù)制一文件,創(chuàng)建一目錄,將文件移動(dòng)到目錄中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
將某個(gè)文件移動(dòng)到某個(gè)目錄去,就是這樣做!
將剛剛的目錄名稱更名為 mvtest2
[root@www tmp]# mv mvtest mvtest2
Linux 文件內(nèi)容查看
Linux系統(tǒng)中使用以下命令來(lái)查看文件的內(nèi)容:
cat ?由第一行開(kāi)始顯示文件內(nèi)容
tac ?從最后一行開(kāi)始顯示,可以看出 tac 是 cat 的倒著寫(xiě)!
nl ? 顯示的時(shí)候,順道輸出行號(hào)!
more 一頁(yè)一頁(yè)的顯示文件內(nèi)容
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁(yè)!
head 只看頭幾行
tail 只看尾巴幾行
你可以使用 man [命令]來(lái)查看各個(gè)命令的使用文檔,如 :man cp。
cat
由第一行開(kāi)始顯示文件內(nèi)容
語(yǔ)法:
cat [-AbEnTv]
選項(xiàng)與參數(shù):
-A :相當(dāng)於 -vET 的整合選項(xiàng),可列出一些特殊字符而不是空白而已;
-b :列出行號(hào),僅針對(duì)非空白行做行號(hào)顯示,空白行不標(biāo)行號(hào)!
-E :將結(jié)尾的斷行字節(jié) $ 顯示出來(lái);
-n :列印出行號(hào),連同空白行也會(huì)有行號(hào),與 -b 的選項(xiàng)不同;
-T :將 [tab] 按鍵以 ^I 顯示出來(lái);
-v :列出一些看不出來(lái)的特殊字符
檢看 /etc/issue 這個(gè)文件的內(nèi)容:
[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
tac
tac與cat命令剛好相反,文件內(nèi)容從最后一行開(kāi)始顯示,可以看出 tac 是 cat 的倒著寫(xiě)!如:
[root@www ~]# tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)
nl
顯示行號(hào)
語(yǔ)法:
nl [-bnw] 文件
選項(xiàng)與參數(shù):
-b :指定行號(hào)指定的方式,主要有兩種:
-b a :表示不論是否為空行,也同樣列出行號(hào)(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(hào)(默認(rèn)值);
-n :列出行號(hào)表示的方法,主要有三種:
-n ln :行號(hào)在熒幕的最左方顯示;
-n rn :行號(hào)在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號(hào)在自己欄位的最右方顯示,且加 0 ;
-w :行號(hào)欄位的占用的位數(shù)。
實(shí)例一:用 nl 列出 /etc/issue 的內(nèi)容
[root@www ~]# nl /etc/issue
1 ?CentOS release 6.4 (Final)
2 ?Kernel \r on an \m
more
一頁(yè)一頁(yè)翻動(dòng)
[root@www ~]# more /etc/man_db.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中間省略)....
--More--(28%) ?== 重點(diǎn)在這一行喔!你的光標(biāo)也會(huì)在這里等待你的命令
在 more 這個(gè)程序的運(yùn)行過(guò)程中,你有幾個(gè)按鍵可以按的:
空白鍵 (space):代表向下翻一頁(yè);
Enter ? ? ? ? :代表向下翻『一行』;
/字串 ? ? ? ? :代表在這個(gè)顯示的內(nèi)容當(dāng)中,向下搜尋『字串』這個(gè)關(guān)鍵字;
:f ? ? ? ? ? ?:立刻顯示出檔名以及目前顯示的行數(shù);
q ? ? ? ? ? ? :代表立刻離開(kāi) more ,不再顯示該文件內(nèi)容。
b 或 [ctrl]-b :代表往回翻頁(yè),不過(guò)這動(dòng)作只對(duì)文件有用,對(duì)管線無(wú)用。
less
一頁(yè)一頁(yè)翻動(dòng),以下實(shí)例輸出/etc/man.config文件的內(nèi)容:
[root@www ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中間省略)....
: ? == 這里可以等待你輸入命令!
less運(yùn)行時(shí)可以輸入的命令有:
空白鍵 ? ?:向下翻動(dòng)一頁(yè);
[pagedown]:向下翻動(dòng)一頁(yè);
[pageup] ?:向上翻動(dòng)一頁(yè);
/字串 ? ? :向下搜尋『字串』的功能;
?字串 ? ? :向上搜尋『字串』的功能;
n ? ? ? ? :重復(fù)前一個(gè)搜尋 (與 / 或 ? 有關(guān)!)
N ? ? ? ? :反向的重復(fù)前一個(gè)搜尋 (與 / 或 ? 有關(guān)!)
q ? ? ? ? :離開(kāi) less 這個(gè)程序;
head
取出文件前面幾行
語(yǔ)法:
head [-n number] 文件
選項(xiàng)與參數(shù):
-n :后面接數(shù)字,代表顯示幾行的意思
[root@www ~]# head /etc/man.config
默認(rèn)的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣:
[root@www ~]# head -n 20 /etc/man.config
tail
取出文件后面幾行
語(yǔ)法:
tail [-n number] 文件
選項(xiàng)與參數(shù):
-n :后面接數(shù)字,代表顯示幾行的意思
-f :表示持續(xù)偵測(cè)后面所接的檔名,要等到按下[ctrl]-c才會(huì)結(jié)束tail的偵測(cè)
[root@www ~]# tail /etc/man.config
# 默認(rèn)的情況中,顯示最后的十行!若要顯示最后的 20 行,就得要這樣:
[root@www ~]# tail -n 20 /etc/man.config
1. bin目錄
binary(二進(jìn)制的):許多“指令”對(duì)應(yīng)的可“執(zhí)行程序文件”目錄
2. sbin目錄
說(shuō)明:super binary 超級(jí)的 二進(jìn)制 許多“指令”對(duì)應(yīng)的可“執(zhí)行程序文件”目錄,該目錄文件對(duì)應(yīng)指令都是"root"用戶可以執(zhí)行的指令普通用戶不能使用該目錄里的命令:
普通用戶:用$開(kāi)頭
root用戶:用#開(kāi)頭
3. usr目錄
說(shuō)明:unxi system resource
unix system resource (unix系統(tǒng)資源文件目錄)
該目錄類似win系統(tǒng)的 C:/Program files 目錄
該目錄經(jīng)常用于安裝各種軟件
4. dev目錄
說(shuō)明:device 系統(tǒng)硬件設(shè)備目錄(linux系統(tǒng)所有的硬件都通過(guò)文件表示)
例如:/dev/cdrom是光驅(qū) /dev/sda 是第一塊scsi硬盤(pán)
5. home目錄
說(shuō)明:普通用戶的“家目錄”
系統(tǒng)每增加一個(gè)普通用戶的同時(shí),都會(huì)在該目錄為該目錄設(shè)置一個(gè)文件目錄代表該用戶的“家目錄”用戶后期使用系統(tǒng)的時(shí)候首先會(huì)首先進(jìn)入其目錄家目錄名字默認(rèn)與當(dāng)前用戶名字一致用戶對(duì)家目錄擁有絕對(duì)最高的權(quán)限
6. proc目錄
內(nèi)存映射目錄,該目錄可以查看系統(tǒng)的相關(guān)信息
7. var目錄
variable 可變的、易變的
該目錄存儲(chǔ)的文件經(jīng)常會(huì)發(fā)生變化(增加、修改、刪除)
經(jīng)常用于部署項(xiàng)目程序(php)文件
/var/www/shop
/var/www/book
8. boot目錄
說(shuō)明:系統(tǒng)啟動(dòng)核心目錄,用于儲(chǔ)存系統(tǒng)啟動(dòng)文件
9. etc目錄
系統(tǒng)主要配置文件目錄
例如:
/etc/passwd 用于存儲(chǔ)用戶信息的文件
/etc/group 用于存儲(chǔ)組別信息的文件
10. lib目錄
library:系統(tǒng)資源文件類庫(kù)目錄
11. selinux目錄
說(shuō)明:安全增強(qiáng)型的linux對(duì)系統(tǒng)形成保護(hù)
在安裝軟件時(shí)會(huì)有一定的影響
12. mnt目錄
說(shuō)明:存放臨時(shí)的映射文件系統(tǒng),我們常把軟驅(qū)和光驅(qū)掛裝在這里的floppy和cdrom子目錄下。
13. tmp目錄
說(shuō)明:存放臨時(shí)文件的目錄
1. 最常用的命令列表
下面列出十個(gè)在使用linux過(guò)程中使用頻率最高的命令。這里只作簡(jiǎn)單介紹,具體用法請(qǐng)參考后面內(nèi)容。
cat,顯示文件內(nèi)容。
cd,改變目錄路徑。
cp,復(fù)制文件。
find,查找文件。
grep,搜索、過(guò)濾信息。
ls,列出目錄信息。
more,分頁(yè)顯示。
rm,刪除文件或目錄。
vi,調(diào)用vi文本編輯器。
who,顯示登錄用戶信息。
2. chmod----改變一個(gè)或多個(gè)文件的存取模式(mode)
chmod [options] mode files
只能文件屬主或特權(quán)用戶才能使用該功能來(lái)改變文件存取模式。mode可以是數(shù)字形式或以who opcode permission形式表示。who是可選的,默認(rèn)是a(所有用戶)。只能選擇一個(gè)opcode(操作碼)??芍付ǘ鄠€(gè)mode,以逗號(hào)分開(kāi)。
options:
-c,--changes
只輸出被改變文件的信息
-f,--silent,--quiet
當(dāng)chmod不能改變文件模式時(shí),不通知文件的用戶
--help
輸出幫助信息。
-R,--recursive
可遞歸遍歷子目錄,把修改應(yīng)到目錄下所有文件和子目錄
--reference=filename
參照f(shuō)ilename的權(quán)限來(lái)設(shè)置權(quán)限
-v,--verbose
無(wú)論修改是否成功,輸出每個(gè)文件的信息
--version
輸出版本信息。
who
u
用戶
g
組
o
其它
a
所有用戶(默認(rèn))
opcode
+
增加權(quán)限
-
刪除權(quán)限
=
重新分配權(quán)限
permission
r
讀
w
寫(xiě)
x
執(zhí)行
s
設(shè)置用戶(或組)的ID號(hào)
t
設(shè)置粘著位(sticky bit),防止文件或目錄被非屬主刪除
u
用戶的當(dāng)前權(quán)限
g
組的當(dāng)前權(quán)限
o
其他用戶的當(dāng)前權(quán)限
作為選擇,我們多數(shù)用三位八進(jìn)制數(shù)字的形式來(lái)表示權(quán)限,第一位指定屬主的權(quán)限,第二位指定組權(quán)限,第三位指定其他用戶的權(quán)限,每位通過(guò)4(讀)、2(寫(xiě))、1(執(zhí)行)三種數(shù)值的和來(lái)確定權(quán)限。如6(4+2)代表有讀寫(xiě)權(quán),7(4+2+1)有讀、寫(xiě)和執(zhí)行的權(quán)限。
還可設(shè)置第四位,它位于三位權(quán)限序列的前面,第四位數(shù)字取值是4,2,1,代表意思如下:
4,執(zhí)行時(shí)設(shè)置用戶ID,用于授權(quán)給基于文件屬主的進(jìn)程,而不是給創(chuàng)建此進(jìn)程的用戶。
2,執(zhí)行時(shí)設(shè)置用戶組ID,用于授權(quán)給基于文件所在組的進(jìn)程,而不是基于創(chuàng)建此進(jìn)程的用戶。
1,設(shè)置粘著位。
實(shí)例:
$ chmod u+x file 給file的屬主增加執(zhí)行權(quán)限
$ chmod 751 file 給file的屬主分配讀、寫(xiě)、執(zhí)行(7)的權(quán)限,給file的所在組分配讀、執(zhí)行(5)的權(quán)限,給其他用戶分配執(zhí)行(1)的權(quán)限
$ chmod u=rwx,g=rx,o=x file 上例的另一種形式
$ chmod =r file 為所有用戶分配讀權(quán)限
$ chmod 444 file 同上例
$ chmod a-wx,a+r 同上例
$ chmod -R u+r directory 遞歸地給directory目錄下所有文件和子目錄的屬主分配讀的權(quán)限
$ chmod 4755 設(shè)置用ID,給屬主分配讀、寫(xiě)和執(zhí)行權(quán)限,給組和其他用戶分配讀、執(zhí)行的權(quán)限。
3. chgrp----修改文件或目錄的所屬組
chgrp [options] newgroup files/directorys
組名可以用組的ID號(hào),也可用/etc/group中的組名。只有文件的屬主或特權(quán)用戶(root)才可改變它的組。
options:
-c,--changes
只輸出被改變文件的信息
-f,--silent,--quiet
當(dāng)不能改變文件組屬性時(shí),不通知文件的用戶
--help
輸出幫助信息。
-R,--recursive
可遞歸遍歷子目錄,把修改應(yīng)到目錄下所有文件和子目錄
--reference=filename
參照f(shuō)ilename的組信息來(lái)設(shè)置當(dāng)前文件的組
-v,--verbose
輸出詳細(xì)信息
--version
輸出版本信息。
實(shí)例:
$ chgrp root test 把test的所屬組更改root組
$ chgrp -R mysql test 遞歸地把test目錄及該目錄下所有文件和子目錄的組屬性設(shè)置成mysql
$ chgrp root * 把當(dāng)前目錄中所有文件的組屬性設(shè)置成root
4. chown----設(shè)置一個(gè)或多個(gè)文件或目錄的屬主身份
chown [options] newowner files/directorys
新的屬主可以是用戶的ID號(hào),也可以是/etc/passwd里的登錄名。chown也可接受這樣的形式:newowner:newgroup或newowner.newgroup。同時(shí)改變所屬組的屬性。如果句點(diǎn)和冒號(hào)后沒(méi)有組名,則組改變?yōu)樾聦僦鞯慕M。只有文件或目錄的當(dāng)前屬主才有權(quán)改變它的屬性。
options:
-c,--changes
只輸出被改變文件的信息
--dereference
跟蹤符號(hào)鏈接
-h,--no-dereference
改變每一個(gè)符號(hào)鏈的屬主身份,而不是被引用文件的屬主身份
-f,--silent,--quiet
當(dāng)不能改變文件屬主屬性時(shí),不通知文件的用戶
--help
輸出幫助信息。
-R,--recursive
可遞歸遍歷子目錄,把修改應(yīng)到目錄下所有文件和子目錄
--reference=filename
把屬主改變成filename文件的屬主
-v,--verbose
輸出詳細(xì)信息
--version
輸出版本信息。
實(shí)例:
$ chown root test 把test文件的屬主改進(jìn)root
$ chown -R root test_directory 遞歸地把test_directory目錄下的所有文件屬主改成root
$ chown --dereference root test_link 把test_link鏈接的原文件屬主改成root,鏈接文件屬主不變
$ chown --no-dereference root test_link 把test_link的鏈接文件屬主改成root,原文件屬主不變
5. date----顯示、修改系統(tǒng)時(shí)間
date [options][+format][date]
$ date -s 06/09/2004 修改日期(按月日年格式)
$ date -s 13:56:00 修改時(shí)間(按時(shí)分秒格式)
$ date -r test 顯示test文件最后一次的修改時(shí)間
$ date +'%Y-%m-%d' 以yyyy-mm-dd格式顯示日期,其它格式請(qǐng)參考幫助
$ clock -r 查詢BIOS時(shí)間
$ clock -w 把修改后的時(shí)間寫(xiě)回BIOS
6. df-----顯示已安裝文件系統(tǒng)的磁盤(pán)容量狀態(tài)
df [options][name]
$ df -h 以友好的格式輸出所有已安裝文件系統(tǒng)的磁盤(pán)容量狀態(tài)
$ df -m /home 以M為單位輸出home目錄的磁盤(pán)容量狀態(tài)
$ df -k 以K為單位輸出所有已安裝文件系統(tǒng)的磁盤(pán)容量狀態(tài)
$ df -i 報(bào)告空閑的、用過(guò)的或部份用過(guò)的(百份比)索引節(jié)點(diǎn)
$ df -t ext3 僅顯示文件類型為ext3的文件系統(tǒng)的磁盤(pán)狀態(tài)
$ df -x ext3 僅顯示文件類型不為ext3的文件系統(tǒng)的磁盤(pán)狀態(tài)
$ df -T 除顯示文件系統(tǒng)磁盤(pán)容量大小外還顯示文件系統(tǒng)類型
$ df -l 僅顯示本地文件系統(tǒng)。
7. fdisk----分區(qū)表查詢工具
fdisk [options][driver]
$ fdisk -l 列出所有分區(qū)信息
8. hdparm----硬盤(pán)管理
hdparm [options][driver]
$ hdparm -d /dev/hda 顯示硬盤(pán)的DMA模式是不打開(kāi),1代表on
$ hdparm -tT /dev/hda 測(cè)試硬盤(pán)的寫(xiě)性能
$ hdparm -d1 /dev/hda 開(kāi)啟dma功能
$ hdparm -d1 -X68 -c3 -m16 /dev/hda
選項(xiàng)說(shuō)明:
-c3:把硬盤(pán)的IO模式從16位轉(zhuǎn)成32位。
-m16:改變硬盤(pán)的多路扇區(qū)的讀功能,-m16使硬盤(pán)在一次I/O中斷中讀入16個(gè)扇區(qū)的數(shù)據(jù)。
-d1:打開(kāi)DMA模式。
-X68:支持ATA66的數(shù)據(jù)傳輸模式。下面是其它模式的設(shè)置對(duì)照
ATA33.......參數(shù)是-X66
ATA66.......參數(shù)是-X68
ATA100......參數(shù)是-X69
$ hdparm -k1 /dev/hda 保存設(shè)置
9. ln-----為文件建立別名
ln [options] sourcename [destname]
ln [options] sourcenames destdirectory
$ ln -s file1 file2 建立一個(gè)到file1的符號(hào)鏈接file2,刪除file2不會(huì)影響file1
$ ln -s -f file1 file2 建立一個(gè)到file1的符號(hào)鏈接file2,并不提示是否重寫(xiě)
10. shutdown-----終止所有進(jìn)程序,關(guān)閉計(jì)算機(jī)。
shutdown [options] when [message]
用when可以是指定的關(guān)機(jī)時(shí)間(以hh:mm格式)、關(guān)機(jī)前要等待的時(shí)間(以+m格式)、或者now。message指定一條廣播消息通知所有用戶退出系統(tǒng)。showdown給所有進(jìn)程發(fā)送SIGTERM信號(hào),并調(diào)用init 1執(zhí)行實(shí)際的關(guān)機(jī)動(dòng)作。
$ shutdown -c 取消正在進(jìn)行的關(guān)閉操作
$ shutdown -f 快速重新啟動(dòng),在重新啟動(dòng)時(shí)禁止對(duì)fsck的常規(guī)調(diào)用
$ shutdown -h 當(dāng)關(guān)閉完成時(shí)停止系統(tǒng)
$ shutdown -k 輸出警告信息,但禁止實(shí)際的關(guān)閉
$ shutdown -n 不調(diào)用init就執(zhí)行關(guān)閉
$ shutdown -r 當(dāng)關(guān)閉完成時(shí)重新啟動(dòng)系統(tǒng)
$ shutdown -t 5 在殺死進(jìn)程和改變運(yùn)行級(jí)別之間確保延時(shí)5秒
11. sleep-----執(zhí)行另一個(gè)命令之前等待的時(shí)間
sleep amount [units]
units默認(rèn)為秒(s),m表示分鐘,h表示小時(shí),d表示天。
12. swapon/swapoff-----啟動(dòng)和關(guān)閉交換分區(qū)
swapon/swapoff [options] device
$ swapon -s 顯示交換分區(qū)信息
$ swapon -a 激活所有在/etc/fstab中有sw標(biāo)記的分區(qū)
$ swapon -p 1 設(shè)置交換分區(qū)優(yōu)先級(jí)為1
13. tune2fs-----調(diào)整Linux第二擴(kuò)展文件系統(tǒng)的參數(shù)
tune2fs [options] device
$ tune2fs -l /dev/hda1 顯示hda1分區(qū)的超級(jí)塊內(nèi)容
$ tune2fs -c 100 /dev/hda1 設(shè)置hda1分區(qū)每mount100次就進(jìn)行磁盤(pán)檢查
14. uniq----過(guò)濾、統(tǒng)計(jì)、刪除重復(fù)行
uniq [options][file1 [files]]
$ uniq -c file file中的重復(fù)行輸出一次,并在每行前顯示重復(fù)次數(shù)
$ uniq -d file file中的重復(fù)行輸出一次,但不輸出唯一的行
$ uniq -u file 只輸出file中的唯一行
$ uniq file1 file2 把file1中的重復(fù)的相鄰行刪除,并把每行的一個(gè)拷貝送到file2
15. wc-----輸出每個(gè)文件中的字符數(shù)、單詞數(shù)及行數(shù)。
wc [options][files]
$ wc -l file 輸出file中的行數(shù)
$ wc -w file 輸出file中的單詞數(shù)
$ wc -c file 輸出file中的字符數(shù)
模式:
當(dāng)打開(kāi)終端,第一行所見(jiàn)的就叫命令行提示符。我的是這樣的:
命令行提示符,顧名思義就是提示在其后面輸入命令。在你輸入新的一行命令前,這個(gè)命令提示符都會(huì)出現(xiàn)。分別解析一下上邊代表什么意思:
oscar 這是當(dāng)前用戶的名字。Linux是一個(gè)多用戶的操作系統(tǒng),Windows也可以。不過(guò)Linux的多用戶管理更方便。我們一般建議每個(gè)使用Linux系統(tǒng)的用戶都創(chuàng)建一個(gè)屬于自己的賬戶,便于隱私管理。
@ 這個(gè)符號(hào)我們應(yīng)該不陌生,我們的電子郵件一般都是 name@domain.com 這樣的不是嗎。這個(gè)@就表示英語(yǔ)里的at,是“在...里面,落戶在...的,在其中”的意思。@前面是用戶名,后面是所在的域。
oscar-laptop 這是當(dāng)前電腦/操作系統(tǒng)的名字。上面說(shuō)了在@后面的是一個(gè)域,所以 oscar@oscar-laptop 就表示oscar-laptop這臺(tái)電腦的oscar這個(gè)用戶。oscar-laptop這個(gè)名稱在安裝此Linux系統(tǒng)時(shí)可以任意指定。
: 這是分隔符,沒(méi)有什么特別的涵義。
~ 這是當(dāng)前所在目錄的名字,會(huì)隨著用戶進(jìn)入不同目錄而改變。~表示當(dāng)前用戶的家目錄,有點(diǎn)類似Windows系統(tǒng)的“我的文檔”這個(gè)目錄。
$ 指示你所具有的權(quán)限的字符。在Linux系統(tǒng)中有兩種可能:
因此, oscar@oscar-laptop:~$ 的意思就是:
你目前是以oscar這個(gè)用戶登錄;你的電腦名稱為oscar-laptop;你目前位于 ~ 目錄下,就是你的用戶家目錄。你是普通用戶,擁有有限的權(quán)限。
參數(shù)里可以包含多個(gè)參數(shù),由空格隔開(kāi),也可以包含數(shù)字,字母,等等??梢哉f(shuō),參數(shù)沒(méi)有固定的格式,但是一般來(lái)說(shuō)還是遵循一定的規(guī)范的。
如果我們要一次加好幾個(gè)短參數(shù),可以用空格隔開(kāi),例如:
多個(gè)短參數(shù)也可以合并在一起,例如上面的命令等價(jià)于:
請(qǐng)注意:參數(shù)的字母的大小寫(xiě)是有區(qū)別的,大寫(xiě)的T和小寫(xiě)的t通常表示不同意思。
如果有多個(gè)長(zhǎng)參數(shù),是不能像多個(gè)短參數(shù)那樣合并寫(xiě)的。而是只能以空格隔開(kāi),例如:
當(dāng)然我們也可以組合使用短參數(shù)和長(zhǎng)參數(shù),例如:
有時(shí)候,同一個(gè)意義的參數(shù)有短參數(shù)和長(zhǎng)參數(shù)兩種形式,效果是一樣的,可以任選哪一種。
有一些參數(shù)你還需要給它賦一個(gè)值才行。而且短參數(shù)和長(zhǎng)參數(shù)的賦值的方式不盡相同。
例如,短參數(shù)賦值,通常是這樣的:
表示把10賦值給p參數(shù)。
如果是長(zhǎng)參數(shù),則一般是這樣賦值:
長(zhǎng)參數(shù)的方式更加容易理解,但是不如短參數(shù)那么簡(jiǎn)潔。
正如我們說(shuō)過(guò)的,參數(shù)的形式?jīng)]有絕對(duì)的準(zhǔn)則。我們上面給出的規(guī)則是一般的,有些命令的參數(shù)格式可能是我們沒(méi)怎么見(jiàn)過(guò)的。
有些參數(shù)就不一樣,而且取決于命令。例如對(duì)于 ls 這個(gè)命令,假如后面帶了一個(gè)參數(shù),這個(gè)參數(shù)是一個(gè)目錄的路徑名的話,那么就會(huì)列出此目錄下的文件。
兩種類型的文件
簡(jiǎn)單起見(jiàn),我們把Linux下的文件分為兩大類:
在一個(gè)文件系統(tǒng)中,我們總有一個(gè)被稱為根目錄的東西,這個(gè)根目錄里包含了所有其他目錄和文件。Linux中有且只有一個(gè)根目錄,就是
是的,就是用一個(gè)斜杠表示。沒(méi)有比根目錄再高一階的目錄了,因?yàn)闆](méi)有目錄包含根目錄,根目錄就是Linux最頂層的目錄。
Linux系統(tǒng)安裝后,包含了很多的文件和目錄(雖然其實(shí)都是文件),我們很容易迷失在“茫茫文?!敝?。
當(dāng)然我們不可能一下子列出Linux中的所有文件,那不現(xiàn)實(shí)。但是我們可以向你展示如何在Linux的目錄樹(shù)中來(lái)回穿梭,你可以知道此刻你位于哪個(gè)目錄下。就好比能看懂Linux這個(gè)很大的“地圖”。
pwd 是英語(yǔ)Print Working Directory的縮寫(xiě),表示“打印當(dāng)前工作目錄”。
which 命令:獲取命令的可執(zhí)行文件的位置,which命令用于顯示一個(gè)命令的對(duì)應(yīng)的可執(zhí)行程序的位置??赡苈?tīng)起來(lái)有點(diǎn)拗口。
在Linux下,每一條命令其實(shí)對(duì)應(yīng)了一個(gè)可執(zhí)行程序。我們?cè)诮K端中輸入命令,再按回車(chē)的時(shí)候,其實(shí)就是執(zhí)行了對(duì)應(yīng)的那個(gè)程序。比如說(shuō),pwd命令對(duì)應(yīng)的pwd程序就是存在于Linux中的。
which命令接受一個(gè)參數(shù),也就是你想要知道其可執(zhí)行程序位于哪里的那個(gè)命令。
我們來(lái)測(cè)試一下,就拿pwd命令來(lái)測(cè)試好了:
得到:
因此,pwd命令對(duì)應(yīng)的pwd這個(gè)可執(zhí)行程序位于/bin目錄中。
我們也可以注意到Linux中的可執(zhí)行程序和Windows中不太一樣,在Windows中可執(zhí)行程序一般以.exe結(jié)尾,而Linux中一般是沒(méi)有后綴名的。
Linux中的可執(zhí)行程序也不是都位于相同目錄的。我們可以來(lái)測(cè)試一下which命令本身對(duì)應(yīng)的可執(zhí)行程序位于哪里:
我們可以看到,which命令對(duì)應(yīng)的可執(zhí)行程序which并不位于/bin中,而是在/usr/bin中。
Ubuntu的終端默認(rèn)是有顏色標(biāo)注的,一般來(lái)說(shuō):
如果在你的終端里沒(méi)有標(biāo)明顏色,那么你可以加上參數(shù) --color=auto 來(lái)開(kāi)啟顏色標(biāo)注。如下:
如果你不需要顏色標(biāo)注,那么可以用 --color=none 來(lái)關(guān)閉顏色標(biāo)注。如下:
當(dāng)然,為了避免每次都輸入這么一串額外的參數(shù),其實(shí)我們可以在一個(gè)配置文件里修改,使得永久顯示顏色或不顯示顏色。
在Linux,以點(diǎn)( . )開(kāi)頭的文件是隱藏文件,不過(guò)這里不包括開(kāi)頭的兩個(gè) . 和 .. ,這兩個(gè)的含義如下:
- . (一個(gè)點(diǎn))表示當(dāng)前目錄。在當(dāng)前情況下,就是 /home/oscar 。
- .. (兩個(gè)點(diǎn))表示上一級(jí)目錄。因?yàn)楫?dāng)前目錄是/home/oscar,所以上一級(jí)目錄就是 /home 。
我們有一個(gè)大寫(xiě)的參數(shù) -A,它的作用和小寫(xiě)的-a幾乎一樣,唯一不同就是-A不列出 . 和 .. 這兩個(gè)文件。
-l 這個(gè)參數(shù)算是ls命令最常用的了。加上-l參數(shù)使得ls命令列出一個(gè)顯示文件和目錄的詳細(xì)信息的列表。
當(dāng)我們僅用ls -l時(shí),列出的文件詳細(xì)信息中,文件的大小是以字節(jié)為單位的。有時(shí)這不是太直觀。我們可以再加一個(gè)參數(shù)-h,h是humain readable的縮寫(xiě),表示“適合人類閱讀的”。所以我們的命令變成了:
t是time的縮寫(xiě)。
du命令也是很有用的,因?yàn)樗梢宰屛覀冎牢募湍夸浰嫉目臻g大小。
雖然ls -l命令也可以顯示文件和目錄的大小,但是du命令統(tǒng)計(jì)的才是真正的文件大小。du命令會(huì)深入遍歷每個(gè)目錄的子目錄,把所有文件的大小都做一個(gè)統(tǒng)計(jì)。
du是英語(yǔ)disk usage的縮寫(xiě),表示“磁盤(pán)使用/占用”。
我們的du命令也可以使用參數(shù)。
cat命令和less命令:顯示文件內(nèi)容,這兩個(gè)命令只能顯示文件內(nèi)容,并不能對(duì)文件內(nèi)容進(jìn)行修改。
一次性顯示文件的所有內(nèi)容,如果你想要在顯示的文件內(nèi)容上加上行號(hào),那么你可以加上 -n 這個(gè)參數(shù)。
分頁(yè)顯示文件內(nèi)容
head命令和tail命令:顯示文件的開(kāi)頭和結(jié)尾。
顯示文件開(kāi)頭,默認(rèn)情況下,head會(huì)顯示文件的頭10行。我們也可以指定顯示的行數(shù),用 -n 這個(gè)參數(shù):
就會(huì)顯示文件的頭5行。
顯示文件結(jié)尾。默認(rèn)情況下,tail會(huì)顯示文件的尾10行。
我們也可以指定顯示的行數(shù),用 -n 這個(gè)參數(shù):
就會(huì)顯示文件的尾5行。
tail命令還可以配合 -f 參數(shù)來(lái)實(shí)時(shí)追蹤文件的更新:
這樣,就會(huì)檢查文件是否有追加內(nèi)容,如果有,就顯示新增內(nèi)容。
默認(rèn)地,tail -f會(huì)每過(guò)1秒檢查一下文件是否有新內(nèi)容。你也可以指定間隔檢查的秒數(shù),用 -s 參數(shù):
可以用快捷鍵 Ctrl + c 來(lái)終止tail -f 命令。
touch命令和mkdir命令:創(chuàng)建文件和目錄
創(chuàng)建一個(gè)空白文件。事實(shí)上,Linux沒(méi)有一個(gè)命令是專門(mén)用來(lái)創(chuàng)建一個(gè)空白文件的。touch命令其實(shí)一開(kāi)始的設(shè)計(jì)初衷是修改文件的時(shí)間戳,就是可以修改文件的創(chuàng)建時(shí)間或修改時(shí)間,讓電腦以為文件是在那個(gè)時(shí)候被修改或創(chuàng)建的。但是touch命令如果后面跟著的文件名是不存在的,那么它就會(huì)新建一個(gè)。
事實(shí)上,我們可以用touch命令同時(shí)創(chuàng)建多個(gè)文件:
如果我所要?jiǎng)?chuàng)建的文件的名字里有空格怎么辦呢?
很簡(jiǎn)單,加上雙引號(hào):
創(chuàng)建一個(gè)目錄。
mkdir也可以同時(shí)創(chuàng)建好幾個(gè)目錄:
如果我所要?jiǎng)?chuàng)建的目錄的名字里有空格怎么辦呢?
很簡(jiǎn)單,加上雙引號(hào):
我們還可以用 -p 參數(shù)來(lái)遞歸創(chuàng)建目錄結(jié)構(gòu)。
比如:
cp命令和mv命令:拷貝文件和移動(dòng)文件
拷貝文件或目錄
cp是英語(yǔ)copy的縮寫(xiě),表示“拷貝”。所以,顧名思義,此命令用于拷貝。cp命令不僅可以拷貝單個(gè)文件,還可以拷貝多個(gè)文件,也可以拷貝目錄。
復(fù)制文件到另一個(gè)目錄只需要把cp命令的第二個(gè)參數(shù)換成目錄名。
拷貝目錄
要拷貝目錄,只要在cp命令之后加上-R參數(shù)(注意是大寫(xiě)的R)??截惖臅r(shí)候,目錄中的所有內(nèi)容(子目錄和文件)都會(huì)被拷貝。
使用通配符*
*號(hào)(星號(hào))是很常用的正則表達(dá)式的符號(hào),被稱為“通配符”,
所以如果我們用如下命令:
那么就會(huì)把當(dāng)前目錄下所有txt文件拷貝到folder這個(gè)子目錄當(dāng)中。
又如:
那么就會(huì)把當(dāng)前目錄下凡是以ha開(kāi)頭的文件都拷貝到folder目錄中。
移動(dòng)文件
mv是英語(yǔ)move的縮寫(xiě),表示“移動(dòng)”。mv命令有兩個(gè)功能:
用mv命令來(lái)移動(dòng)目錄很簡(jiǎn)單,不需要額外的參數(shù),就跟移動(dòng)文件一樣:
當(dāng)然,我們也可以使用通配符。
除了移動(dòng)文件,mv命令還可以用于重命名文件。
事實(shí)上,Linux中沒(méi)有一個(gè)專門(mén)的命令用于重命名文件。之所以mv命令可以重命名文件,其實(shí)還是歸因于它的機(jī)制:移動(dòng)文件。經(jīng)過(guò)mv移動(dòng)之后,原始文件變成了新的名字的文件,文件內(nèi)容是不變的,這不就相當(dāng)于重命名了嗎?
以上命令會(huì)將new_file重命名為renamed_file。
刪除文件和目錄
rm命令可以刪除一個(gè)文件,多個(gè)文件,目錄,甚至你的整個(gè)Linux系統(tǒng)(如果你愿意的話)。
以上命令刪除當(dāng)前目錄下的new_file_copy這個(gè)文件。
我們也可以同時(shí)刪除多個(gè)文件,只要用空格隔開(kāi)每個(gè)文件即可。例如:
保險(xiǎn)起見(jiàn),用rm命令刪除文件時(shí),可以加上 -i 參數(shù),這樣對(duì)于每一個(gè)要?jiǎng)h除的文件,終端都會(huì)詢問(wèn)我們是否確定刪除。i是英語(yǔ)inform的縮寫(xiě),表示“告知,通知”。
有兩種回答:
y:是英語(yǔ)yes的縮寫(xiě),表示“是”。那么回車(chē)確認(rèn)后,文件就刪除了。
n:是英語(yǔ)no的縮寫(xiě),表示“否”。那么回車(chē)確認(rèn)后,文件不會(huì)刪除。
如果在rm命令后加上-f參數(shù),那么終端不會(huì)詢問(wèn)用戶是否確定刪除文件,不論如何,文件會(huì)立刻被強(qiáng)制刪除。
f是英語(yǔ)force的縮寫(xiě)。
以上命令會(huì)強(qiáng)制刪除file文件。
r是英語(yǔ)recursive的縮寫(xiě),表示“遞歸的”。所以使用-r參數(shù),可以使rm命令刪除目錄,并且遞歸刪除其包含的子目錄和文件。
這個(gè)命令也挺危險(xiǎn)的,用得不好可能你的子目錄和文件都沒(méi)了。
以上命令會(huì)刪除one這個(gè)目錄,包括其子目錄和文件。
其實(shí),也存在一個(gè)命令
看著和 rm -r 挺像的。但是這個(gè)命令有個(gè)局限性:只能刪除空的目錄。
創(chuàng)建鏈接
事實(shí)上,Linux下有兩種鏈接類型:
為了區(qū)分這兩種鏈接類型的不同,我們首先來(lái)談一談如Linux這樣的操作系統(tǒng)中文件在硬盤(pán)上的存放。
文件在硬盤(pán)上存儲(chǔ)時(shí),大致來(lái)說(shuō)(請(qǐng)注意我用了“大致來(lái)說(shuō)”),每個(gè)文件有兩部分:
文件名的列表是儲(chǔ)存在硬盤(pán)的其他地方的,和文件內(nèi)容分開(kāi)存放,這樣方便Linux管理。
注意:為什么我上面要用“大致說(shuō)來(lái)”呢?因?yàn)榇颂幬覀兒?jiǎn)化了描述,其實(shí)每個(gè)文件有三部分:
我們這里簡(jiǎn)化地將文件分為兩部分:文件名和文件內(nèi)容。因?yàn)槲覀儾幌氚咽虑閺?fù)雜化,我們想要理解兩種鏈接類型的區(qū)別,暫時(shí)只要知道這些就夠了。
每個(gè)文件的文件內(nèi)容被分配到一個(gè)標(biāo)示號(hào)碼,就是inode。因此每個(gè)文件名都綁定到它的文件內(nèi)容(用inode標(biāo)識(shí))。原理如下圖:
下面我們學(xué)習(xí)如何創(chuàng)建硬鏈接和軟連接。
比之軟鏈接,硬鏈接的使用幾率小很多。但是我們還是要學(xué)習(xí)一下,畢竟可能會(huì)用到。
硬鏈接的原理:使鏈接的兩個(gè)文件共享同樣的文件內(nèi)容,也就是同樣的inode。
所以一旦文件1和文件2之間有了硬鏈接,那么你修改文件1或文件2,其實(shí)修改的是相同的一塊內(nèi)容。只不過(guò)我們可以用兩個(gè)文件名來(lái)取到文件內(nèi)容。
硬鏈接有一個(gè)缺陷:只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的硬鏈接。但是軟鏈接可以指向文件或目錄。當(dāng)然了,事實(shí)上,通過(guò)一些參數(shù)的修改,也可以創(chuàng)建指向目錄的硬鏈接,但是比較復(fù)雜,這里不再詳述。所以對(duì)于目錄的鏈接,我們一般都是用軟鏈接。
硬鏈接原理圖:
要?jiǎng)?chuàng)建硬鏈接,直接用ln命令,不加任何參數(shù):
我們可以用ls -i命令查看一下(-i參數(shù)可以顯示文件的inode)。對(duì)于硬鏈接來(lái)說(shuō),刪除任意一方的文件,共同指向的文件內(nèi)容并不會(huì)從硬盤(pán)上被刪除。
我們用ls -l命令查看文件信息的時(shí)候,第二列的那個(gè)2,其實(shí)是表示擁有相同inode號(hào)的文件數(shù)。不難理解,因?yàn)樗鼈冎赶蛳嗤奈募?nèi)容,所以共享一個(gè)inode。
這個(gè)第二列的數(shù)字,一般來(lái)說(shuō)對(duì)于普通文件,都是1,因?yàn)椴煌募node不同嘛。對(duì)于目錄來(lái)說(shuō),這第二列的數(shù)字標(biāo)明目錄內(nèi)所含文件數(shù)目。
其實(shí),軟鏈接才是真正像我們?cè)赪indows下的快捷方式的,其原理很相似。
創(chuàng)建硬鏈接是ln不帶任何參數(shù),但是要?jiǎng)?chuàng)建軟鏈接需要加上-s參數(shù)。s是symbolic(符號(hào)的)的縮寫(xiě)。
file2指向的不再是file1的文件內(nèi)容(和硬鏈接不同),而是指向file1的文件名。
軟鏈接原理圖:
用ls -l命令查看一下,會(huì)發(fā)現(xiàn)形式和之前的硬鏈接不一樣噢,file2的信息是這樣的: file2-file1,表示file2指向file1。
而且file2前面的權(quán)限那里的第一個(gè)字母變成了l,表示link(鏈接)。之前硬鏈接的時(shí)候是沒(méi)有l(wèi)的,硬鏈接外表看起來(lái)就和普通文件類似。
我們用ls -l命令查看文件信息的時(shí)候,第二列的那個(gè)1,表示擁有相同inode號(hào)的文件數(shù)。不難理解,因?yàn)閒ile2指向file1,它們并沒(méi)有指向同一塊文件內(nèi)容,所以它們的inode號(hào)不相同。
軟鏈接的特點(diǎn):