一韭脊、Linux目錄結(jié)構(gòu)
Linux和Windows的不同
一種不同是體現(xiàn)在目錄與存儲(chǔ)介質(zhì)(磁盤(pán)戳护,內(nèi)存,DVD等)的關(guān)系上侦啸,Windows一直是以存儲(chǔ)介質(zhì)為主的翎碑,主要以盤(pán)符(C盤(pán)谬返,D盤(pán)...)及分區(qū)來(lái)實(shí)現(xiàn)文件管理,然后之下才是目錄日杈,目錄就顯得不是那么重要遣铝,除系統(tǒng)文件之外的用戶文件放在任何地方任何目錄也是沒(méi)有多大關(guān)系。所以通常Windows在使用一段時(shí)間后达椰,磁盤(pán)上面的文件目錄會(huì)顯得雜亂無(wú)章(少數(shù)善于整理的用戶除外吧)翰蠢。然而UNIX/Linux恰好相反,UNIX是以目錄為主的啰劲,Linux也繼承了這一優(yōu)良特性梁沧。Linux是以樹(shù)形目錄結(jié)構(gòu)的形式來(lái)構(gòu)建整個(gè)系統(tǒng)的,可以理解為樹(shù)形目錄是一個(gè)用戶可操作系統(tǒng)的骨架蝇裤。雖然本質(zhì)上無(wú)論是目錄結(jié)構(gòu)還是操作系統(tǒng)內(nèi)核都是存儲(chǔ)在磁盤(pán)上的廷支,但從邏輯上來(lái)說(shuō)Linux的磁盤(pán)是“掛在”(掛載在)目錄上的,每一個(gè)目錄不僅能使用本地磁盤(pán)分區(qū)的文件系統(tǒng)栓辜,也可以使用網(wǎng)絡(luò)上的文件系統(tǒng)恋拍。舉例來(lái)說(shuō),可以利用網(wǎng)絡(luò)文件系統(tǒng)(Network File System藕甩,NFS)服務(wù)器載入某特定目錄等施敢。
1. FHS標(biāo)準(zhǔn)
Linux的目錄結(jié)構(gòu)復(fù)雜在于,系統(tǒng)的正常運(yùn)行是以目錄結(jié)構(gòu)為基礎(chǔ)的,初學(xué)者里面大部分目錄都不知道其作用僵娃,重要與否概作,對(duì)于那些重度Windows用戶,他們會(huì)糾結(jié)很長(zhǎng)時(shí)間默怨,關(guān)于我安裝的軟件在哪里這類(lèi)問(wèn)題讯榕。簡(jiǎn)單是因?yàn)椋渲写蟛糠帜夸浗Y(jié)構(gòu)是規(guī)定好了的(FHS標(biāo)準(zhǔn))匙睹,是不可更改的愚屁。
FHS(英文:Filesystem Hierarchy Standard中文:文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)),多數(shù)Linux版本采用這種文件組織形式痕檬,F(xiàn)HS定義了系統(tǒng)中每個(gè)區(qū)域的用途霎槐、所需要的最小構(gòu)成的文件和目錄同時(shí)還給出了例外處理與矛盾處理。
FHS定義了兩層規(guī)范谆棺,第一層是栽燕,/下面的各個(gè)目錄應(yīng)該要放什么文件數(shù)據(jù),例如/etc應(yīng)該放置設(shè)置文件改淑,/bin與/sbin則應(yīng)該放置可執(zhí)行文件等等碍岔。
第二層則是針對(duì)/usr及/var這兩個(gè)目錄的子目錄來(lái)定義。例如/var/log放置系統(tǒng)登錄文件朵夏,/usr/share放置共享數(shù)據(jù)等等蔼啦。
FHS_2.3標(biāo)準(zhǔn)文檔
FHS是根據(jù)以往無(wú)數(shù)Linux用戶和開(kāi)發(fā)者的經(jīng)驗(yàn)總結(jié)出來(lái)的,并且會(huì)維持更新仰猖,F(xiàn)HS依據(jù)文件系統(tǒng)使用的頻繁與否以及是否允許用戶隨意改動(dòng)(注意捏肢,不是不能),將目錄定義為四種交互作用的形態(tài)饥侵,如下表所示:
2.目錄路徑
路徑
路徑就是要去哪兒的路線鸵赫。如果想進(jìn)入某個(gè)具體的目錄或者想獲得某個(gè)目錄的文件(目錄本身也是文件)就用路徑來(lái)找到。
使用cd命令可以切換目錄躏升,在Linux里面使用.表示當(dāng)前目錄辩棒,..表示上一級(jí)目錄(注意,以.開(kāi)頭的文件都是隱藏文件膨疏,所以這兩個(gè)目錄必然也是隱藏的一睁,可以使用ls -a命令查看隱藏文件), -表示上一次所在目錄,~通常表示當(dāng)前用戶的home目錄佃却。使用pwd命令可以獲取當(dāng)前所在路徑(絕對(duì)路徑)者吁。
進(jìn)入上一級(jí)目錄:
$ cd ..
進(jìn)入你的home目錄:
$ cd ~
或者cd
/home/<你的用戶名>
使用pwd獲取當(dāng)前路徑:
$ pwd
絕對(duì)路徑
關(guān)于絕對(duì)路徑,簡(jiǎn)單地說(shuō)就是以根" / "目錄為起點(diǎn)的完整路徑饲帅,以要到的目錄為終點(diǎn)复凳,表現(xiàn)形式如:
/usr/local/bin瘤泪,表示根目錄下的usr目錄中的local目錄中的bin目錄。
相對(duì)路徑
相對(duì)路徑染坯,是以當(dāng)前目錄.為起點(diǎn)均芽,以要到的目錄為終點(diǎn),表現(xiàn)形式如:
usr/local/bin(這里假設(shè)當(dāng)前目錄為根目錄)单鹿。表示相對(duì)路徑并沒(méi)有加上表示當(dāng)前目錄的那個(gè).,而是直接以目錄名開(kāi)頭深纲,因?yàn)檫@個(gè)usr目錄為/目錄下的子目錄仲锄,可以省略這個(gè).;如果是當(dāng)前目錄的上一級(jí)目錄湃鹊,則需要使用..儒喊,比如當(dāng)前目錄為home目錄,根目錄就應(yīng)該表示為../../币呵,表示上一級(jí)目錄(home目錄)的上一級(jí)目錄(/目錄)怀愧。
以home目錄為起點(diǎn),分別以絕對(duì)路徑和相對(duì)路徑的方式進(jìn)入/usr/local/bin目錄:
絕對(duì)路徑
$ cd/usr/local/bin
相對(duì)路徑
$ cd../../usr/local/bin
進(jìn)入一個(gè)目錄余赢,可以使用絕對(duì)路徑也可以使用相對(duì)路徑芯义,選擇路徑,方便就好妻柒,看個(gè)人喜好扛拨。比如假設(shè)當(dāng)前在/usr/local/bin目錄,如果要進(jìn)入的是usr目錄举塔,那么cd /usr绑警,就比cd ../..方便一點(diǎn)。
提示:在進(jìn)行目錄切換的過(guò)程中請(qǐng)多使用Tab鍵自動(dòng)補(bǔ)全央渣,可避免輸入錯(cuò)誤计盒,連續(xù)按兩次Tab可以顯示全部候選結(jié)果。
二芽丹、Linux文件的基本操作
1.新建
新建空白文件
使用touch命令創(chuàng)建空白文件北启。touch命令,主要作用是來(lái)更改已有文件的時(shí)間戳的(e.g.最近訪問(wèn)時(shí)間志衍,最近修改時(shí)間)暖庄,但其在不加任何參數(shù)的情況下,只指定一個(gè)文件名楼肪,則可以創(chuàng)建一個(gè)指定文件名的空白文件(不會(huì)覆蓋已有同名文件)培廓,當(dāng)然也可以同時(shí)指定該文件的時(shí)間戳。
創(chuàng)建名為test的空白文件春叫,因?yàn)樵谄渌夸洓](méi)有權(quán)限肩钠,所以需要先cd ~切換回用戶的/home/shiyanlou目錄:
$ cd ~
$ touch test
新建目錄
使用mkdir(make
directories)命令可以創(chuàng)建一個(gè)空目錄泣港,也可同時(shí)指定創(chuàng)建目錄的權(quán)限屬性。
創(chuàng)建名為“ mydir ”的空目錄:
$ mkdir mydir
使用-p參數(shù)价匠,同時(shí)創(chuàng)建父目錄(如果不存在該父目錄)当纱,如下我們同時(shí)創(chuàng)建一個(gè)多級(jí)目錄(這在安裝軟件、配置安裝路徑時(shí)非常有用):
$ mkdir -pfather/son/grandson
后面的目錄路徑踩窖,也可以用絕對(duì)路徑的方式表示坡氯。
2.復(fù)制
復(fù)制文件
使用cp(copy)命令復(fù)制一個(gè)文件到指定目錄。
將之前創(chuàng)建的“ test ”文件復(fù)制到“
/home/shiyanlou/father/son/grandson ”目錄中:
$ cp testfather/son/grandson
復(fù)制目錄
如果直接使用cp命令復(fù)制一個(gè)目錄的話洋腮,會(huì)出現(xiàn)如下錯(cuò)誤:
要成功復(fù)制目錄需要加上-r或者-R參數(shù)箫柳,表示遞歸復(fù)制
3.刪除
刪除文件
使用rm(remove files
or directories)命令刪除一個(gè)文件:
$ rm test
想要?jiǎng)h除一些為只讀權(quán)限的文件,直接使用rm刪除會(huì)顯示一個(gè)提示啥供,如下:
如果想忽略這提示悯恍,直接刪除文件,可以使用-f參數(shù)強(qiáng)制刪除:
刪除目錄
要?jiǎng)h除一個(gè)目錄伙狐,也需要加上-r或-R參數(shù):
4.移動(dòng)文件與文件重命名
移動(dòng)文件
使用mv(move or
rename files)命令移動(dòng)文件(剪切)涮毫。將文件“ file1 ”移動(dòng)到Documents目錄:
mv源目錄文件目的目錄:
$ mkdirDocuments
$ mv file1Documents
重命名文件
將文件“ file1 ”重命名為“ myfile ”:
mv舊的文件名新的文件名:
$ mv file1myfile
批量重命名
使用命令rename來(lái)實(shí)現(xiàn)。不過(guò)它要用perl正則表達(dá)式來(lái)作為參數(shù)(正則表達(dá)式我們要在后面才會(huì)介紹到)贷屎,只要記得這個(gè)rename命令可以批量重命名就好了罢防。
使用通配符批量創(chuàng)建5個(gè)文件:
$ touchfile{1..5}.txt
批量將這5個(gè)后綴為.txt的文本文件重命名為以.c為后綴的文件:
$ rename's/.txt/.c/' *.txt
批量將這5個(gè)文件,文件名改為大寫(xiě):
$ rename'y/a-z/A-Z/'.c
rename是先使用第二個(gè)參數(shù)的通配符匹配所有后綴為.txt的文件豫尽,然后使用第一個(gè)參數(shù)提供的正則表達(dá)式將匹配的這些文件的.txt后綴替換為.c。
5.查看文件
使用cat美旧,tac和nl命令查看文件
前兩個(gè)命令都是用來(lái)打印文件內(nèi)容到標(biāo)準(zhǔn)輸出(終端)渤滞,其中cat為正序顯示,tac為倒序顯示榴嗅。
標(biāo)準(zhǔn)輸入輸出:當(dāng)我們執(zhí)行一個(gè)shell命令行時(shí)通常會(huì)自動(dòng)打開(kāi)三個(gè)標(biāo)準(zhǔn)文件妄呕,即標(biāo)準(zhǔn)輸入文件(stdin),默認(rèn)對(duì)應(yīng)終端的鍵盤(pán)嗽测、標(biāo)準(zhǔn)輸出文件(stdout)和標(biāo)準(zhǔn)錯(cuò)誤輸出文件(stderr)绪励,后兩個(gè)文件都對(duì)應(yīng)被重定向到終端的屏幕,以便我們能直接看到輸出內(nèi)容唠粥。進(jìn)程將從標(biāo)準(zhǔn)輸入文件中得到輸入數(shù)據(jù)疏魏,將正常輸出數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出文件,而將錯(cuò)誤信息送到標(biāo)準(zhǔn)錯(cuò)誤文件中晤愧。
比如要查看之前從/etc目錄下拷貝來(lái)的passwd文件:
$ cat passwd
可以加上-n參數(shù)顯示行號(hào):
$ cat -npasswd
nl命令大莫,添加行號(hào)并打印,是比cat -n更專(zhuān)業(yè)的行號(hào)打印命令官份。
簡(jiǎn)單列舉它的常用的幾個(gè)參數(shù):
-b :指定添加行號(hào)的方式只厘,主要有兩種:
-b a:表示無(wú)論是否為空行烙丛,同樣列出行號(hào)("cat
-n"就是這種方式)
-b t:只列出非空行的編號(hào)并列出(默認(rèn)為這種方式)
-n :設(shè)置行號(hào)的樣式,主要有三種:
-n ln:在行號(hào)字段最左端顯示
-n rn:在行號(hào)字段最右邊顯示羔味,且不加0
-n rz:在行號(hào)字段最右邊顯示河咽,且加0
-w :行號(hào)字段占用的位數(shù)(默認(rèn)為6位)
使用more和less命令分頁(yè)查看文件
more和less就是天生用來(lái)"閱讀"一個(gè)文件的內(nèi)容的,比如說(shuō)man手冊(cè)內(nèi)部就是使用的less來(lái)顯示內(nèi)容赋元。more命令比較簡(jiǎn)單忘蟹,只能向一個(gè)方向滾動(dòng),而less為基于more和vi(一個(gè)強(qiáng)大的編輯器)開(kāi)發(fā)们陆,功能更強(qiáng)大寒瓦。less的使用基本和more一致,具體使用請(qǐng)查看man手冊(cè)坪仇,這里只介紹more命令的使用。
使用more命令打開(kāi)passwd文件:
$ more passwd
打開(kāi)后默認(rèn)只顯示一屏內(nèi)容垃你,終端底部顯示當(dāng)前閱讀的進(jìn)度椅文。可以使用Enter鍵向下滾動(dòng)一行惜颇,使用Space鍵向下滾動(dòng)一屏皆刺,按下h顯示幫助,q退出凌摄。
使用head和tail命令查看文件
它們一個(gè)是只查看文件的頭幾行(默認(rèn)為10行羡蛾,不足10行則顯示全部)和尾幾行。拿passwd文件舉例锨亏,比如當(dāng)我們想要查看最近新增加的用戶痴怨,那么我們可以查看這個(gè)/etc/passwd文件,因?yàn)橄到y(tǒng)新增加一個(gè)用戶器予,會(huì)將用戶的信息添加到passwd文件的最后浪藻,這時(shí)候使用tail命令:
$ tail/etc/passwd
甚至更直接的只看一行,加上-n參數(shù)乾翔,后面緊跟行數(shù):
$ tail -n 1/etc/passwd
6.查看文件類(lèi)型
在Linux中文件的類(lèi)型不是根據(jù)文件后綴來(lái)判斷的爱葵,通常使用file命令查看文件的類(lèi)型:
$ file/bin/ls
說(shuō)明這是一個(gè)可執(zhí)行文件,運(yùn)行在64位平臺(tái)反浓,并使用了動(dòng)態(tài)鏈接文件(共享庫(kù))萌丈。
7.編輯文件
在Linux下面編輯文件通常使用專(zhuān)門(mén)的命令行編輯器比如(emacs,vim雷则,nano)辆雾,可以直接使用Linux內(nèi)部的vim學(xué)習(xí)教程,輸入如下命令即可開(kāi)始:
$ vimtutor
三巧婶、召喚眼睛
$ xeyes
可以使用如下命令將它放到后臺(tái)運(yùn)行:
$ nohup xeyes&
*五乾颁、作業(yè)
圖片版詳見(jiàn)http://t.cn/RaWorGA