Linux 從 0 到 1(一) - 終端簡(jiǎn)介换可,文件與目錄以及相關(guān)操作,常用命令

終端

模式:

  • 真正的終端:沒有圖形界面厦幅,只有黑底白字的全屏幕的終端沾鳄,只能通過鍵盤輸入,也可以稱為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不知道要指向哪里了全景。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市牵囤,隨后出現(xiàn)的幾起案子爸黄,更是在濱河造成了極大的恐慌,老刑警劉巖揭鳞,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炕贵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡野崇,警方通過查閱死者的電腦和手機(jī)称开,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乓梨,“玉大人鳖轰,你說我怎么就攤上這事》龆疲” “怎么了脆霎?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狈惫。 經(jīng)常有香客問我睛蛛,道長(zhǎng),這世上最難降的妖魔是什么胧谈? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任忆肾,我火速辦了婚禮,結(jié)果婚禮上菱肖,老公的妹妹穿的比我還像新娘客冈。我一直安慰自己,他們只是感情好稳强,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布场仲。 她就那樣靜靜地躺著,像睡著了一般退疫。 火紅的嫁衣襯著肌膚如雪渠缕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天褒繁,我揣著相機(jī)與錄音亦鳞,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛燕差,可吹牛的內(nèi)容都是我干的遭笋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼徒探,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瓦呼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起测暗,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤央串,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后偷溺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钱贯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年挫掏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩命。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尉共,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弃锐,到底是詐尸還是另有隱情袄友,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布霹菊,位于F島的核電站剧蚣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏旋廷。R本人自食惡果不足惜鸠按,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饶碘。 院中可真熱鬧目尖,春花似錦、人聲如沸扎运。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豪治。三九已至洞拨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間负拟,已是汗流浹背扣甲。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琉挖。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓启泣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親示辈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寥茫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355