命令行BASH基本操作 Shell 用戶不能直接操作內核,所以用戶操作通過shell傳遞給內核 shell分為兩種 : GUI 圖形界面 (linux一般是GNOME) CLI 命令行界面 (linux一般是BASH) BASH 提示符 \ root用戶 $ 普通用戶 命令一般由 (命令、選項、參數 ...
命令行BASH基本操作
Shell
用戶不能直接操作內核,所以用戶操作通過shell傳遞給內核
shell分為兩種 :
GUI 圖形界面 (linux一般是GNOME)
CLI 命令行界面 (linux一般是BASH)
BASH
- 提示符
- # root用戶
- $ 普通用戶
- 命令一般由 (命令、選項、參數) 組成。
例如 :
[root@linuxabc ~ ] # uname -r
用戶名 主機名 工作目錄 root用戶 命令 參數
- 使用Tab鍵來自動補全命令(註意:無法自動補全參數,)
- 按2下Tab顯示所有命令
歷史記錄
Bash會保存你輸入過的命令,可以通過↓↑ 鍵來查看。
- 通過history可查看輸入過的全部命令
- !!重覆前一個命令(用上也可以。還方便)
- !字元 重覆前一個以“字元”開頭的命令
- !num 按照歷史記錄的序號執行命令
- !?abc重覆之前包含abc的命令
!-n重覆n歌命令之前的那個命令
- 通過Ctrl+r來在歷史記錄中搜素命令(reverse-i-search)“:
重新調用前一個命令中的參數Esc.(按完Esc鍵之後按.)
命令行通配符
- *匹配零個或多個
- ?匹配任意一個字元
- [0-9]匹配一個數字範圍
- [abc]匹配列表裡任何字元
- [Λabc]匹配列表以外的字元
切換用戶
- su - 切換到root用戶(切換終端)
- sudo 使用管理員許可權運行命令
BASH作業管理
- 在後臺運行進程
- 在命令後添加一個&
- 終止某個程式
- Ctrl+c
- 暫停某個程式
- Ctrl+z
- 管理後臺作業
- jobs 查看當前在後臺運行的作業
- sleep 5000 停參數輸入的時間 5000秒 可使用ctrl+c終止 或者 使用ctrl+z暫停
- bg 編號 控制進程繼續在後臺運行
- fg 編號 繼續在前臺運行
文件系統基本操作
Linux文件系統結構
- Linux文件系統為一個倒轉的單根樹狀結構
- 文件系統的根為“/"
- linux文件系統嚴格區分大小寫,大小寫敏感
- 路徑使用”/"分割,(windows中使用“”)
當前工作目錄
- 每一個shell或系統進程都有一個當前的工作目錄:~顯示當前所在目錄。
- 使用pwd命令可以顯示當前的工作目錄+
文件名稱
- 文件的名稱大小寫敏感
- 名稱最多可以使用255個字元
- 除了正斜線外都是有效字元
- 通過touch命令可以創建一個空白文件或者更新已有文件的時間
- 以“."開頭的文件為隱藏文件
列出目錄內容 : ls
- ls -a 顯示所有文件(包括隱藏文件):隱藏文件絕大多是都是配置文件,不要去動這些文件。
- ls -l 顯示詳細信息
- ls -R 遞歸顯示子目錄結構
- ls -ld 顯示目錄和鏈接信息
查看文件類型 : file
file 文件名
絕對路徑與相對路徑
- 絕對路徑:以/開頭,遞歸每級目錄直到目標的路徑。不受當前所在工作目錄限制
- 相對路徑:以當前目錄為起點,到達目標的路徑。受當前所在目錄限制
cd用來切換目錄:cd .切換到當前目錄,cd ..切換到上一級目錄,cd ~切換到家目錄, cd -上一個工作目錄。
文件基本操作
複製文件 : cp
cp 源文件 目標文件
-r 遞歸複製整個目錄樹
-v 顯示詳細信息
移動文件 : mv
mv 源文件 目標目錄(加/文件名會重命名該文件)
-r 遞歸複製整個目錄樹
-v 顯示詳細信息
創建文件 : touch
刪除文件 : rm
-i 互動式
-r 遞歸刪除包括目錄中所有內容
-f 強制刪除,沒有警告(謹慎)
創建目錄 : mkdir
刪除目錄 : rmdir
刪除空文件夾
刪除非空文件夾加 -r -f參數
系統目錄架構
- bin 可執行文件
- boot vmlinux內核 grub引導程式
- dev 硬體設備,linux里所有硬體都被抽象成文件
- etc 配置文件
- home 家目錄,保存用戶信息(root除外,root單獨保存)
- lib 庫文件
- media 掛載文件,和mnt一樣
- opt 大型軟體,比如資料庫
- proc 虛擬數據,實時信息
- sbin 和bin一樣,但只有root用戶才能執行
- sys 底層硬體信息
- tmp 臨時文件,定時刪除
- usr 應用軟體,大型軟體裝opt,一般軟體裝usr
- var 經常變化的信息,比如日誌log
系統常用命令
日期和時間
- date 查看和設置系統的日期和時間
- -u 查看utc時間
- date +%Y-%m-%d 格式化顯示時間
- -s 設置時間,只有root用戶才有許可權更改
- clock 顯示硬體時鐘時間,比如主板
- cal 查看日曆
- uptime 查看系統運行時間
輸出 , 查看
- echo 顯示輸入的內容
- cat 顯示文件內容
- more 翻頁顯示文件內容(只能向下翻頁)
- less 翻頁顯示文件內容(能上下翻頁)
- head 顯示文件的頭幾行(預設10行)
- -n 指定顯示行數
- tail 顯示文件的末尾幾行(預設10行)
- -n 指定顯示行數
- -f 追蹤顯示文件更新,一般用於查看日誌,持續顯示新加入的內容
查看硬體信息
- lspci 查看PCI設備
- -v 查看詳細信息
- lsusb 查看USB設備
- -v 查看詳細信息
- lsmod 查看載入的模塊(設備驅動)
關機 , 重啟
- shutdown 用來關閉 , 重啟電腦
- -h 關閉電腦
- -r 重啟電腦
例如:
#立即關機
shutdown -h now
#10分鐘後關機
shutdown -h +10
#23:30關機
shutdown -h 23:30
#立即重啟
shutdown -r now
- poweroff 立即關機
- reboot 立即重啟
歸檔 , 壓縮文件
- zip 壓縮
- zip 壓縮後的文件名.zip 要壓縮的文件
- unzip 解壓縮
- unzip 壓縮文件名.zip
- gzip 壓縮
- gzip 要壓縮的文件
- tar 用來歸檔文件
- tar -cvf 歸檔文件包.tar 要歸檔的文件
- tar -xvf 要解歸檔的文件包.tar
- tar -cvzf 歸檔並壓縮的文件包.tar.gz 要歸檔並壓縮的目錄
- -z 將歸檔後的文件進行gzip壓縮以減小大小
查找
locate 用以快速查找文件 , 文件夾
- locate 關鍵字 (locate查的是文件資料庫,快,但可能不及時準確.資料庫預設每天更新一次,可手動更新)
find 用以高級查找文件 , 文件夾
find 查找位置 查找參數
例如:
#查找當前目錄下,文件名包含'abcde'的文件 find . -name *abcde* #查找根目錄下,d代表目錄,即查找根目錄下所有的目錄 find / -type d #查找根目錄下,許可權是777的文件 find / -perm 777
find支持的常用查找參數
- -name 名字
- -perm 許可權
- -user 屬於特定用戶
- -group 屬於特定組
- -ctime 基於修改時間
- -type 文件類型
- -size 基於文件大小
vim編輯器
vim是vi的增強版
vim命令啟動vim編輯器
vim 文件名 (存在則打開文件,不存在則新建並打開文件)
vim的三種模式:
- 命令模式 (預設模式,其他模式按ESC進入命令模式)
- i 進入插入模式
- o 在當前行下麵插入新行
- dd 刪除整行
- u 撤銷上一個操作
- yy 複製當前行
- n+yy 複製下麵的n行
- p 粘貼
- r 替換當前字元
- / 查找關鍵字
- 插入模式 (命令模式中按 i 進入)
- ex模式 (命令模式中按 : 進入)
- :w 保存當前修改
- :q 退出(不保存會提示)
- :q! 強制退出
- :x 保存並退出,等同於 :wq
- :set number 顯示行號
- :! 執行系統命令並顯示結果
- :sh 切換到命令行,使用ctrl+d切換回vim
磁碟的基本概念
磁碟在Linux中的表示
Linux中所有的設備都被抽象成文件,保存在/dev目錄下
IDE設備名稱為 hd[a-z] ,例如:hda,hdb
SATA,SCSI,SAS,USB等名稱為 sd[a-z],例如sda,adb
磁碟分區
不同分區用,設備名稱+分區號表示,如 sda1,sda2
主流的分區機制有MBR和GPT兩種
- MBR
- 傳統分區機制,應用於絕大多數BIOS的PC設備
- 支持32bit和64bit
- 支持分區數量有限(最多4個主分區)
- 支持不超過2TB的硬碟
- GPT
- 向後相容MBR
- 只能在支持UEFI的硬體上才能使用
- 只支持64bit
- 支持超過2TB的硬碟
- Mac,Linux都能支持GPT
MBR結構
MBR占用了磁碟的前512位元組(446+4*16+2)
前446位元組為引導代碼
4*16位元組為分區表
2位元組為啟動標識(55h AAh可引導設備,Linux啟動時BIOS引導)
MBR分區
主分區 (最多只能創建4個主分區)
擴展分區 (一個擴展分區會占用一個主分區位置)
邏輯分區 (linux最多支持63個IDE分區和15個SCSI分區)
例如:{sda1} {sda2} {sda3} { sda4 [sda5] [sda6] [sda7] }
sda123是主分區
sda4是擴展分區,占用一個主分區位,但不能直接使用,需要建立邏輯分區使用
sda567是邏輯分區