Linux 入門基礎 一、Linux 系統安裝 安裝方法網上很多,請自行百度 二、Linux 基本操作 2.1、GNOME圖形界面基本操作 操作類似於Windows系統操作 打開每一個文件夾都會打開一個新的視窗,這可以修改 打開文件夾 Edit Preference Behavior,勾選上 Alw ...
Linux 入門基礎
一、Linux 系統安裝
- 安裝方法網上很多,請自行百度
二、Linux 基本操作
2.1、GNOME圖形界面基本操作
操作類似於Windows系統操作
- 打開每一個文件夾都會打開一個新的視窗,這可以修改
- 打開文件夾-Edit-Preference-Behavior,勾選上 Always open in browser windows ,關閉該文件夾後重新打開文件夾,文件夾的操作就跟Windows一樣了
2.2、Bash基本操作
2.2.1 SHELL 的概念
- Shell 叫做 殼 ,Linux操作系統底層是有一個內核(Kernel),內核用來去實現一些上層服務、上層命令、上層應用所需要的基本功能,比如說底層磁碟的讀寫,網路的連接,網路的通信,鍵盤驅動、滑鼠驅動、進程調度、記憶體管理、圖形頁面等等都是由操作系統的 Kernel 去完成的。Kernel 我們是沒有辦法直接去對它進行控制的,因為一些安全問題,一些許可權問題,用戶是不允許直接去操控 Kernel 的,這個時候就需要一個 Shell 程式。Shell 的功能就是把我們用戶的一些指令去傳遞給 Kernel ,翻譯成 Kernel 可以理解的信息。
所以我們所有當前的操作都是由一個 Shell 傳遞給 Kernel 的。 - Shell分為 CLI 與 GUI 兩種
- CLI: Command Line Interface 命令行界面Shell
- BASH
- GUI: Graphical User Interface 圖形界面Shell
- GNOME - 在 Linux 系統裡面,命令行操作是 Linux 主要管理方式,圖形界面能完成的命令行基本都難完成,命令行能完成的圖形界面不一定能完成。
2.2.2 BASH 命令行操作
提示符
- # : 代表當前是以根用戶也就是 root 用戶身份登錄
- 表示擁有最高的管理員許可權,也就是當前是操作都很危險,可以破壞系統
- $ : 代表當前是普通用戶身份登錄
- 輸入:“ su - ” 後提示輸入密碼,輸入密碼後就是 root 用戶身份登錄了
- # : 代表當前是以根用戶也就是 root 用戶身份登錄
命令一般由三部分組成
- 命令
- 選項
- 參數
基本命令
hostname : 查看當前主機名
ls : list 的縮寫,列出當前目錄下的所有文件
uname: 顯示當前系統的基本信息(底層內核的信息)
這是不帶任何參數的命令,但是幾乎所有的命令都可以帶參數。
uname -r : 不帶參數的命令返回信息有點少,加上 -r 參數後返回信息變成了內核版本號
uname -a : 顯示所有信息
命令後接一個 - 和一個字母,這是單字元參數,也可以寫成兩個 - 和一個單詞,如:
uname --all ,這個命令和上面的 uname -a 功能是一樣的。
一般都使用單字元參數。
firefox : 表示打開火狐瀏覽器,輸入程式的命令就是打開該程式
火狐瀏覽器打開後再返回命令行界面時沒有返回提示符,按 Ctrl + C 可以終止當前命令,退出到提示符下,可以在輸入命令時在後面加入參數讓程式在後臺運行
firefox & :任何命令後加 & 表示將該命令放到後臺運行,不會幹擾當前命令行。(命令行是多進程多任務終端)
clear : 清除屏幕
使用 Tab 鍵來簡化命令輸入
- 自動補全命令
- 自動補全文件名
- 無法自動補全參數
Linux 命令或者文件名有很多前幾個字母是相同的,輸入的字母只要能和其他命令或文件名區分開,按 Tab 鍵就能自動補全,不能區分開時按兩下 Tab 鍵就會顯示所有以輸入的字母開頭的命令或文件名。
不輸入命令直接按兩下 Tab 鍵會提示是否列出所有的命令
例如:
$unam<tab>
$uname
$ls Dow<tab>
$ls Downloads
歷史記錄
- Bash 會保存你輸入命令的歷史記錄,可以通過鍵盤的上下按鍵查看上一條或下一條命令,也可以使用 history 命令來查看操作過的所有命令
通過歷史記錄簡化操作
- !! : 重覆前一個命令
- !字元 : 重覆前一個以“ 字元 ”開頭的命令
- !num : 按照歷史記錄的序號執行命令
- !?abc : 重覆之前包含 abc 的命令
- !-n : 重覆 n 個命令之前的那個命令
搜索命令歷史記錄
可以通過 Ctrl + r 來在歷史記錄中搜索命令
(reverse-i-search) '':
重新調用前一個命令中的參數
esc鍵 + . : 輸入命令後按 esc 鍵,然後按 .
命令行通配符
Bash Shell 支持以下通配符:
* : 匹配零個或多個
? : 匹配任意一個字元
[0-9] : 匹配一個數字範圍
[abc] : 匹配列表裡任何字元
[^abc] : 匹配列表以外字元
切換用戶
- 在 CLI 中,通過 su 命令切換用戶
- su - : 切換到 root 用戶並使用一個新的運行環境,輸入 exit 退出
- su 後加 - 和不加 - 的區別就是是否創建一個新的環境,一般使用都加 -
- sudo : 使用管理員用戶身份運行命令(非 root 用戶)
- sudo 命令
- su - : 切換到 root 用戶並使用一個新的運行環境,輸入 exit 退出
- 顯示當前用戶信息
- id
- 修改當前用戶密碼
- passwd
- 在 CLI 中,通過 su 命令切換用戶
BASH 作業管理
- 在後臺運行進程
- 在命令後添加一個 &
- 暫停某個程式
- 通過 Ctrl + z 或者發送信號 17
- 管理後臺作業
- jobs : 查看後臺運行的進程是否在運行
- bg : 後面加進程編號,控制一個進程繼續在後臺運行
- fg : 後面加進程編號,將後臺運行的進程拉回到前臺來運行
- 在後臺運行進程
2.3、Linux 文件系統結構
- Linux 文件系統為一個倒轉的單根樹狀結構
- 文件系統的根為 " / "
- 文件系統嚴格區分大小寫
- 路徑使用 " / " 分隔,(Windows 中使用 " ")
2.3.1 當前工作目錄
- 每一個 shell 或系統進程都有一個當前工作目錄
- 使用 pwd 命令可以顯示當前的工作目錄
2.3.2 文件名稱
- 文件的名稱大小寫敏感
- 名稱最多可以為 255 個字元
- 除了 " " 外,都是有效字元(文件的命名最好體現文件的功能,儘量不要使用特殊字元)
- 通過 touch 命令可以創建一個空白文件或者更新已有文件的時間
- 以 " . " 開頭的文件為隱藏文件,ls -a 命令中會顯示很多以 . 開頭的文件,隱藏文件大多數都是配置文件,輕易不要去動。
2.3.3 列出目錄內容
" ls " 命令用來列出目錄內容
- 相關參數
- ls -a : 顯示所有文件(包括隱藏文件)
- ls -l : 顯示詳細信息
- ls -R : 遞歸顯示子目錄結構
- ls -ld : 顯示目錄和鏈接信息
2.3.4 查看文件類型
通過 file 命令可以查看文件的類型
2.3.5 絕對路徑與相對路徑
- 絕對路徑:以 " / " 開頭,遞歸每級目錄直到目標的路徑。不受當前所在工作目錄限制
-
- 相對路徑:以當前目錄為起點,到的目標的路徑。受當前所在目錄限制
- cd 命令可以用來切換目錄
- 上一級目錄:" .. "
- 當前目錄:" . "
- 用戶家目錄:" ~ " ,在任何目錄下輸入 cd 直接按 Enter 也是回到家目錄
- 上一個工作目錄:" - "
- cd 命令可以用來切換目錄
圖中當前目錄是 linuxcast ,目標目錄是 sa ,從 linuxcast 目錄到 sa 目錄分別使用絕對路徑和相對路徑如下:
- 絕對路徑:/var/log/sa
- 相對路徑:../../var/log/sa
以後寫程式或寫腳本的時候一般使用絕對路徑!
2.4、Linux 文件基本操作
2.4.1 創建和刪除文件
- 通過 touch 命令可以創建一個空文件或更新文件時間
- 通過 rm 命令可以刪除文件或目錄,常用參數:
- -i : 互動式
- -r : 遞歸的刪除包括目錄中的所有內容
- -f :強制刪除,沒有警告提示(使用時需十分謹慎)
2.4.2 創建和刪除目錄
- 通過 mkdir 命令創建一個目錄
- 通過 rmdir 命令刪除一個空目錄
- 通過 rm -f (-f) 命令刪除一個非空目錄
2.4.3 複製文件、目錄
- 使用 cp 命令複製文件或目錄
- cp 源文件(文件夾) 目標文件(文件夾)
touch linuxcast
cp linuxcast linuxcast2 複製到當前文件夾並重命名為 linuxcast2
cp linuxcast linuxcast.net 複製到別的文件夾下,文件名還是 linuxcast
常用參數:
-r : 遞歸複製整個目錄樹
不加參數的 cp 命令只能複製文件,如果要複製一個文件夾需要加 -r 的參數
-v : 顯示詳細信息
2.4.4 移動、重命名文件或目錄
通過命令 mv 命令移動或者重命名文件或目錄
- mv 文件 目標目錄
- 如果指定文件名,則可以重命名文件
mv linuxcast2 linuxcast.net/cast 將文件 linuxcast2 移動到 linuxcast.net 文件夾下並重命名為cast touch abc 新建文件abc mv abc hello 在當前目錄下將文件 abc 重命名為 hello
2.5、Linux 系統常用命令
2.5.1 日期時間
- 命令 date 用以查看、設置當前系統時間:
- date -u : 查看 UTC 時間
- 格式化顯示時間:+%Y--%m--%d
- date -s "20:20:20" : 修改當前時間為 20:20:20
- 命令 hwclock (clock) 用以顯示硬體時鐘時間
- 命令 cal 用以查看日曆
- 命令 uptime 用以查看系統運行時間,有幾個用戶登錄,及系統平均負載
2.5.2 輸出和查看命令
- 命令 echo 用以顯示輸入的內容
echo 'hello word'
- 命令 cat 用以顯示文件內容
- 如果文件中內容很長,前面的內容會略過,直接顯示最後幾行,不太方便
- 命令 head 用以顯示文件的頭幾行(預設10行)
- -n 指定顯示的行數
- 命令 tail 用以顯示文件的末尾幾行(預設10行)
- -n 指定顯示的行數
- -f 追蹤顯示文件更新(一般用於查看日誌,命令不會退出,而是持續顯示加入的內容)
- 命令 more 用於翻頁顯示文件內容(只能向下翻頁)
- 命令 less 用於翻頁顯示文件內容(帶上下翻頁)
2.5.3 查看硬體信息
- 命令 lspci 用以查看 PCI 設備
- -v : 查看詳細信息
- 命令 lsusb 用以查看 USB 設備
- -v : 查看詳細信息
- 命令 lsmod 用以查看載入的模塊(驅動)
2.5.4 關機、重啟
- 命令 shutdown 用以關閉、重啟電腦
- shutdown [ 關機、重啟] 時間
- -h 關閉電腦
- -r 重新啟動
- 如:
- 立即關機: shutdown -h now
- 10分鐘後關機: shutdown -h +10
- 23:30分關機: shotdown -h 23:30
- 立即重啟: shotdown -r now
- 命令 poweroff 用以立即關閉電腦
- 命令 reboot 用以立即重啟電腦
2.5.5 歸檔、壓縮
- 命令 zip 用以壓縮文件
- zip linuxcast.zip myfile
- 命令 unzip 用以解壓縮 zip 文件
- unzip linuxcast.zip
- 命令 gzip 用以壓縮文件
- gzip linuxcast.net
- 命令 tar 用以歸檔文件 ( tar 是歸檔命令,不是壓縮命令)
- tar -cvf out.tar linuxcast
- tar -xvf linuxcast.tar 打開或釋放歸檔(打開在當前目錄下)
- tar -cvzf backup.tar.gz /etc 歸檔並壓縮,最常用的歸檔壓縮命令
- -z 參數將歸檔後的歸檔文件進行 gzip 壓縮以減少大小
2.5.6 查找
- 命令 locate 用以快速查找文件、文件夾
- locate keyword
- 此命令需要預先建立資料庫,資料庫預設每天更新一次,所以優點查找非常快,缺點是新加進來的數據,資料庫沒有更新的話會找不到文件,可用 updatedb 命令手工建立、更新資料庫
touch aabbcc 新建文件aabbcc
locate aabbcc 找不到文件
updatedb 手工更新資料庫,相當於掃描整個操作系統
locate aabbcc 此時就能找到文件
命令 find 用以高級查找文件、文件夾
find 查找位置 查找參數
如:
find . -name *linuxcast* 在當前目錄下查找文件名包含 linuxcast 的所有文件
find / -name *.conf 在根目錄下(也可以說整個操作系統或硬碟)查找所有以 .conf 結尾的文件
find / -perm 777 在硬碟中查找所有許可權是 777 的文件
find / type d 在硬碟中查找所有文件類型是目錄的文件
find . -name "a*" -exec ls -l {} ; 查找後的結果再執行命令
find . -name "a*" 是查找所有以 a 開頭的文件;-exec 是執行的意思;" -exec " 和 " {} ; " 是固定格式,整個的意思就是:把以 a 開頭的文件找到後作為參數傳遞給 " -exec " 和 " {} ; " 之間的命令(這裡是 ls -l )
find 支持很多種的查找條件,常用的如下:
- -name 文件名
- -perm 許可權
- -user 查找全部屬於某個特定用戶的文件
- -group 查找全部屬於某個特定組的文件
- -ctime 基於文件修改時間的查找
- -type 文件類型
- -size 基於文件大小的查找
2.6、Vi 文本編輯器
2.6.1 VI 和 VIM
- vi 是一個命令行界面下的文本編輯工具,最早在 1976 年由 Bill Joy 開發,當時名字叫 ex。
- vi 支持絕大多數操作系統(最早在 BSD 上發佈),並且功能已經十分強大。
- 1991 年 Bram Moolenaar 基於 vi 進行了改進,發佈了 vim,加入了對 GUI 的支持、
- vim 已經不僅僅是普通意義上的文本編輯器(如 Windows 上的記事本),而是被廣泛的作為在文本編輯、文本處理、代碼開發等等用途。
- Linux 中知名的文本編輯器還有 emacs ,它的功能比 vim 還要強大。
2.6.2 VIM
- 絕大多數 Linux 系統上均安裝有 vim ,vim 比 vi 的功能更為強大,所以建議大家使用 vim 而非 vi ,兩者使用方法相同。
- 命令 vim 可以啟動 vim 編輯器
- 一般通過 vim + 目標文件路徑 的形式使用 vim
- 如果目標文件已存在,則 vim 打開該文件
- 如果目標文件不存在,則 vim 新建並打開該文件
2.6.3 VIM 的三種工作模式
- 命令模式(常規模式)
- vim 啟動後,預設進入命令模式,任何模式都可以通過按 esc 鍵回到命令模式(可以多按幾次)。
- 命令模式下可以通過鍵入不同的命令完成定位、選擇、複製、翻頁、粘貼、刪除、撤銷等等操作
- 常用命令:
- i 在游標前插入文本
- o 在當前行的下麵插入新行
- dd 刪除整行
- yy 將當前行的內容放入緩衝區 (複製當前行)
- n+yy 將 n 行的內容放入緩衝區 (複製 n 行)
- p 將緩衝區的文本放入游標後(粘貼)
- u 撤銷上一個操作
- r 替換當前字元
- / 查找關鍵字
- 編輯模式(插入模式)
- 在命令模式中按 " i " 鍵,即可進入編輯模式,在編輯模式可以輸入編輯文本內容,使用 esc 鍵可以返回到命令模式
- 末行模式(ex 模式)
- 在命令模式中按 " : " 鍵可以進入末行模式,游標會移動到底部左下角,在這裡可以保存修改或退出 vim
- 常用命令如下:
- :w 保存當前修改
- :q 退出
- :wq 保存並退出
- :q! 強制退出,不保存修改
- :x 保存並退出,相當於 :wq
- :set number 顯示行號
- :! 系統命令 執行一個系統命令並顯示結果 如 :! who
- :sh 切換到命令行,使用 Ctrl + d 切換回 vim
三、磁碟基本概念
3.1、磁碟基本概念
- cylinder - 柱面
- sector - 扇區
- head - 磁頭
3.2、磁碟在 Linux 中的表示
- Linux 所有設備都被抽象為一個文件,保存在 /dev 目錄下
- 設備名稱一般為 hd[a-z] 或 sd[a-z] ( [a-z]為分區號 ),如:hda、hdb、sda、sdb
- IDE 設備的名稱為 hd[a-z] ,SATA、SCSI、USB 等設備的名稱為 sd[a-z]
3.3、分區概念
- 將一個磁碟邏輯的分為幾個區,每個區當做獨立磁碟,以方便使用管理
- 不同分區用:設備名稱+分區號 方式來表示,如:sda1、sda2
- 主流的分區機制分為 MBR 和 GPT 兩種
3.4、MBR
- MBR (Master Boot Record)是傳統的分區機制,應用於絕大多數使用 BIOS 的 PC 設備
- MBR 支持 32bit 和 64bit 系統
- MBR 支持分區數量有限
- MBR 只支持不超過 2T 的硬碟,超過 2T 的硬碟將只能使用 2T 空間(有第三方解決方法)
- MBR 分區
- 主分區
- 最多只能創建4個主分區
- 擴展分區
- 一個擴展分區會占用一個主分區位置
- 邏輯分區
- Linux 最多支持63個 IDE 分區和15個 SCSI 分區
- 主分區
3.5、GPT
- GPT (GUID Partition Table)是一個較新的分區機制,解決了 MBR 的很多缺點
- 支持超過 2T 的磁碟
- 向後相容 MBR
- 必須在支持 UEFI 的硬體上才能使用
- 必須使用64bit 系統
- Mac、Linux 系統都能支持 GPT 分區格式
- Windows7 64bit、WindowsServer2008 64bit 支持 GPT
3.6、FDISK 分區工具
- fdisk 是來自 IBM 的老牌分區工具,支持絕大多數操作系統,幾乎所有的 Linux 的發行版本都裝有 fdisk ,包括在 Linux 的 rescue 模式下依然能夠使用。
- fdisk 是一個基於 MBR 的分區工具,所以如果需要使用 GPT ,則無法使用 fdisk 進行分區
- FDISK 操作
- fdisk 命令只有具有超級用戶許可權才能夠運行
- 使用 fdisk -l 可以列出所有安裝的磁碟及其分區信息
- 使用 fdisk /dev/sda 可以對目標磁碟進行分區操作
- 分區之後需要使用 partprobe 命令讓內核更新分區信息,否則需要重啟才能識別新的分區
- /proc/partitions 文件也可用來查看分區信息
四、Linux 文件系統
4.1、文件系統簡介
4.1.1 文件系統簡介
- 操作系統通過文件系統管理文件及數據,磁碟或分區需要創建文件系統之後才能夠為操作系統使用,創建文件系統的過程又稱之為格式化。
- 沒有文件系統的設備又稱之為裸(raw)設備
- 常見的文件系統有:fat32 、NTFS、ext2 、ext3、ext4、ext6、HFS 等
- 文件系統之間的區別:日誌、支持的分區大小、支持的單個文件大小、性能等
- Windows 下的主流文件系統是:NTFS , Linux 下的主流文件系統是:Ext3、Ext4
- Linux 支持的文件系統
- ext2
- ext3
- ext4
- fat ( msdos )
- vfat
- nfs
- iso9660
- proc
- gfs
- jfs
4.1.2、MKE2FS 創建文件系統
- 命令 mke2fs 用來創建文件系統
- mke2fs -t ext4 /dev/sda3
- 常用參數
- -t 指定要創建的文件類型
- -b blocksize 指定文件系統塊大小
- -c 建立文件系統時檢查壞損塊
- -L label 指定捲標
- -j 建立文件系統日誌
4.1.3、MKFS
- 命令 mkfs 也可用於創建文件系統,相較於 mke2fs 簡單,但是支持的參數較少,不能進行精細化的控制
- mkfs.ext3 /dev/sda3
- mkfs.ext4 /dev/sda3
- mkfs.vfat /dev/sda3
4.1.4、DUMPE2FS 查看文件系統
- 命令 dumpe2fs 可以用來查看分區的文件系統信息
- dumpe2fs /dev/sda2
4.1.5、JOURNAL 日誌
- 帶日誌的文件系統(ext3、ext4)擁有較強的穩定性,在出現錯誤時可以進行恢復。
- 使用帶日誌的文件系統,文件系統會使用一個叫做 “兩階段提交” 的方式進行磁碟操作,當進行磁碟操作時,文件系統進行以下操作:
- 文件系統將準備執行的事務的具體內容寫入日誌
- 文件系統進行操作
- 操作成功後,將事務的具體內容從日誌中刪除
- 這樣做的好處是,當事務執行的時候如果出現意外(如斷電或磁碟故障),可以通過查詢日誌進行恢復操作。缺點是會喪失一定的性能(額外的日誌讀寫操作)
4.1.6、E2LABEL 添加標簽
- 命令 e2label 可以用來為文件系統添加標簽(標簽建議大小)
- e2label /dev/sda2 顯示 sda2 的系統標簽
- e2label /dev/sda2 LINUXCAST 將 sda2 的系統標簽設置為 LINUXCAST
4.1.7、FSCK 檢查並修複
- 命令 fsck 用來檢查並修複損壞的文件系統
- fsck /dev/sda2
- 使用 -y 參數不提示而直接進行修複
- 預設 fsck 會自動判斷文件系統類型,如果文件系統損壞較為嚴重,請使用 -t 參數指定文件系統類型
- 對於識別為文件的損壞數據(文件系統無記錄),fsck 會將該文件放入 lost+found 目錄
- 系統啟動時會對磁碟進行 fsck 操作
4.2、文件系統掛載及使用
4.2.1 掛載操作
- 磁碟或分區創建好文件系統後,需要掛載到一個目錄才能夠使用
- Windows 或 Mac 系統會進行自動掛載,一旦創建好文件系統後會自動掛載到系統上,Windows 上稱之為 C 盤、D 盤等
- Linux 需要手工進行掛載操作或配置系統進行自動掛載
4.2.2 MOUNT 掛載命令
- 在 Linux 中,我們通過 mount 命令將格式化好的磁碟或分區掛載到一個目錄上
- mount /dev/sda3(要掛載的分區) /mnt(掛載點)
- 常用參數:
- 不帶參數的 mount 命令會顯示所有已掛載的文件系統
- -t 指定文件系統的類型
- -o 指定掛載選項 (如:mount -o remount,ro /dev/sdb1 /mnt/)
- ro, rw 以只讀或讀寫形式掛載,預設是 rw
- sync 代表不使用緩存,而是對所有操作直接寫入磁碟
- async 代表使用緩存,預設是 async
- noatime 代表每次訪問文件時不更新文件的訪問時間
- atime 代表每次訪問文件時更新文件的訪問時間
- remount 重新掛載文件系統
4.2.3 UMOUNT 卸載掛載
- 命令 umount 用來卸載已掛載的文件系統,相當於 Windows 中的彈出
- umount 文件系統/掛載點
- umount /dev/sda3
- umount /mnt
- 如果出現 device is busy 報錯,則表示該文件系統正在被使用,無法卸載,可以使用以下命令查看使用文件系統的進程:
- fuser -m/mnt
- 也可使用命令 lsof 查看正在被使用的文件
- lsof /mnt
4.2.4 自動掛載
- 配置文件 /etc/fstab 用來定義需要自動掛載的文件系統,fstab 中每一行代表一個掛載配置,格式如下:
/dev/sda3 | /mnt | ext4 | defaults | 0 0 |
---|---|---|---|---|
需要掛載的設備 | 掛載點 | 文件系統 | 掛載選項 | dump、fsck相關選項 |
- 要掛載的設備也可以使用 LABEL 進行識別,使用 LABEL = LINUXCAST 取代 /dev/sda3
- mount -a 命令會掛載所有 fstab 中定義的自動掛載項