前言
要想成為程序員,幾乎繞不開(kāi)學(xué)習(xí)Linux操作系統(tǒng)。
很多博客都會(huì)講解Linux相關(guān)知識(shí),但卻很少告訴我們Linux要學(xué)到什么程度,最應(yīng)該掌握哪些。
想想我們學(xué)習(xí)的Windows系統(tǒng),我們會(huì)增刪改查目錄、文件,下載安裝卸載軟件,開(kāi)關(guān)機(jī)、重啟。
那我們學(xué)習(xí)Linux系統(tǒng)也是掌握以上這些就可以了。
跟著本博客學(xué)習(xí)Linux,不多不少,剛好夠用!
1.Linux簡(jiǎn)介

Linux,全稱GNU/Linux,是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),其內(nèi)核由林納斯·本納第克特·托瓦茲于1991年10月5日首次發(fā)布,它主要受到Minix和Unix思想的啟發(fā),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
2.Linux發(fā)行版本
3.Linux詳解
3.1文件系統(tǒng)結(jié)構(gòu)
| 文件夾 | 說(shuō)明 |
|---|---|
| /bin | 存放二進(jìn)制可執(zhí)行文件,常用命令存放于此 |
| /etc | 存放系統(tǒng)管理和配置文件 |
| /home | 存放所有用戶文件的跟目錄 |
| /usr | 存放系統(tǒng)應(yīng)用程序 |
| /opt | 主機(jī)額外安裝軟件所擺放的目錄 |
| /proc | 虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射 |
| /root | 系統(tǒng)管理員主目錄 |
| /sbin | 存放二進(jìn)制可執(zhí)行文件,只有root才能訪問(wèn) |
| /dev | 存放設(shè)備文件 |
| /mnt | 系統(tǒng)提供該目錄用于臨時(shí)掛載其他文件系統(tǒng) |
| /boot | 存放用于系統(tǒng)引導(dǎo)時(shí)使用的各種文件 |
| /lib | 存放系統(tǒng)最基本的動(dòng)態(tài)連接共享庫(kù) |
| /tmp | 存放臨時(shí)文件,也是公用臨時(shí)文件存儲(chǔ)點(diǎn) |
| /var | 存放運(yùn)行時(shí)需要改變數(shù)據(jù)的文件 |
| /lost+found | 系統(tǒng)非正常關(guān)機(jī)而留下的文件 |
3.2常用命令
| 常用命令 | 說(shuō)明 |
|---|---|
| ls | (list files)列出目錄及文件名 |
| cd | (change directory)切換目錄 |
| pwd | (print work directory)顯示當(dāng)前目錄 |
| mkdir | (make directory)創(chuàng)建新目錄 |
| rmdir | (remove directory)刪除空目錄 |
| cp | (copy file)復(fù)制文件或目錄 |
| rm | (remove file)刪除文件或目錄 |
| mv | (move file)移動(dòng)文件或目錄/修改文件或目錄名 |
| cat | 顯示全部文件內(nèi)容 |
| tac | 倒序顯示全部文件內(nèi)容 |
| nl | 顯示文件內(nèi)容時(shí),同時(shí)輸出行號(hào) |
| more | 一頁(yè)一頁(yè)的顯示文件內(nèi)容 |
| less | 精簡(jiǎn)顯示文件內(nèi)容 |
| head | 查看文件頭部 |
| tail | 查看文件末尾 |
| chgrp | 改變文件所屬群組 |
| chown | 改變文件擁有者 |
| chmod | 改變文件權(quán)限 |
| man [命令] | 查看命令的使用文檔 |
| ls [參數(shù)] [目錄](méi) | 列出目錄或文件名 |
|---|---|
| ls -a | 列出全部文件 |
| ls -d | 列出全部目錄 |
| ls -l | 長(zhǎng)數(shù)據(jù)串列出,包含文件屬性與權(quán)限 |
| ls ~ | 列出家目錄下所有文件 |
| cd [相對(duì)路徑或絕對(duì)路徑] | 切換目錄 |
|---|---|
| cd .. | 切換至上一層目錄 |
| cd ~ | 切換至系統(tǒng)根目錄 |
| cd / | 切換至用戶主目錄 |
| cd - | 切換至上一操作所在目錄 |
| pwd | 顯示當(dāng)當(dāng)前目錄 |
|---|---|
| pwd -P | 顯示確切路徑 |
| mkdir [-mp] 目錄名稱 | 創(chuàng)建目錄 |
|---|---|
| mkdir -m | 配置文件權(quán)限 |
| mkdir -p | 進(jìn)行目錄遞歸創(chuàng)建 |
| rmdir | 刪除空目錄 |
|---|---|
| rmdir -p | 連同上一級(jí)空目錄一起刪除 |
| cp [參數(shù)] 目錄名稱 目錄拷貝的目標(biāo)位置 | 復(fù)制文件或目錄 |
|---|---|
| cp -d | 若來(lái)源檔為連結(jié)檔的屬性,則復(fù)制連結(jié)檔屬性而非文件本身 |
| cp -f | 若目標(biāo)文件已經(jīng)存在且無(wú)法開(kāi)啟,則移除后再嘗試一次 |
| cp -i | 若目標(biāo)檔已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢問(wèn)動(dòng)作的進(jìn)行 |
| cp -p | 連同文件的屬性一起復(fù)制過(guò)去,而非使用默認(rèn)屬性 |
| cp -r | 遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為 |
| cp -s | 復(fù)制成為符號(hào)連結(jié)檔 |
| rm [-fir] 文件或目錄 | 移除文件或目錄 |
|---|---|
| rm -f | 忽略不存在的文件,不會(huì)出現(xiàn)警告信息 |
| rm -i | 互動(dòng)模式,在刪除前詢問(wèn)使用者是否刪除 |
| rm -r | 遞歸刪除,謹(jǐn)慎使用 |
| mv [-fiu] source destination | 移動(dòng)文件或目錄 |
|---|---|
| mv -f | 如果目標(biāo)文件已經(jīng)存在,不會(huì)詢問(wèn)而直接覆蓋 |
| mv -i | 若目標(biāo)文件已經(jīng)存在時(shí),就會(huì)詢問(wèn)是否覆蓋 |
| mv -u | 若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會(huì)升級(jí) (update) |
3.3 用戶管理
Linux系統(tǒng)是一個(gè)多用戶多任務(wù)的分時(shí)操作系統(tǒng),任何一個(gè)要使用系統(tǒng)資源的用戶,都必須首先向系統(tǒng)管理員申請(qǐng)一個(gè)賬號(hào),然后以這個(gè)賬號(hào)的身份進(jìn)入系統(tǒng)。
用戶的賬號(hào)一方面可以幫助系統(tǒng)管理員對(duì)使用系統(tǒng)的用戶進(jìn)行跟蹤,并控制他們對(duì)系統(tǒng)資源的訪問(wèn);另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護(hù)。
| 用戶管理命令 | 說(shuō)明 |
|---|---|
| useradd 選項(xiàng) 用戶名 | 添加新的用戶賬號(hào) |
| userdel 選型 用戶名 | 刪除已有賬號(hào) |
| usermod 選項(xiàng) 用戶名 | 更該用戶屬性 |
| passwd 選項(xiàng) 用戶名 | 指定和修改用戶口令 |
| groupadd 選項(xiàng) 用戶組 | 增加新用戶組 |
| groupdel 用戶組 | 刪除已有用戶組 |
| groupmod 選項(xiàng) 用戶組 | 修改用戶組屬性 |
| newgrp 用戶組 | 切換到新用戶組 |
在Linux操作系統(tǒng)中,有三個(gè)概念是我們必須掌握:用戶、用戶所在群組、別的群組;這三個(gè)區(qū)分極大地方便了協(xié)同工作。
- 用戶可以使用本用戶內(nèi)的資源以及用戶所在群組的公共資源
- 不同群組之間的資源是完全隔離開(kāi)來(lái)的
因?yàn)閷?duì)于Linux系統(tǒng)來(lái)說(shuō),萬(wàn)物皆文件,所有上述資源就是指代文件。由于用戶、用戶所在群組、別的群組這三者的區(qū)分,我們需要能夠查看任一文件對(duì)這三者的權(quán)限。
#列出所有文件的詳細(xì)信息
#input:
ls -l
#output:
drwxr--rw- 1 root root 42306 Sep 14 22:03 etc
文件的類型:
- d: 代表目錄
- -: 代表文件
- l: 代表軟鏈接(可以認(rèn)為是window中的快捷方式)
Linux中文件權(quán)限分為以下幾種:
- r:代表權(quán)限是可讀,r也可以用數(shù)字4表示
- w:代表權(quán)限是可寫,w也可以用數(shù)字2表示
- x:代表權(quán)限是可執(zhí)行,x也可以用數(shù)字1表示
解讀
drwxr--rw- 1 root root 42306 Sep 14 22:03 etc
- etc文件是一個(gè)目錄
- etc所有者可以讀寫并執(zhí)行etc文件
- etc所述組的用戶可讀取etc文件
- etc所不屬的組的用戶可以讀寫etc文件
- etc文件有1個(gè)硬連接
- ect屬于root這個(gè)用戶
- ect屬于root這個(gè)群組
- ect的容量為42306
- etc最近更改日期為Sep 14 22:03
3.4 Vim編輯器
Vim是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,相當(dāng)于Windows中的記事本。
vim 共三種模式,分別是命令模式,輸入模式和底線命令模式。
這三種模式的作用分別是:
命令模式:
用戶剛剛啟動(dòng) vi/vim,便進(jìn)入了命令模式。
此狀態(tài)下敲擊鍵盤動(dòng)作會(huì)被Vim識(shí)別為命令,而非輸入字符。比如我們此時(shí)按下i,并不會(huì)輸入一個(gè)字符,i被當(dāng)作了一個(gè)命令。
以下是常用的幾個(gè)命令:
- i 切換到輸入模式,以輸入字符。
- x 刪除當(dāng)前光標(biāo)所在處的字符。
- : 切換到底線命令模式,以在最底一行輸入命令。
若想要編輯文本:?jiǎn)?dòng)Vim,進(jìn)入了命令模式,按下i,切換到輸入模式。
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
輸入模式
在命令模式下按下i就進(jìn)入了輸入模式。
在輸入模式中,可以使用以下按鍵:
- 字符按鍵以及Shift組合,輸入字符
- ENTER,回車鍵,換行
- BACK SPACE,退格鍵,刪除光標(biāo)前一個(gè)字符
- DEL,刪除鍵,刪除光標(biāo)后一個(gè)字符
- 方向鍵,在文本中移動(dòng)光標(biāo)
- HOME/END,移動(dòng)光標(biāo)到行首/行尾
- Page Up/Page Down,上/下翻頁(yè)
- Insert,切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
底線命令模式
在命令模式下按下:(英文冒號(hào))就進(jìn)入了底線命令模式。
底線命令模式可以輸入單個(gè)或多個(gè)字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有:
- :q 退出程序
- :w 保存文件
- :wq 保存文件并退出程序
從記事本的視角切入,我們使用記事本的過(guò)程是打開(kāi)/創(chuàng)建記事本,編輯內(nèi)容,保存退出。
3.5 軟件包安裝、卸載、查看
apt命令
- apt 命令提供了查找、安裝、升級(jí)、刪除某一個(gè)、一組甚至全部軟件包的命令,而且命令簡(jiǎn)潔而又好記。
- apt 命令執(zhí)行需要超級(jí)管理員權(quán)限(root)
apt [options] [command] [package1,package2,...]
| apt常用命令 | 說(shuō)明 |
|---|---|
| sudo apt update | 列出所有可更新的軟件清單 |
| sudo apt upgrade | 升級(jí)軟件包 |
| apt list --upgradeable | 列出可更新的軟件包及版本信息 |
| sudo apt full-upgrage | 升級(jí)軟件包,升級(jí)前先刪除需要更新軟件包 |
| sudo apt install <package_name> | 安裝指定的軟件 |
| sudo apt install <package1> <package2> | 安裝多個(gè)軟件包 |
| sudo apt update <package_name> | 更新指定軟件 |
| sudo apt show <package_name> | 顯示軟件包信息 |
| sudo apt remove <package_name> | 刪除軟件包 |
| sudo apt autoremove | 清理不再使用的軟件包 |
| sudo apt purge <package_name> | 移除軟件包及配置文件 |
| sudo pat search <keyword> | 查找軟件包 |
| apt list --installed | 列出所有已安裝軟件包 |
| apt list --all-version | 列出所有已安裝軟件包的版本信息 |
3.6 軟硬連接
Linux 連接分兩種,一種被稱為硬連接(Hard Link),另一種被稱為符號(hào)連接(Symbolic Link)。默認(rèn)情況下,ln 命令產(chǎn)生硬連接。
硬連接
硬連接指通過(guò)索引節(jié)點(diǎn)來(lái)進(jìn)行連接。在 Linux 的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個(gè)編號(hào),稱為索引節(jié)點(diǎn)號(hào)(Inode Index)。在 Linux 中,多個(gè)文件名指向同一索引節(jié)點(diǎn)是存在的。比如:A 是 B 的硬鏈接(A 和 B 都是文件名),則 A 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)與 B 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)相同,即一個(gè) inode 節(jié)點(diǎn)對(duì)應(yīng)兩個(gè)不同的文件名,兩個(gè)文件名指向同一個(gè)文件,A 和 B 對(duì)文件系統(tǒng)來(lái)說(shuō)是完全平等的。刪除其中任何一個(gè)都不會(huì)影響另外一個(gè)的訪問(wèn)。
硬連接的作用是允許一個(gè)文件擁有多個(gè)有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因?yàn)閷?duì)應(yīng)該目錄的索引節(jié)點(diǎn)有一個(gè)以上的連接。只刪除一個(gè)連接并不影響索引節(jié)點(diǎn)本身和其它的連接,只有當(dāng)最后一個(gè)連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會(huì)被釋放。也就是說(shuō),文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。
軟連接
另外一種連接稱之為符號(hào)連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似于 Windows 的快捷方式。它實(shí)際上是一個(gè)特殊的文件。在符號(hào)連接中,文件實(shí)際上是一個(gè)文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的軟鏈接(A 和 B 都是文件名),A 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)與 B 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)不相同,A 和 B 指向的是兩個(gè)不同的 inode,繼而指向兩塊不同的數(shù)據(jù)塊。但是 A 的數(shù)據(jù)塊中存放的只是 B 的路徑名(可以根據(jù)這個(gè)找到 B 的目錄項(xiàng))。A 和 B 之間是“主從”關(guān)系,如果 B 被刪除了,A 仍然存在(因?yàn)閮蓚€(gè)是不同的文件),但指向的是一個(gè)無(wú)效的鏈接。
3.7
求個(gè)贊??,求個(gè)關(guān)注??