終端
模式:
真正的終端:沒有圖形界面厦幅,只有黑底白字的全屏幕的終端沾鳄,只能通過鍵盤輸入,也可以稱為Console(控制臺(tái))确憨。
圖形模式的終端:一般我們?cè)赨buntu译荞,F(xiàn)edora等Linux發(fā)行版下日常使用的就是這種終端。你可以配置終端的外觀休弃,用鼠標(biāo)操作吞歼,也可以同時(shí)運(yùn)行其他應(yīng)用程序,等等玫芦。
當(dāng)打開終端浆熔,第一行所見的就叫命令行提示符。我的是這樣的:
oscar@oscar-laptop:~$
命令行提示符桥帆,顧名思義就是提示在其后面輸入命令医增。在你輸入新的一行命令前,這個(gè)命令提示符都會(huì)出現(xiàn)老虫。分別解析一下上邊代表什么意思:
oscar
這是當(dāng)前用戶的名字叶骨。Linux是一個(gè)多用戶的操作系統(tǒng),Windows也可以祈匙。不過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)的名字。上面說了在@后面的是一個(gè)域抒倚,所以 oscar@oscar-laptop 就表示oscar-laptop這臺(tái)電腦的oscar這個(gè)用戶褐着。oscar-laptop這個(gè)名稱在安裝此Linux系統(tǒng)時(shí)可以任意指定。
:
這是分隔符托呕,沒有什么特別的涵義含蓉。
~
這是當(dāng)前所在目錄的名字,會(huì)隨著用戶進(jìn)入不同目錄而改變镣陕。~表示當(dāng)前用戶的家目錄谴餐,有點(diǎn)類似Windows系統(tǒng)的“我的文檔”這個(gè)目錄。
$
指示你所具有的權(quán)限的字符呆抑。在Linux系統(tǒng)中有兩種可能:
-
$
:表示普通用戶岂嗓,有權(quán)限的限制(比如不能修改重要的系統(tǒng)文件等)。因此我的賬戶oscar就是一個(gè)普通用戶鹊碍。 -
#
:表示超級(jí)用戶厌殉,也就是root。表示你當(dāng)前以root這個(gè)用戶出現(xiàn)侈咕。root擁有所有權(quán)限公罕,是系統(tǒng)的大管家,想干什么就干什么耀销。
因此楼眷, oscar@oscar-laptop:~$
的意思就是:
你目前是以oscar這個(gè)用戶登錄;你的電腦名稱為oscar-laptop熊尉;你目前位于 ~ 目錄下罐柳,就是你的用戶家目錄。你是普通用戶狰住,擁有有限的權(quán)限张吉。
命令的參數(shù)
參數(shù)里可以包含多個(gè)參數(shù),由空格隔開催植,也可以包含數(shù)字肮蛹,字母勺择,等等÷字遥可以說省核,參數(shù)沒有固定的格式,但是一般來說還是遵循一定的規(guī)范的昆码。
- 短參數(shù)(一個(gè)字母)
最常用的參數(shù)形式就是一個(gè)短橫線后接一個(gè)字母芳撒。例如:
command -p
如果我們要一次加好幾個(gè)短參數(shù),可以用空格隔開未桥,例如:
command -p -a -T -c
多個(gè)短參數(shù)也可以合并在一起,例如上面的命令等價(jià)于:
command -paTc
請(qǐng)注意:參數(shù)的字母的大小寫是有區(qū)別的芥备,大寫的T和小寫的t通常表示不同意思冬耿。
- 長(zhǎng)參數(shù)(多個(gè)字母)
長(zhǎng)參數(shù)沒有短參數(shù)那么常用,但也是很有用的萌壳。短參數(shù)是以一個(gè)短橫線開始亦镶,而長(zhǎng)參數(shù)是以兩個(gè)短橫線開始的。例如:
command --parameter
如果有多個(gè)長(zhǎng)參數(shù)袱瓮,是不能像多個(gè)短參數(shù)那樣合并寫的缤骨。而是只能以空格隔開,例如:
command --parameter1 --parameter2
當(dāng)然我們也可以組合使用短參數(shù)和長(zhǎng)參數(shù)尺借,例如:
command -paTc --parameter1 --parameter2
有時(shí)候绊起,同一個(gè)意義的參數(shù)有短參數(shù)和長(zhǎng)參數(shù)兩種形式,效果是一樣的燎斩,可以任選哪一種虱歪。
參數(shù)的值
有一些參數(shù)你還需要給它賦一個(gè)值才行。而且短參數(shù)和長(zhǎng)參數(shù)的賦值的方式不盡相同栅表。
例如笋鄙,短參數(shù)賦值,通常是這樣的:
command -p 10
表示把10賦值給p參數(shù)怪瓶。
如果是長(zhǎng)參數(shù)萧落,則一般是這樣賦值:
command --parameter=10
長(zhǎng)參數(shù)的方式更加容易理解,但是不如短參數(shù)那么簡(jiǎn)潔洗贰。
其他參數(shù)
正如我們說過的找岖,參數(shù)的形式?jīng)]有絕對(duì)的準(zhǔn)則。我們上面給出的規(guī)則是一般的哆姻,有些命令的參數(shù)格式可能是我們沒怎么見過的宣增。
有些參數(shù)就不一樣,而且取決于命令矛缨。例如對(duì)于 ls 這個(gè)命令爹脾,假如后面帶了一個(gè)參數(shù)帖旨,這個(gè)參數(shù)是一個(gè)目錄的路徑名的話,那么就會(huì)列出此目錄下的文件灵妨。
ls linux_c/
文件和目錄
兩種類型的文件
簡(jiǎn)單起見解阅,我們把Linux下的文件分為兩大類:
普通的文件:這是我們已經(jīng)熟知的文件類型,這樣的文件包括:文本類型的文件(.txt泌霍,.doc货抄,.odt,等等)朱转,聲音文件(.wav蟹地,.mp3,.ogg)藤为,還有程序怪与,等。簡(jiǎn)單來說缅疟,這些文件在Windows下也有分别。
特殊的文件:其他一些文件是特殊的,因?yàn)樗鼈儽硎疽恍〇|西存淫。例如耘斩,你的光盤驅(qū)動(dòng)器就是這類特殊的文件。Windows把電腦里的東西區(qū)分為文件和非文件桅咆,但Linux不是這樣括授。對(duì)于Linux來說,一切都是文件轧邪!
根目錄
在一個(gè)文件系統(tǒng)中褐澎,我們總有一個(gè)被稱為根目錄的東西假勿,這個(gè)根目錄里包含了所有其他目錄和文件炫狱。Linux中有且只有一個(gè)根目錄户侥,就是
/
是的,就是用一個(gè)斜杠表示硕糊。沒有比根目錄再高一階的目錄了院水,因?yàn)闆]有目錄包含根目錄,根目錄就是Linux最頂層的目錄简十。
根目錄的直屬子目錄
bin:是英語(yǔ)binary的縮寫檬某,表示“二進(jìn)制文件”(我們知道可執(zhí)行文件是二進(jìn)制的)。包含了會(huì)被所有用戶使用的可執(zhí)行程序螟蝙。
boot:英語(yǔ)boot表示“啟動(dòng)”恢恼。包含與Linux啟動(dòng)密切相關(guān)的文件。
dev:是英語(yǔ)device的縮寫胰默,表示“設(shè)備”场斑。包含外設(shè)漓踢。我們之后會(huì)仔細(xì)研究這個(gè)目錄,因?yàn)樗锩娴淖幽夸浡┮恳粋€(gè)對(duì)應(yīng)一個(gè)外設(shè)喧半。比如代表我們的光盤驅(qū)動(dòng)器的文件就會(huì)出現(xiàn)在這個(gè)目錄下面。
etc:etc有點(diǎn)不能顧名思義了青责。因?yàn)閑tc是法語(yǔ)et cetera的縮寫挺据,翻成英語(yǔ)就是and so on,表示“等等”脖隶。包含系統(tǒng)的配置文件扁耐。至于為什么在/etc下面存放配置文件, 按照原始的UNIX的說法(Linux文件結(jié)構(gòu)參考UNIX的教學(xué)實(shí)現(xiàn)MINIX) 产阱,這下面放的都是一堆零零碎碎的東西做葵, 就叫etc好了。這其實(shí)是個(gè)歷史遺留心墅。
home:英語(yǔ)home表示“家”。用戶的私人目錄榨乎。之前我們提過一些怎燥,在這個(gè)目錄中,我們放置私人的文件蜜暑,有點(diǎn)類似Windows中的Documents這個(gè)文件夾铐姚,也叫“我的文檔”。Linux中的每個(gè)用戶(除了大管家用戶肛捍,也就是超級(jí)用戶root外隐绵,root因?yàn)樘珔柡Γ瑩碛兴袡?quán)限拙毫,所以比較“任性”依许,跟普通用戶不住在一起)都在home目錄下有自己的一個(gè)私人目錄。比如我的用戶名是oscar缀蹄,那么我的私人目錄就是/home/oscar峭跳;如果另一個(gè)用戶叫jean,那么他的私人目錄就是/home/jean缺前。
lib:是英語(yǔ)library的縮寫蛀醉,表示“庫(kù)”。包含被程序所調(diào)用的庫(kù)文件衅码,例如.so結(jié)尾的文件拯刁,在Windows下這樣的庫(kù)文件是以.dll結(jié)尾的。
media:英語(yǔ)media表示“媒體”逝段。當(dāng)一個(gè)可移動(dòng)的外設(shè)(比如USB盤垛玻,SD卡割捅,DVD,光盤等等)插入電腦時(shí)夭谤,Linux就可以讓我們通過media的子目錄來訪問這些外設(shè)中的內(nèi)容棺牧。
mnt:是英語(yǔ)mount的縮寫,表示“掛載”朗儒。有點(diǎn)類似media颊乘,但一般用于臨時(shí)掛載一些裝置。
opt:是英語(yǔ)optional application software package的縮寫醉锄,表示“可選的應(yīng)用軟件包”乏悄。用于安裝多數(shù)第三方軟件和插件。
root:是英語(yǔ)“根”的意思恳不。超級(jí)用戶root的家目錄/主目錄檩小。一般的用戶的家目錄是位于/home下,不過root用戶是個(gè)例外烟勋。之前的課程我們也提到過规求,root是整個(gè)系統(tǒng)的超級(jí)用戶,擁有一切權(quán)限卵惦。
sbin:是英語(yǔ)system binary的縮寫阻肿,表示“系統(tǒng)二進(jìn)制文件”。比起bin目錄多了一個(gè)前綴system沮尿,所以包含的是系統(tǒng)級(jí)的重要可執(zhí)行程序丛塌。
srv:是英語(yǔ)service的縮寫,表示“服務(wù)”畜疾。包含一些網(wǎng)絡(luò)服務(wù)啟動(dòng)之后所需要取用的數(shù)據(jù)赴邻。
tmp:是英語(yǔ)temporary的縮寫,表示“臨時(shí)的”啡捶。普通用戶和程序存放臨時(shí)文件的地方姥敛。
usr:是英語(yǔ)Unix Software Resource的縮寫,表示“Unix操作系統(tǒng)軟件資源”(也是個(gè)歷史遺留的命名)瞎暑。這個(gè)目錄是最龐大的目錄之一徒溪。有點(diǎn)類似Windows中的C:\Windows和C:\Program Files這兩個(gè)文件夾的集合。在這里面安裝了大部分用戶要調(diào)用的程序金顿。
var:是英語(yǔ)variable的縮寫臊泌,表示“動(dòng)態(tài)的,可變的”揍拆。通常包含程序的數(shù)據(jù)渠概,比如一些log(日志)文件,記錄電腦中發(fā)生了什么事。
pwd 和 which
Linux系統(tǒng)安裝后播揪,包含了很多的文件和目錄(雖然其實(shí)都是文件)贮喧,我們很容易迷失在“茫茫文海”中猪狈。
當(dāng)然我們不可能一下子列出Linux中的所有文件箱沦,那不現(xiàn)實(shí)。但是我們可以向你展示如何在Linux的目錄樹中來回穿梭雇庙,你可以知道此刻你位于哪個(gè)目錄下谓形。就好比能看懂Linux這個(gè)很大的“地圖”。
pwd 是英語(yǔ)Print Working Directory的縮寫疆前,表示“打印當(dāng)前工作目錄”寒跳。
which 命令:獲取命令的可執(zhí)行文件的位置,which命令用于顯示一個(gè)命令的對(duì)應(yīng)的可執(zhí)行程序的位置竹椒⊥可能聽起來有點(diǎn)拗口。
在Linux下胸完,每一條命令其實(shí)對(duì)應(yīng)了一個(gè)可執(zhí)行程序书释。我們?cè)诮K端中輸入命令,再按回車的時(shí)候赊窥,其實(shí)就是執(zhí)行了對(duì)應(yīng)的那個(gè)程序征冷。比如說,pwd命令對(duì)應(yīng)的pwd程序就是存在于Linux中的誓琼。
一個(gè)命令,其實(shí)只不過是一個(gè)我們隨時(shí)可以調(diào)用的程序罷了肴捉。
which命令接受一個(gè)參數(shù)腹侣,也就是你想要知道其可執(zhí)行程序位于哪里的那個(gè)命令。
我們來測(cè)試一下齿穗,就拿pwd命令來測(cè)試好了:
which pwd
得到:
/bin/pwd
因此傲隶,pwd命令對(duì)應(yīng)的pwd這個(gè)可執(zhí)行程序位于/bin目錄中。
我們也可以注意到Linux中的可執(zhí)行程序和Windows中不太一樣窃页,在Windows中可執(zhí)行程序一般以.exe結(jié)尾跺株,而Linux中一般是沒有后綴名的。
Linux中的可執(zhí)行程序也不是都位于相同目錄的脖卖。我們可以來測(cè)試一下which命令本身對(duì)應(yīng)的可執(zhí)行程序位于哪里:
which which
我們可以看到乒省,which命令對(duì)應(yīng)的可執(zhí)行程序which并不位于/bin中,而是在/usr/bin中畦木。
ls命令:列出文件和目錄
Ubuntu的終端默認(rèn)是有顏色標(biāo)注的袖扛,一般來說:
藍(lán)色 --> 目錄
綠色 --> 可執(zhí)行文件
紅色 --> 壓縮文件
淺藍(lán)色 --> 鏈接文件
灰色 --> 其他文件
如果在你的終端里沒有標(biāo)明顏色,那么你可以加上參數(shù)--color=auto
來開啟顏色標(biāo)注。如下:
ls --color=auto
如果你不需要顏色標(biāo)注蛆封,那么可以用--color=none
來關(guān)閉顏色標(biāo)注唇礁。如下:
ls --color=none
當(dāng)然,為了避免每次都輸入這么一串額外的參數(shù)惨篱,其實(shí)我們可以在一個(gè)配置文件里修改盏筐,使得永久顯示顏色或不顯示顏色。
-a :顯示所有文件和目錄砸讳,包括隱藏的
在Linux琢融,以點(diǎn)(.
)開頭的文件是隱藏文件,不過這里不包括開頭的兩個(gè) .
和 ..
绣夺,這兩個(gè)的含義如下:
-.
(一個(gè)點(diǎn))表示當(dāng)前目錄吏奸。在當(dāng)前情況下,就是 /home/oscar 陶耍。
-..
(兩個(gè)點(diǎn))表示上一級(jí)目錄奋蔚。因?yàn)楫?dāng)前目錄是/home/oscar,所以上一級(jí)目錄就是 /home 烈钞。
我們有一個(gè)大寫的參數(shù) -A泊碑,它的作用和小寫的-a幾乎一樣,唯一不同就是-A不列出 . 和 .. 這兩個(gè)文件毯欣。
-l :詳細(xì)列表
-l 這個(gè)參數(shù)算是ls命令最常用的了馒过。加上-l參數(shù)使得ls命令列出一個(gè)顯示文件和目錄的詳細(xì)信息的列表。
-h:以Ko酗钞,Mo腹忽,Go的形式顯示文件大小
當(dāng)我們僅用ls -l時(shí),列出的文件詳細(xì)信息中砚作,文件的大小是以字節(jié)為單位的窘奏。有時(shí)這不是太直觀。我們可以再加一個(gè)參數(shù)-h葫录,h是humain readable的縮寫着裹,表示“適合人類閱讀的”。所以我們的命令變成了:
ls -lh
-t:按文件最近一次修改時(shí)間排序
t是time的縮寫米同。
du:顯示目錄包含的文件大小
du命令也是很有用的骇扇,因?yàn)樗梢宰屛覀冎牢募湍夸浰嫉目臻g大小。
雖然ls -l命令也可以顯示文件和目錄的大小面粮,但是du命令統(tǒng)計(jì)的才是真正的文件大小少孝。du命令會(huì)深入遍歷每個(gè)目錄的子目錄,把所有文件的大小都做一個(gè)統(tǒng)計(jì)熬苍。
du是英語(yǔ)disk usage的縮寫韭山,表示“磁盤使用/占用”。
我們的du命令也可以使用參數(shù)。
-h:以Ko钱磅,Mo梦裂,Go的形式顯示文件大小
-a:顯示文件和目錄的大小
默認(rèn)情況下,du命令只顯示目錄的大小盖淡。如果加上-a參數(shù)年柠,則會(huì)顯示目錄和文件的大小。-s:只顯示總計(jì)大小
文件操縱
cat命令和less命令:顯示文件內(nèi)容褪迟,這兩個(gè)命令只能顯示文件內(nèi)容冗恨,并不能對(duì)文件內(nèi)容進(jìn)行修改。
cat命令
一次性顯示文件的所有內(nèi)容味赃,如果你想要在顯示的文件內(nèi)容上加上行號(hào)掀抹,那么你可以加上 -n 這個(gè)參數(shù)。
less命令
分頁(yè)顯示文件內(nèi)容
head命令和tail命令:顯示文件的開頭和結(jié)尾心俗。
head命令
顯示文件開頭傲武,默認(rèn)情況下,head會(huì)顯示文件的頭10行城榛。我們也可以指定顯示的行數(shù)揪利,用 -n 這個(gè)參數(shù):
head -n 5 syslog
就會(huì)顯示文件的頭5行。
tail命令
顯示文件結(jié)尾狠持。默認(rèn)情況下疟位,tail會(huì)顯示文件的尾10行。
我們也可以指定顯示的行數(shù)喘垂,用 -n 這個(gè)參數(shù):
tail -n 5 syslog
就會(huì)顯示文件的尾5行甜刻。
tail命令還可以配合 -f 參數(shù)來實(shí)時(shí)追蹤文件的更新:
tail -f syslog
這樣,就會(huì)檢查文件是否有追加內(nèi)容正勒,如果有得院,就顯示新增內(nèi)容。
默認(rèn)地昭齐,tail -f會(huì)每過1秒檢查一下文件是否有新內(nèi)容。你也可以指定間隔檢查的秒數(shù)矾柜,用 -s 參數(shù):
tail -f -s 4 syslog #每隔4秒檢查一次文件是否有更新
tail -f -s 2.5 syslog #每隔2.5秒檢查一次文件是否有更新
可以用快捷鍵 Ctrl + c 來終止tail -f 命令阱驾。
touch命令和mkdir命令:創(chuàng)建文件和目錄
touch命令
創(chuàng)建一個(gè)空白文件。事實(shí)上怪蔑,Linux沒有一個(gè)命令是專門用來創(chuàng)建一個(gè)空白文件的里覆。touch命令其實(shí)一開始的設(shè)計(jì)初衷是修改文件的時(shí)間戳,就是可以修改文件的創(chuàng)建時(shí)間或修改時(shí)間缆瓣,讓電腦以為文件是在那個(gè)時(shí)候被修改或創(chuàng)建的喧枷。但是touch命令如果后面跟著的文件名是不存在的,那么它就會(huì)新建一個(gè)。
事實(shí)上隧甚,我們可以用touch命令同時(shí)創(chuàng)建多個(gè)文件:
touch new_file new_file_2
如果我所要?jiǎng)?chuàng)建的文件的名字里有空格怎么辦呢车荔?
很簡(jiǎn)單,加上雙引號(hào):
touch "new file"
mkdir
創(chuàng)建一個(gè)目錄戚扳。
mkdir也可以同時(shí)創(chuàng)建好幾個(gè)目錄:
mkdir new_folder new_folder_2
如果我所要?jiǎng)?chuàng)建的目錄的名字里有空格怎么辦呢忧便?
很簡(jiǎn)單,加上雙引號(hào):
mkdir "new folder"
我們還可以用 -p 參數(shù)來遞歸創(chuàng)建目錄結(jié)構(gòu)帽借。
比如:
mkdir -p one/two/three
cp命令和mv命令:拷貝文件和移動(dòng)文件
cp命令
拷貝文件或目錄
cp是英語(yǔ)copy的縮寫珠增,表示“拷貝”。所以砍艾,顧名思義蒂教,此命令用于拷貝。cp命令不僅可以拷貝單個(gè)文件脆荷,還可以拷貝多個(gè)文件凝垛,也可以拷貝目錄。
復(fù)制文件到另一個(gè)目錄只需要把cp命令的第二個(gè)參數(shù)換成目錄名简烘。
cp new_file one/
拷貝目錄
要拷貝目錄苔严,只要在cp命令之后加上-R參數(shù)(注意是大寫的R)」屡欤拷貝的時(shí)候届氢,目錄中的所有內(nèi)容(子目錄和文件)都會(huì)被拷貝。
使用通配符*
*號(hào)(星號(hào))是很常用的正則表達(dá)式的符號(hào)覆旭,被稱為“通配符”退子,
所以如果我們用如下命令:
cp *.txt folder
那么就會(huì)把當(dāng)前目錄下所有txt文件拷貝到folder這個(gè)子目錄當(dāng)中。
又如:
cp ha* folder
那么就會(huì)把當(dāng)前目錄下凡是以ha開頭的文件都拷貝到folder目錄中型将。
mv命令
移動(dòng)文件
mv是英語(yǔ)move的縮寫寂祥,表示“移動(dòng)”。mv命令有兩個(gè)功能:
移動(dòng)文件(或目錄)
重命名文件(或目錄)
用mv命令來移動(dòng)目錄很簡(jiǎn)單七兜,不需要額外的參數(shù)丸凭,就跟移動(dòng)文件一樣:
mv new_folder one
當(dāng)然,我們也可以使用通配符腕铸。
除了移動(dòng)文件惜犀,mv命令還可以用于重命名文件。
事實(shí)上狠裹,Linux中沒有一個(gè)專門的命令用于重命名文件虽界。之所以mv命令可以重命名文件,其實(shí)還是歸因于它的機(jī)制:移動(dòng)文件涛菠。經(jīng)過mv移動(dòng)之后莉御,原始文件變成了新的名字的文件撇吞,文件內(nèi)容是不變的,這不就相當(dāng)于重命名了嗎礁叔?
mv new_file renamed_file
以上命令會(huì)將new_file重命名為renamed_file牍颈。
rm命令
刪除文件和目錄
rm命令可以刪除一個(gè)文件,多個(gè)文件晴圾,目錄颂砸,甚至你的整個(gè)Linux系統(tǒng)(如果你愿意的話)。
rm new_file_copy
以上命令刪除當(dāng)前目錄下的new_file_copy這個(gè)文件死姚。
我們也可以同時(shí)刪除多個(gè)文件人乓,只要用空格隔開每個(gè)文件即可。例如:
rm file1 file2 file3
-i 參數(shù):向用戶確認(rèn)是否刪除
保險(xiǎn)起見都毒,用rm命令刪除文件時(shí)色罚,可以加上 -i 參數(shù),這樣對(duì)于每一個(gè)要?jiǎng)h除的文件账劲,終端都會(huì)詢問我們是否確定刪除戳护。i是英語(yǔ)inform的縮寫,表示“告知瀑焦,通知”腌且。
有兩種回答:
y:是英語(yǔ)yes的縮寫,表示“是”榛瓮。那么回車確認(rèn)后铺董,文件就刪除了。
n:是英語(yǔ)no的縮寫禀晓,表示“否”精续。那么回車確認(rèn)后,文件不會(huì)刪除粹懒。
-f參數(shù):慎用重付,不會(huì)詢問是否刪除,強(qiáng)制刪除
如果在rm命令后加上-f參數(shù)凫乖,那么終端不會(huì)詢問用戶是否確定刪除文件确垫,不論如何,文件會(huì)立刻被強(qiáng)制刪除帽芽。
f是英語(yǔ)force的縮寫删掀。
rm -f file
以上命令會(huì)強(qiáng)制刪除file文件。
-r參數(shù):遞歸地刪除
r是英語(yǔ)recursive的縮寫嚣镜,表示“遞歸的”爬迟。所以使用-r參數(shù)橘蜜,可以使rm命令刪除目錄菊匿,并且遞歸刪除其包含的子目錄和文件付呕。
這個(gè)命令也挺危險(xiǎn)的,用得不好可能你的子目錄和文件都沒了跌捆。
rm -r one
以上命令會(huì)刪除one這個(gè)目錄徽职,包括其子目錄和文件。
其實(shí)佩厚,也存在一個(gè)命令
rmdir
看著和rm -r
挺像的姆钉。但是這個(gè)命令有個(gè)局限性:只能刪除空的目錄。
rm命令加-r和-f參數(shù):極為危險(xiǎn)抄瓦!
千萬(wàn)不要這樣做潮瓶! => rm -rf /* 或者 rm -rf /
ln命令
創(chuàng)建鏈接
事實(shí)上,Linux下有兩種鏈接類型:
Physical link:物理鏈接或硬鏈接钙姊。
Symbolic link:符號(hào)鏈接或軟連接毯辅。
為了區(qū)分這兩種鏈接類型的不同,我們首先來談一談如Linux這樣的操作系統(tǒng)中文件在硬盤上的存放煞额。
文件在硬盤上存儲(chǔ)時(shí)思恐,大致來說(請(qǐng)注意我用了“大致來說”),每個(gè)文件有兩部分:
文件名
文件內(nèi)容
文件名的列表是儲(chǔ)存在硬盤的其他地方的膊毁,和文件內(nèi)容分開存放胀莹,這樣方便Linux管理。
注意:為什么我上面要用“大致說來”呢婚温?因?yàn)榇颂幬覀兒?jiǎn)化了描述描焰,其實(shí)每個(gè)文件有三部分:
文件名
權(quán)限
文件內(nèi)容
我們這里簡(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)建硬鏈接和軟連接赘娄。
創(chuàng)建硬鏈接
比之軟鏈接仆潮,硬鏈接的使用幾率小很多。但是我們還是要學(xué)習(xí)一下遣臼,畢竟可能會(huì)用到鸵闪。
硬鏈接的原理:使鏈接的兩個(gè)文件共享同樣的文件內(nèi)容,也就是同樣的inode暑诸。
所以一旦文件1和文件2之間有了硬鏈接蚌讼,那么你修改文件1或文件2,其實(shí)修改的是相同的一塊內(nèi)容个榕。只不過我們可以用兩個(gè)文件名來取到文件內(nèi)容篡石。
硬鏈接有一個(gè)缺陷:只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的硬鏈接西采。但是軟鏈接可以指向文件或目錄凰萨。當(dāng)然了,事實(shí)上械馆,通過一些參數(shù)的修改胖眷,也可以創(chuàng)建指向目錄的硬鏈接,但是比較復(fù)雜霹崎,這里不再詳述珊搀。所以對(duì)于目錄的鏈接,我們一般都是用軟鏈接尾菇。
硬鏈接原理圖:
要?jiǎng)?chuàng)建硬鏈接境析,直接用ln命令,不加任何參數(shù):
ln file1 file2
我們可以用ls -i命令查看一下(-i參數(shù)可以顯示文件的inode)派诬。對(duì)于硬鏈接來說劳淆,刪除任意一方的文件,共同指向的文件內(nèi)容并不會(huì)從硬盤上被刪除默赂。
我們用ls -l命令查看文件信息的時(shí)候沛鸵,第二列的那個(gè)2,其實(shí)是表示擁有相同inode號(hào)的文件數(shù)缆八。不難理解曲掰,因?yàn)樗鼈冎赶蛳嗤奈募?nèi)容朝刊,所以共享一個(gè)inode。
這個(gè)第二列的數(shù)字蜈缤,一般來說對(duì)于普通文件,都是1冯挎,因?yàn)椴煌募node不同嘛底哥。對(duì)于目錄來說,這第二列的數(shù)字標(biāo)明目錄內(nèi)所含文件數(shù)目房官。
創(chuàng)建軟鏈接
其實(shí)趾徽,軟鏈接才是真正像我們?cè)赪indows下的快捷方式的,其原理很相似翰守。
創(chuàng)建硬鏈接是ln不帶任何參數(shù)孵奶,但是要?jiǎng)?chuàng)建軟鏈接需要加上-s參數(shù)。s是symbolic(符號(hào)的)的縮寫蜡峰。
ln -s file1 file2
file2指向的不再是file1的文件內(nèi)容(和硬鏈接不同)了袁,而是指向file1的文件名。
軟鏈接原理圖:
用ls -l命令查看一下湿颅,會(huì)發(fā)現(xiàn)形式和之前的硬鏈接不一樣噢载绿,file2的信息是這樣的: file2->file1,表示file2指向file1油航。
而且file2前面的權(quán)限那里的第一個(gè)字母變成了l崭庸,表示link(鏈接)。之前硬鏈接的時(shí)候是沒有l(wèi)的谊囚,硬鏈接外表看起來就和普通文件類似怕享。
我們用ls -l命令查看文件信息的時(shí)候,第二列的那個(gè)1镰踏,表示擁有相同inode號(hào)的文件數(shù)函筋。不難理解,因?yàn)閒ile2指向file1奠伪,它們并沒有指向同一塊文件內(nèi)容驻呐,所以它們的inode號(hào)不相同插掂。
軟鏈接的特點(diǎn):
如果我們刪除了file2贝咙,沒什么大不了困肩,file1不會(huì)受到影響酷宵。但是如果刪除了file1信不,那么file2會(huì)變成“死鏈接”蛉腌,因?yàn)橹赶虻奈募灰娏恕?/p>
-
軟鏈接可以指向目錄偿荷,硬鏈接不行檐春。
可以看到顽聂,一旦刪除了file1肥惭,那么file2就變成了紅色盯仪,是標(biāo)明此軟鏈接已經(jīng)損壞。因?yàn)閒ile2指向的文件file1已經(jīng)被刪除蜜葱,file2不知道要指向哪里了全景。