從這一章開(kāi)始,阿銘介紹的命令會(huì)越來(lái)越多,希望你能夠反復(fù)練習(xí)每一個(gè)命令的每一個(gè)選項(xiàng)。在Windows下,新建、復(fù)制、刪除文件或者文件夾都非常簡(jiǎn)單,而Linux需要我們使用命令行進(jìn)行操作。這樣便增加了學(xué)習(xí)Linux系統(tǒng)的難度,不過(guò)不用擔(dān)心,一旦能夠熟練使用它們,那么你將永遠(yuǎn)也不會(huì)忘記。萬(wàn)事開(kāi)頭難,所以請(qǐng)大家努力吧!
5.1絕對(duì)路徑和相對(duì)路徑
在Linux中,什么是一個(gè)文件的路徑呢?簡(jiǎn)單地說(shuō),就是這個(gè)文件存放的地方,例如在上一章提到的/root/.ssh/authorized_keys就是一個(gè)文件的路徑。只要你告訴系統(tǒng)某個(gè)文件的路徑,系統(tǒng)就可以找到這個(gè)文件。
在Linux中,存在著絕對(duì)路徑和相對(duì)路徑。
絕對(duì)路徑:路徑的寫(xiě)法一定是由根目錄/寫(xiě)起的,例如/usr/local/mysql。
相對(duì)路徑:路徑的寫(xiě)法不是由根目錄/寫(xiě)起的。例如,首先用戶進(jìn)入到/home,然后再進(jìn)入到test ,執(zhí)行的命令為
# cd /home # cd test
此時(shí)用戶所在的路徑為/home/test。第一個(gè)cd命令后緊跟/home,前面有斜杠;而第二個(gè)cd命令后緊跟test,前面沒(méi)有斜杠。這個(gè)test是相對(duì)于/home目錄來(lái)講的,所以稱(chēng)為相對(duì)路徑。
5.1.1命令cd
命令cd(changedirectory的簡(jiǎn)寫(xiě))是用來(lái)變更用戶所在目錄的,如果后面什么都不跟,就會(huì)直接進(jìn)入當(dāng)前用戶的根目錄下。我們做實(shí)驗(yàn)用的是root賬戶,所以運(yùn)行命令cd后,會(huì)進(jìn)入root賬戶的根目錄/root下。如果后面跟目錄名,則會(huì)直接切換到指定目錄下。示例命令如下:
# cd /tmp/ # pwd /tmp # cd # pwd /root
上例中,命令pwd用于顯示當(dāng)前所在目錄。命令cd后面只能是目錄名,如果跟了文件名,則會(huì)報(bào)錯(cuò),例如:
# cd /etc/passwd -bash: cd: /etc/passwd: 不是目錄
因?yàn)?etc/passwd為一個(gè)文件,所以就報(bào)錯(cuò)了。在Linux文件系統(tǒng)中,有兩個(gè)特殊的符號(hào)也可以表示目錄。“.”表示當(dāng)前目錄,“..”表示當(dāng)前目錄的上一級(jí)目錄,示例命令如下:
# cd /usr/local/lib/ # pwd /usr/local/lib # cd . # pwd /usr/local/lib # cd .. # pwd /usr/local
上例中,首先進(jìn)入/usr/local/lib/目錄,接著輸入.,用命令pwd查看當(dāng)前目錄,還是在/usr/local/lib/目錄下,然后輸入..,則進(jìn)入/usr/local/ 目錄(即/usr/local/lib目錄的上一級(jí)目錄)。
5.1.2命令mkdir
命令mkdir(makedirectory的簡(jiǎn)寫(xiě))用于創(chuàng)建目錄,這個(gè)命令在上一章中用過(guò)。該命令的格式為:mkdir [-mp] [目錄名稱(chēng)]。其中,-m、-p為其選項(xiàng)。-m選項(xiàng)用于指定要?jiǎng)?chuàng)建目錄的權(quán)限(這個(gè)選項(xiàng)不常用,阿銘不作重點(diǎn)解釋?zhuān)?p選項(xiàng)很管用,我們先來(lái)做個(gè)試驗(yàn),你就一目了然了。執(zhí)行如下命令:
# mkdir /tmp/test/123
mkdir: 無(wú)法創(chuàng)建目錄 '/tmp/test/123': 沒(méi)有那個(gè)文件或目錄
# mkdir -p /tmp/test/123 # ls /tmp/test 123
當(dāng)我們想創(chuàng)建目錄/tmp/test/123時(shí),提示無(wú)法創(chuàng)建、/tmp/test目錄不存在。在Linux中,如果它發(fā)現(xiàn)要?jiǎng)?chuàng)建的目錄的上一級(jí)目錄不存在,就會(huì)報(bào)錯(cuò)。為了解決這個(gè)問(wèn)題,Linux設(shè)置了-p選項(xiàng),這個(gè)選項(xiàng)可以幫我們創(chuàng)建一大串級(jí)聯(lián)目錄,并且當(dāng)創(chuàng)建一個(gè)已經(jīng)存在的目錄時(shí),不會(huì)報(bào)錯(cuò)。示例命令如下:
# ls -ld /tmp/test/123 drwxr-xr-x 2 root 6 12月 30 07:25 /tmp/test/123 # mkdir /tmp/test/123 mkdir: 無(wú)法創(chuàng)建目錄 '/tmp/test/123': 文件已存在 # mkdir -p /tmp/test/123 # ls -ld /tmp/test/123 drwxr-xr-x 2 root 6 12月 30 07:25 /tmp/test/123
在上一章中阿銘已經(jīng)介紹過(guò)ls命令,但并沒(méi)有介紹它的-d選項(xiàng)。這個(gè)選項(xiàng)是針對(duì)目錄的,通常都是和-l并用,寫(xiě)成-ld。它可以查看指定目錄的屬性,比如在本例中,它可以查看/tmp/test/123目錄的創(chuàng)建時(shí)間,如果不加-d,則會(huì)顯示該目錄里面的文件和子目錄的屬性。
5.1.3命令rmdir
命令rmdir(removedirectory的簡(jiǎn)寫(xiě))用于刪除空目錄,后面可以是一個(gè)目錄,也可以是多個(gè)目錄(用空格分隔)。該命令只能刪除目錄,不能刪除文件,所以阿銘一般不用它,而改用命令rm(remove的簡(jiǎn)寫(xiě)),這個(gè)命令既可以刪除目錄,又可以刪除文件,將在下一節(jié)中介紹。rmdir有和mkdir具有相同的選項(xiàng)-p,它同樣可以級(jí)聯(lián)刪除一大串目錄,但在級(jí)聯(lián)的目錄中,如果某一個(gè)目錄里還有目錄或者文件時(shí),這個(gè)命令就不好用了。我們先來(lái)看看命令rmdir的用法,示例命令如下:
# ls /tmp/test 123 # rmdir /tmp/test/ rmdir: 刪除 '/tmp/test/' 失敗: 目錄非空 # rmdir /tmp/test/123 # ls /tmp/test #
在上例中,命令rmdir只能刪除空目錄,即使加上-p選項(xiàng)也只能刪除一串空目錄??梢?jiàn),這個(gè)命令有很大的局限性,偶爾用一下還可以。
5.1.4命令rm
命令rm是最常用的,它也有很多選項(xiàng)。你可以通過(guò)命令man rm來(lái)獲得它的詳細(xì)幫助信息。這里,阿銘只介紹最常用的兩個(gè)選項(xiàng)。
-r:刪除目錄用的選項(xiàng),類(lèi)似于rmdir,但可以刪除非空目錄。下面阿銘先創(chuàng)建一連串的目錄,然后嘗試刪除它們。示例命令如下:
# mkdir -p /tmp/test/123 # rm -r /tmp/test/123 rm:是否刪除目錄 '/tmp/test/123'? y
和rmdir不同的是,使用rm –r命令刪除目錄時(shí),會(huì)詢問(wèn)是否刪除,如果輸入“y”則會(huì)刪除,如果輸入“n”則不刪除。另外,rm -r命令能刪除非空目錄。
-f:表示強(qiáng)制刪除。它不再詢問(wèn)是否刪除,而是直接刪除。如果后面跟一個(gè)不存在的文件或者目錄,則不會(huì)報(bào)錯(cuò)。下面阿銘嘗試刪除一個(gè)不存在的目錄,示例命令如下:
# rm /tmp/test/123/123 rm: 無(wú)法刪除 '/tmp/test/123/123': 沒(méi)有那個(gè)文件或目錄 # rm -f /tmp/test/123/123
上例中,/tmp/test/123/123這個(gè)目錄是不存在的,但加上-f選項(xiàng)后,就不會(huì)報(bào)錯(cuò)。但如果要?jiǎng)h除一個(gè)存在的目錄時(shí),即使加上-f選項(xiàng)也會(huì)報(bào)錯(cuò)。所以,使用命令rm刪除目錄時(shí),一定要加-r選項(xiàng)。請(qǐng)對(duì)比下面的示例命令和上面的示例命令的區(qū)別:
# rm -f /tmp/test/123 rm: 無(wú)法刪除 '/tmp/test/123': 是一個(gè)目錄 # rm -rf /tmp/test/123
關(guān)于rm命令,阿銘使用最多的是-rf選項(xiàng),這樣刪除文件或目錄比較方便。但請(qǐng)大家千萬(wàn)要注意,rm -rf命令后面不能加“/”,否則它會(huì)把你的系統(tǒng)文件全部刪除,這是非常危險(xiǎn)的!
5.2環(huán)境變量PATH
在講環(huán)境變量之前,阿銘先介紹一下命令which,它用于查找某個(gè)命令的絕對(duì)路徑。示例命令如下:
# which rmdir /usr/bin/rmdir # which rm alias rm='rm -i' /usr/bin/rm # which ls alias ls='ls --color=auto' /usr/bin/ls
其中rm和ls是兩個(gè)特殊的命令,在上例中我們使用alias命令做了別名。我們用的rm實(shí)際上是rm -i,加上-i選項(xiàng)后,刪除文件或者命令時(shí)都會(huì)詢問(wèn)是否確定要?jiǎng)h除,這樣做比較安全。命令alias可以設(shè)置命令或文件的別名,阿銘會(huì)在10.1.3節(jié)中詳細(xì)介紹。命令which阿銘不常使用,平時(shí)只用來(lái)查詢某個(gè)命令的絕對(duì)路徑。
在上面的示例中,用which查到rm命令的絕對(duì)路徑為/usr/bin/rm。那么你是否會(huì)問(wèn):“為什么我們使用命令時(shí),只是直接打出了命令,而沒(méi)有使用這些命令的絕對(duì)路徑呢?”這是環(huán)境變量PATH在起作用。請(qǐng)輸入如下命令:
# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
這里的echo用來(lái)輸出$PATH的值。PATH前面的$是變量的前綴符號(hào),這些知識(shí)點(diǎn)將會(huì)在第10章中詳細(xì)介紹。
因?yàn)?bin目錄在PATH的設(shè)定中,所以自然可以找到ls。但值得注意的是,由于PATH里沒(méi)有/root目錄,如果你將ls移到/root目錄下,當(dāng)執(zhí)行l(wèi)s命令時(shí),系統(tǒng)自然就找不到可執(zhí)行文件了,它會(huì)提示command not found!。示例命令如下:
# mv /usr/bin/ls /root/ # ls -bash: /usr/bin/ls: 沒(méi)有那個(gè)文件或目錄
命令mv(move的簡(jiǎn)寫(xiě))用于移動(dòng)目錄或者文件,它還有重命名的作用(這個(gè)將在4.2.2節(jié)中介紹)。那么,該如何解決上面的這種問(wèn)題呢?有兩種方法,一種方法是直接將/root這個(gè)路徑加入到$PATH當(dāng)中,命令如下:
# PATH=$PATH:/root # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root # ls anaconda-ks.cfg ls
另一種方法是使用絕對(duì)路徑,命令如下:
# /root/ls anaconda-ks.cfg ls
為了不影響系統(tǒng)使用,建議將ls文件還原,命令如下:
# mv /root/ls /usr/bin/
5.2.1命令cp
cp是copy(即復(fù)制)的簡(jiǎn)寫(xiě),該命令的格式為:cp [選項(xiàng)] [ 來(lái)源文件 ] [目的文件]。例如,我想把test1復(fù)制成test2,可以寫(xiě)為cp test1 test2。下面介紹命令cp的幾個(gè)常用選項(xiàng)。
-r:如果要復(fù)制一個(gè)目錄,必須加-r選項(xiàng),否則不能復(fù)制,這類(lèi)似于rm命令。示例命令如下:
# mkdir 123 # cp 123 456 cp: 略過(guò)目錄"123" # cp -r 123 456 # ls –ld 123 456 drwxr-xr-x 2 root 6 12月 30 07:35 123 drwxr-xr-x 2 root 6 12月 30 07:36 456
-i:這是安全選項(xiàng),如果遇到一個(gè)已存在的文件,會(huì)詢問(wèn)是否覆蓋,這也與rm命令類(lèi)似。在RedHat/Rocky系統(tǒng)中,使用的cp命令其實(shí)是cp –i,我們可以通過(guò)which命令查看,具體如下:
# which cp alias cp='cp -i' /bin/cp
為了更形象地說(shuō)明-i 選項(xiàng)的作用,我們來(lái)做一個(gè)簡(jiǎn)單的小試驗(yàn),命令如下:
# cd 123 # ls # touch 111 # touch 222 # cp -i 111 222 cp:是否覆蓋 '222'?n # echo 'abc' > 111 # echo 'def' > 2 22 # cat 111 222 abc def # /bin/cp 111 222 # cat 111 abc # cat 222 abc
上例中,touch可以解釋為:如果有這個(gè)文件,則會(huì)改變?cè)撐募脑L問(wèn)時(shí)間;如果沒(méi)有這個(gè)文件,就會(huì)創(chuàng)建這個(gè)文件。前面說(shuō)過(guò),echo命令用于打印,這里echo的內(nèi)容abc和def并沒(méi)有顯示在屏幕上,而是分別寫(xiě)入了文件“111”和“222”。起寫(xiě)入作用的就是符號(hào)“>”,這在Linux中叫做重定向,即把前面產(chǎn)生的輸出寫(xiě)入到后面的文件中。而cat命令則用于讀一個(gè)文件,并把讀出的內(nèi)容打印到當(dāng)前屏幕上。(重定向?qū)⒃诘?1章中介紹,cat命令將在5.3.1節(jié)中詳細(xì)介紹,這里你只要明白它們的含義即可。)
5.2.2命令mv
mv是move的簡(jiǎn)寫(xiě),該命令的格式為:mv [ 選項(xiàng) ] [源文件或目錄](méi) [目標(biāo)文件或目錄](méi)。該命令有如下幾種情況。
目標(biāo)文件是目錄,但該目錄不存在。
目標(biāo)文件是目錄,且該目錄存在。
目標(biāo)文件是文件,且該文件不存在。
目標(biāo)文件是文件,但該文件存在。
當(dāng)目標(biāo)文件是目錄時(shí),其存在與否,執(zhí)行后的結(jié)果是不一樣的。如果該目錄存在,則會(huì)把源文件或目錄移動(dòng)到該目錄中。如果該目錄不存在,則會(huì)把源目錄重命名為給定的目標(biāo)文件名。
當(dāng)目標(biāo)文件是文件時(shí),其存在與否,執(zhí)行后的結(jié)果也是不一樣的。如果該文件存在,則會(huì)詢問(wèn)是否覆蓋。如果該文件不存在,則會(huì)把源文件重命名為給定的目標(biāo)文件名。
下面我們來(lái)做幾個(gè)小試驗(yàn),示例命令如下:
# mkdir /tmp/test_mv # cd /tmp/test_mv # mkdir dira dirb # ls dira dirb # mv dira dirc # ls dirb dirc
上例中,首先阿銘創(chuàng)建了一個(gè)實(shí)驗(yàn)用的目錄/tmp/test_mv,然后進(jìn)入到該目錄下進(jìn)行實(shí)驗(yàn),這樣做的目的是保持目錄和文件簡(jiǎn)潔,后面的實(shí)驗(yàn)以此類(lèi)推。這里,目標(biāo)文件是目錄dirc,并且dirc不存在,相當(dāng)于把目錄dira重命名為dirc。
下例中,目標(biāo)文件是目錄dirb,且dirb存在,則會(huì)把目錄dirc移動(dòng)到目錄dirb里:
# mv dirc dirb # ls dirb # ls dirb dirc
下例中,mv filed filee的目標(biāo)文件是文件filee且這個(gè)文件不存在,相當(dāng)于把文件filed重命名為filee。mv filee dirb命令則將更名后的文件filee移動(dòng)到目錄dirb里。
# touch filed # ls dirb filed # mv filed filee # ls dirb filee # mv filee dirb # ls dirb # ls dirb dirc filee
5.3幾個(gè)與文檔相關(guān)的命令
上面介紹的幾個(gè)命令幾乎都是與目錄相關(guān)的,下面阿銘繼續(xù)介紹幾個(gè)與文檔相關(guān)的命令。
5.3.1命令cat
命令cat(它并不是某個(gè)單詞的簡(jiǎn)寫(xiě),大家可以通過(guò)man cat命令查看它的解釋?zhuān)┦潜容^常用的一個(gè)命令,用于查看一個(gè)文件的內(nèi)容并將其顯示在屏幕上。cat后面可以不加任何選項(xiàng),直接跟文件名。下面阿銘介紹它的兩個(gè)常用選項(xiàng)。
-n :查看文件時(shí),把行號(hào)也顯示到屏幕上。示例命令如下(當(dāng)前目錄依然在/tmp/test_mv):
# echo '111111111' > dirb/filee # echo '222222222' >> dirb/filee # cat dirb/filee 111111111 222222222 # cat -n dirb/filee 1 111111111 2 222222222
上例中出現(xiàn)了符號(hào)>>,它跟前面介紹的符號(hào)>類(lèi)似,其作用也是重定向,即把前面的內(nèi)容輸入到后面的文件中,但符號(hào)>>是“追加”的意思。當(dāng)使用符號(hào)>時(shí),如果文件中有內(nèi)容,則會(huì)刪除文件中原有的內(nèi)容,而使用符號(hào)>>則不會(huì)刪除原有的內(nèi)容。
-A:顯示所有的內(nèi)容,包括特殊字符。示例命令如下:
# cat -A dirb/filee 111111111$ 222222222$
上例中,若不加-A選項(xiàng),那么每行后面的$符號(hào)是看不到的。
5.3.2命令tac
和命令cat一樣,命令 tac(正好是命令cat的反序?qū)懛ǎ┮彩前盐募膬?nèi)容顯示在屏幕上,只不過(guò)是先顯示最后一行,然后顯示倒數(shù)第二行,最后才顯示第一行。我們使用命令tac來(lái)查看剛才創(chuàng)建的文件dirb/filee,顯示的結(jié)果和命令cat正好是反序,如下所示:
# tac dirb/filee 222222222 111111111
5.3.3命令more
命令more也用于查看一個(gè)文件的內(nèi)容,后面直接跟文件名。當(dāng)文件內(nèi)容太多,一屏不能全部顯示時(shí),用命令cat肯定是看不了前面的內(nèi)容,這時(shí)可以使用命令more。當(dāng)看完一屏后,按空格鍵可以繼續(xù)看下一屏,看完所有內(nèi)容后就會(huì)退出,按Ctrl+B可以向上翻屏,按Ctrl+F向下翻屏(同空格)。如果你想提前退出,按q鍵即可。
5.3.4命令less
命令less的作用和命令more一樣,后面直接跟文件名,但命令less比more功能要多一些。按空格鍵可以翻頁(yè),按j鍵可以向下移動(dòng)(按一下就向下移動(dòng)一行),按k鍵可以向上移動(dòng)。在使用more和less查看某個(gè)文件時(shí),你可以按一下/鍵,并輸入一個(gè)字符串(如root),然后回車(chē),這樣就可以查找這個(gè)字符串了。如果是查找多個(gè)該字符串,可以按n鍵顯示下一個(gè)。另外,也可以用?鍵替代/鍵來(lái)搜索字符串,唯一不同的是,/是在當(dāng)前行向下搜索,而?是在當(dāng)前行向上搜索。
5.3.5命令head
命令head用于顯示文件的前10行,后面直接跟文件名。如果加-n選項(xiàng),則顯示文件的前幾行,示例命令如下:
# head /etc/passwd root0root:/root:/bin/bash bin1bin:/bin:/sbin/nologin daemon2daemon:/sbin:/sbin/nologin adm3adm:/var/adm:/sbin/nologin lp4lp:/var/spool/lpd:/sbin/nologin sync5sync:/sbin:/bin/sync shutdown6shutdown:/sbin:/sbin/shutdown halt7halt:/sbin:/sbin/halt mail8mail:/var/spool/mail:/sbin/nologin operator11operator:/root:/sbin/nologin # head -n 1 /etc/passwd root0root:/root:/bin/bash # head -n2 /etc/passwd root0root:/root:/bin/bash bin1bin:/bin:/sbin/nologin
大家請(qǐng)注意,選項(xiàng)-n后有無(wú)空格均可。另外,也可以省略字母n,-后面直接跟數(shù)字, 如下:
# head -2 /etc/passwd root0root:/root:/bin/bash bin1bin:/bin:/sbin/nologin
5.3.6命令tail
和命令head類(lèi)似,命令tail用于顯示文件的最后10行,后面直接跟文件名。如果加-n選項(xiàng),則顯示文件的最后幾行,示例命令如下:
# tail /etc/passwd nobody65534Kernel Overflow User:/:/sbin/nologin dbus81System message bus:/:/sbin/nologin systemd-coredump999systemd Core Dumper:/:/sbin/nologin systemd-resolve193systemd Resolver:/:/sbin/nologin tss59Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin polkitd998User for polkitd:/:/sbin/nologin unbound997Unbound DNS resolver:/etc/unbound:/sbin/nologin sssd996User for sssd:/:/sbin/nologin sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony995:/var/lib/chrony:/sbin/nologin # tail -n2 /etc/passwd sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony995:/var/lib/chrony:/sbin/nologin # tail -2 /etc/passwd sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony995:/var/lib/chrony:/sbin/nologin
同樣,-n后面有無(wú)空格均可,且字母n也可以省略。
另外,命令tail的-f選項(xiàng)也常用,它可以動(dòng)態(tài)顯示文件的最后10行。如果文件內(nèi)容在不斷增加,使用-f選項(xiàng)非常方便和直觀。比如tail -f /var/log/messages可以動(dòng)態(tài)、實(shí)時(shí)地查看文件/var/log/ messages中的內(nèi)容。
5.4文件的所有者和所屬組
一個(gè)Linux目錄或者文件,都會(huì)有一個(gè)所有者和所屬組。所有者是指文件的擁有者,而所屬組指的是這個(gè)文件屬于哪一個(gè)用戶組(關(guān)于用戶、用戶組的概念,會(huì)在第5章中詳細(xì)介紹,這里你要明白一個(gè)用戶組下面會(huì)有若干個(gè)用戶)。Linux這樣設(shè)置文件屬性的目的是為了文件的安全。
例如,test文件的所有者是user0,而test1文件的所有者是user1,那么user1很有可能是不能查看test文件的,相應(yīng)地,user0也很有可能不能查看test1文件(之所以說(shuō)是可能,是因?yàn)閡ser0和user1有可能屬于同一個(gè)用戶組,而恰好這個(gè)用戶組對(duì)這兩個(gè)文件有查看權(quán)限)。
有時(shí)我們也會(huì)有這樣的需求:使一個(gè)文件能同時(shí)被user0和user1查看,這怎么實(shí)現(xiàn)呢?這時(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)查看這些屬性,代碼如下:
# ls -l /etc/passwd -rw-r--r--. 1 root 1080 12月 26 08:08 /etc/passwd
其中,第3列和第4列的root就是所有者和所屬組。
5.5Linux文件屬性
在上例中,用ls –l命令查看當(dāng)前目錄下的文件時(shí),共顯示了9列內(nèi)容(用空格劃分列),它們都代表什么含義呢?
第1列:包含該文件的類(lèi)型、所有者、所屬組以及其他用戶對(duì)該文件的權(quán)限。第1列共11位(阿銘這里列出的是10位,沒(méi)有最后一位,你可以通過(guò)ls -l /看一下,會(huì)看到最后一位是一個(gè).),其中第1位用來(lái)描述該文件的類(lèi)型。上例中我們看到的文件類(lèi)型有d和-,其實(shí)除了這兩種外,還有l(wèi)、b、c、s等,具體描述如下所示。
d表示該文件為目錄。
-表示該文件為普通文件。
l表示該文件為鏈接文件(link file),4.9.3節(jié)中提到的軟鏈接即為該類(lèi)型,示例命令如下:
# ls -l /etc/rc.local lrwxrwxrwx. 1 root 13 7月 1 11:29 /etc/rc.local -> rc.d/rc.local
上例中,第1列第1位是l,表示該文件為鏈接文件,后面阿銘還會(huì)介紹它。
b表示該文件為塊設(shè)備,比如/dev/sda就是這樣的文件,磁盤(pán)分區(qū)文件就是這種類(lèi)型。
c表示該文件為串行端口設(shè)備文件(又稱(chēng)字符設(shè)備文件),比如鍵盤(pán)、鼠標(biāo)、打印機(jī)、tty終端等都是這樣的文件。
s表示該文件為套接字文件(socket),用于進(jìn)程之間的通信,后面講到MySQL時(shí)會(huì)用到該類(lèi)型的文件。
文件類(lèi)型后面的9位,每3位為一組,上例中(rc.local)均為rwx這3個(gè)參數(shù)的組合。其中,r代表可讀,w代表可寫(xiě),x代表可執(zhí)行。前3位為所有者(user)的權(quán)限,中間3位為所屬組(group)的權(quán)限,最后3位為其他非本群組用戶(others)的權(quán)限。下面阿銘舉例來(lái)說(shuō)明一下。
假設(shè)一個(gè)文件的屬性為-rwxr-xr--,它代表的意思是,該文件為普通文件,文件擁有者可讀、可寫(xiě)且可執(zhí)行,文件所屬組對(duì)其可讀、不可寫(xiě)但可執(zhí)行,其他用戶對(duì)其只可讀。對(duì)于一個(gè)目錄來(lái)講,打開(kāi)這個(gè)目錄即為執(zhí)行這個(gè)目錄,所以任何一個(gè)目錄必須要有x權(quán)限才能打開(kāi)并查看該目錄下的內(nèi)容。例如,一個(gè)目錄的屬性為drwxr--r--,其所有者為root,那么除root之外的其他用戶是不能打開(kāi)這個(gè)目錄的。
關(guān)于前面提到第1列最后1位的“.”,阿銘要特別說(shuō)明一下。老版本CentOS 5 是沒(méi)有這個(gè)點(diǎn)的,這主要是因?yàn)樾掳姹镜膌s添加了Selinux或者acl的屬性。如果文件或者目錄使用了Selinux context的屬性,這里會(huì)是一個(gè)點(diǎn)“.”;如果設(shè)置了acl的屬性,這里會(huì)是一個(gè)加號(hào)“+”。
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213879 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3614瀏覽量
91440 -
文件
+關(guān)注
關(guān)注
1文章
579瀏覽量
25378
原文標(biāo)題:第5章 Linux文件和目錄管理上
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
你應(yīng)該搞懂的 C 語(yǔ)言頭文件路徑問(wèn)題

Linux文件系統(tǒng)的反刪除方法
玩轉(zhuǎn)iPhone:iPhone各種文件路徑詳解
Linux文件及文件系統(tǒng)分析

Linux中文件及文件描述符概述
linux文件系統(tǒng)基礎(chǔ)
Linux實(shí)用教程之Linux文件和目錄操作總結(jié)
Java中如何獲取文件的路徑
Python、PyQt如何從獲取的文件路徑中提取文件夾路徑
C 語(yǔ)言的頭文件路徑位置問(wèn)題

Linux的文件系統(tǒng)特點(diǎn)

評(píng)論