目錄
前言:
前情提示:
一、迅速認識一下幾個基礎指令的用法
二、ls:Linux的 "記錄透視鏡",想看什麼隨你挑
2.1 顯示文件元數據:ls -l
2.2 列出指定目錄:ls [路徑]
2.3 獲取全列表:ls -a(包含隱藏項)
三、確認當前位置:pwd
3.1 路徑分隔符對比:Windows 反斜槓 vs Linux 正斜槓
四、切換工作目錄:cd 命令
4.1 向上移動一級:cd ..
4.2 切換至當前目錄:cd .
4.3 命令行導航基礎:理解相對與絕對路徑
4.3.1 實用查詢:“我是誰?”—— whoami 命令
4.4 基礎導航:進入指定子目錄
五、創建空的普通檔案:採用 touch 命令
5.1 深入洞察:stat 查看文件詳細信息
六、目錄管理:使用 mkdir 創建目錄
6.1 遞歸創建目錄:mkdir -p
6.1.1 目錄結構可視化:tree
七、刪除操控:rmdir 與 rm 命令
7.1 刪除空目錄:rmdir 命令
7.2 文件與目錄刪除:rm
結尾
前言:
新手村的你,是否被這個魔咒困住了:「指令輸錯 → 報錯 → 查教程 → 繼續錯」。ls 看了不懂,rm 用了就慫。
別慌,這不是你的問題,只是指令的「底層邏輯」還沒打通。本文用 10 分鐘,帶你打通 ls / pwd / cd / touch / mkdir / rm 這六大基礎的任督二脈,看完不再死記硬背,讓你的 Linux 血脈瞬間覺醒!我們的目標不僅是讓您「知其然」,更要「知其所以然」,從而自信地邁出 Linux 操作的第一步。
前情提示:
一、快速認識一下幾個基本指令的用法
這裏只是為了讓大家粗略認識一下,並不嚴謹,大家不用記,指令的用法博主後面會一個一個結合Linux系統的理論知識詳細地去介紹,大家以後面為準。
- 通過clear (清除歷史命令)——如果指令已經寫滿屏幕了,能夠運用clear進行清除操作
- pwd——查看當前路徑(查看自己當前在哪條工作路徑下)
- cd——更改工作路徑
- ls——羅列當前路徑下的文件
- mkdir——新建文件夾(文件夾是Windows的講法,Linux裏面叫目錄)
- cd ..——回退到上一個路徑(相當於windows中的返回)
ok,現在大家“見過豬跑了”,接下來我們“吃豬肉了”!博主會對上面的指令一一介紹!
二、ls:Linux的 "材料透視鏡",想看什麼隨你挑
- ls (list)——羅列當前路徑下的所有的資料詳情
之前博主已經在/root/118路徑下mkdir了一個dir1目錄,所以這裏ls出來的就是dir1。
ok ,大家來看這句話:羅列當前路徑下的所有的文件詳情。這裏面有兩個點需要我們注意:
- 如何理解文件?
ok,若是我們在windows系統中新建一個空文件(比如一個空的記事本,大小為0),那這個空的資料(或者説這個空的記事本)佔不佔空間?
其實是佔空間的
為什麼?肯定會有很多小夥伴説:不對啊,這是一個空的文件怎麼會佔空間呢?
ok,我們想一想,都需要保存下來,就是一個空的文件是不是有名稱,是不是有文件類型,是不是有創建的時間,這些我們是不我們將文件的名稱、文件的類型、創建時間……這些信息稱為材料的屬性數據,也叫做元數據,元數據也是數據,既然是數據,我們就應該保存下來
其實記錄是由兩部分組成的:
所以即使文件是空的,也要存儲這些文件屬性;學習資料的本質無非就是對內容或者對屬性做操控
- 什麼叫做當前路徑?
所謂當前路徑——就是默認所處的路徑,就叫做當前路徑
Linux平台中為什麼要有路徑?因為我得訪問文件,所以要有路徑
那為什麼有了路徑,我就可以訪問數據呢?基於路徑是有唯一性的,我們可以通過唯一的路徑找到唯一的文件
- 總結一下:
通過上面的學習,我們就知道:
- ls——羅列的是當前路徑下的所有文件的文件名(只羅列文件名,文件名是屬性)
ok,大家知道一個文檔不僅僅只有文件名一個屬性,還有一些其他的屬性,例如:文件類型,創建時間……那我們怎麼通過指令來查看這些信息呢?
2.1 顯示文件元素材:ls -l
- ls -l 顯示更多的文件屬性(大小,時間,文件名……)
也許會有UU想問:ls -l,中的“-”是什麼東西?其實這是一個選項符,通過這個選項符,我們可以利用指定命令的擴展效果
那如果此時我們想去查看任意路徑下有哪些文件,我們該怎麼做呢?大家能夠使用下面的命令
2.2 列出指定目錄:ls [路徑]
- ls [路徑] 顯示指定路徑下的所有文件名
有了 ls [路徑] ,我們就可以在任意的目錄下去查看我們想查看目錄下有哪些文件了!!!
2.3 獲取全列表:ls -a(包含隱藏項)
ls -a 顯示當前路徑下的隱藏文件
,隱藏項!哪裏來的隱藏項?
某些檔案無法通過常規命令直接查看,但使用ls -a命令即可表現隱藏項目!
憑藉上圖,我們行清晰的看出,. 文件 和 .. 文件 就是這個隱藏項,在Linux系統中,我們將這些以“.”開頭的記錄稱為隱藏檔案(. 文件 和 .. 文件 就是隱藏文件)
- 注意:
ls 表明時默認不表明隱藏文件(以“.”開頭的文件),. 材料 和 .. 文件 在Linux系統中會隱藏文件名,默認看不到
依據上圖我們允許看到,ls -a 會顯示當前路徑下的所有文件的文件名(包括隱藏文件的文件名和未被隱藏文件的文件名)
至於 .文件 和 ..文件 是什麼?後面會進行介紹——
那如果我們想顯示隱藏材料並且顯示更詳細的文件屬性,該怎麼辦?
我們可以將效果相同的選項進行組合——
總結:選項可以組合實現,選項可以自由組合!!!
三、確認當前位置:pwd
- pwd 查看當前我處於哪個路徑下(確認位置)
表示當前我處於/root/118這個路徑下
3.1 路徑分隔符對比:Windows 反斜槓 vs Linux 正斜槓
在windows中我們應用“\”作為路徑分隔符,而在Linux中我們使用“/”作為路徑分隔符
四、切換工作目錄:cd 命令
- cd 命令——更改路徑
4.1 向上移動一級:cd ..
通過前面的學習,我們知道 .. 文件是一個隱藏文件,默認是看不到的,但是可以通過ls -a 查看隱藏文件
那這個.. 文件中存的到底是什麼?
通過上級路徑就是“..”就是相當於當前路徑,上級路徑是誰。我們能夠認為 ..資料 中存放的
既然是這樣的話,我們就可以將cd 和 .. 連接起來,這樣就可以實現返回上級路徑的操控——
Linux中的 .. 就想當於windows中的回退,windows中可以在任何路徑下都可以回退,Linux在任何目錄中都有 .. 標記上級路徑
通過但是這裏有個問題,大家能夠一直回退嗎?
ok,當我們回退到一定程度,就不讓回退了,Linux中會停在 /(根目錄)的目錄下
這裏有個問題,我們知道windows管理文件使用的是樹形結構,那Linux管理文件,使用的也是樹形結構嗎?
ok,是的,Linux管理文件,啓用的也是樹形結構管理文件的,根目錄是目錄,目錄裏面可以套目錄(目錄可以認為是windows中的文件夾)
假設bin目錄裏面有個hello.txt文件——
那我該怎麼找到這個hello.txt文件呢?
這樣:/usr/bin/hello.txt就是我們是不是進入根目錄/,到usr,再到bin中找到hello.txt,也就
- 我們稱這種:/usr/bin/hello.txt 從根目錄開始的路徑稱為絕對路徑
處於樹的葉子節點的文件為普通文件或者空目錄,路上節點(除葉子節點)一定是一個目錄
ok,通過上面的學習,我們再來看一下pwd——
/root/118 表示當前處於根目錄下的root目錄下的118目錄裏面
總結:cd .. 路徑回退(回退到上級路徑)
那 . 表示什麼呢?ok,接下來,我們就來看一下該 . 表示什麼。
4.2 切換至當前目錄:cd .
- . 表示當前路徑,cd . 就表示進入你的當前路徑
我們先來看看為什麼要有 . ?
:先找到這個材料,我們可以通過路徑來找到這個文件(允許通過絕對路徑或者相對路徑)就是當我們運行一個可執行程序時,將可執行程序從磁盤加載到內存,前提
假設118目錄裏面有個test.exe可執行程序,此時我們想運行這個可執行程序,我們能夠這樣:
- 絕對路徑:/root/118/test.exe 告訴系統,test.exe在什麼路徑下,test.exe在根目錄下的root目錄下的118目錄下
但是此時突然想起來,我們就在根目錄下的root目錄下的118目錄,那我們是不是就可以直接寫test.exe
不可以直接寫test.exe會報錯,因為系統找不到該test.exe(雖説我們知道這個test.exe在根目錄下的root目錄下的118目錄裏面,但是平台不知道啊),所以必須給可執行程序帶路徑
- 相對路徑
帶/root/118顯得有點麻煩,怎麼辦呢?就是可
通過上面的學習,我們知道. 表示當前路徑,我們可以這樣寫——./test.exe
告訴系統要執行的是當前路徑下的test.exe
“.”可以幫助我們快捷進行路徑定位,輔助我們找到test.exe在哪個路徑下
ok,像這種 ./test.exe 不從根目錄開始,以相對於當前位置開始的路徑稱為相對路徑!!!
總結: “.”可以幫助我們敏捷進行路徑定位,援助我們找到文件在哪個路徑下
假設當前在bin路徑下,我們想找到good.txt,該怎麼找?
通過ok,那我們就能夠對上面運行test.exe可執行程序進行一個總結——
通過從上面我們可以看出絕對路徑在哪裏都能夠使用
總結一下:
- 相對路徑通常進行命令行操作
- 絕對路徑路徑通常會在配置文件中使用
4.3 命令行導航基礎:理解相對與絕對路徑
ok,上面説了那麼多相對路徑和絕對路徑,接下來我們真正認識一下相對路徑和絕對路徑
- 絕對路徑是一種特殊的相對路徑
為什麼允許這麼説?
我們先來看相對路徑——
這裏有個問題:一個相對路徑具有唯一性嗎?
ok,任意一個相對路徑具有唯一性(每一個相對路徑有唯一性),相對路徑可以有多個,但是每一個相對路徑都是唯一的
相對路徑無非就是以我當前的位置為參考點,路徑唯一的幫我找到這個文件
而絕對路徑是相對於根目錄去找該文件,相對位置是固定的,絕對路徑是一個固定的參照點(根目錄)從根目錄開始幫為照這個文件
所以我們可以認為絕對路徑是一個特殊的相對路徑
總結:
- 絕對路徑的本質相對於根目錄開始的
- 從你當前所處的路徑作為參考點來讓你能夠定位其他文件或者目錄的路徑就是相對路徑的本質
誰啊?就是這裏有個問題:什麼叫做你的當前路徑?你
4.3.1 實用查詢:“我是誰?”—— whoami 命令
- whoami 命令 ——就行知道我是誰了
我是root
/root/118 就是當前用户root在當前/root/118的路徑下
4.4 基礎導航:進入指定子目錄
- cd 目錄名 ——利用相對路徑或者絕對路徑自由進行路徑切換
- cd /——直接進入根目錄
- cd -——兩個高頻訪問的目錄下進行飛快切換,切換到當前用户上一次所處的路徑
- cd ~——直接進入當前用户的家目錄
什麼叫做家目錄?
所謂家目錄就是操作系統用户登錄環境後,默認所處的路徑
多人共用的操作系統就是windows中也有家目錄的概念,windows可以創建多個用户,windows和Linux都
什麼?為什麼登錄時要有確切的用户呢?就是那家目錄的本質
這是因為要給windows孩子啊桌面,下載軟件提供當前用户的默認路徑
五、創建空的普通文件:使用 touch 命令
touch 文件名 ——在目錄裏面創建一個新的文件(普通文件)
touch 文件名 就相當於 windows中的創建文本文件
5.1 深入洞察:stat 查看文件詳細信息
- stat 文件名 ——查看一個記錄更詳細的信息
六、目錄管理:應用 mkdir 創建目錄
- mkdir 目錄名 —— 創建一個目錄
在118目錄下創建一個dir2的目錄——
- 目錄呢?就是嗯?這裏有個問題:那我們怎麼知道創建的是普通文件還
- 我們知道在windows中是通過後綴區分文件的,Linux是怎麼區分的?
Linux依據文件的屬性區分資料
- d開頭:叫做目錄
- -開頭:普通文件(包括可執行程序、文本文件、動靜態庫……)
- ……(其餘後面介紹)
Linux區分文件類型,不關係資料後綴(並不代表後綴不可用),文件後綴就是所見及所得
Linux操作系統不關係檔案後綴,但是gcc關心後綴(gcc != Linux操作系統)
此時博主突發奇想:想創建一連串路徑,直接上手幹——
嗯?既然不行,好叭,因為mkdir不允許一次創建一串路徑,此時我們就尋求外援了——
6.1 遞歸創建目錄:mkdir -p
- mkdir -p 路徑 ——可以遞歸創建一串路徑
這裏什麼都沒顯示,憑什麼證明你創建了一串路徑——
6.1.1 目錄結構可視化:tree
- tree 路徑/目錄 ——將當前路徑/目錄用樹形結構顯示出來
有個小提醒:系統自帶的,若沒有需下載就是tree不
- Centos 7下載指令: yum install -y tree
- Ubuntu下載指令:apt install -y tree
這就證明我們 mkdir a/b/c/d 創建一串路徑
通過既然我們可以創建一個普通文件或者目錄,那是不是能夠刪除他們呀!
七、刪除操作:rmdir 與 rm 命令
7.1 刪除空目錄:rmdir 命令
- rmdir 目錄名 —— 刪除一個空的目錄
我們看到dir1目錄中沒有其他東西,是一個空目錄,可以用rmdir直接刪除。
如果目錄不是一個空目錄能夠用mkdir刪嗎?
我們看到a目錄不是一個空的目錄,使用rmdir不能刪除
- 總結:
為了刪除空目錄(只能刪除空目錄)就是rmdir只
7.2 文檔與目錄刪除:rm
- rm 文件名 ——rm 能夠刪除普通文件
- rm -r[ f ] 目錄名 —— 一個目錄是遞歸式建立,刪除時得遞歸刪除
- 否刪除就是rm -i 目錄名/文件名 ——刪除前給提示,詢問
rm 普通文件
- rm -r 目錄名(rm -r 目錄名 —> -r 遞歸式刪除目錄(刪除目錄及其下所有文件))
刪除一個空的目錄
刪除非空目錄
上面刪除非空目錄時好像有點麻煩:
- rm -rf 目錄名 —— 強制刪除,不需要每次確定
- 總結:
擴展:Linux整體也是一棵樹形結構,/根目錄也是目錄
rm -rf / 強制刪除根目錄(這就搞掛了架構)
- 否刪除就是rm -i 目錄名/文件名 ——刪除前給提示,詢問
rm -i 是給普通用户用的,刪除時給提示,刪除前逐一詢問是否刪除
普通用户用rm默認是沒有 -i 的:
- 無 -i :刪除前不會逐一詢問是否刪除
- 否刪除就是有 -i:刪除前逐一詢問
超級管理員(root)用rm ,默認是有 -i 的
- 加不加 -i 刪除前都會逐一詢問是否刪除