Shell:是一個(gè)殼电媳,把內(nèi)核封裝在里面钥组,把命令傳給操作系統(tǒng)撼嗓。分為CLI狭瞎、GUI
CLI:Command Line Interface细移,命令行界面 Bash
GUI:Graphical User Interface,圖形界面
命令行Bash基本操作
這幾個(gè)平時(shí)不常用熊锭,主要寫腳本時(shí)用
- history 查看歷史命令信息
- !! 重復(fù)前一個(gè)命令
- !字符 重復(fù)前一個(gè)以“字符”開頭的命令
- !num 按照歷史記錄的序號(hào)執(zhí)行命令
- !?abc 重復(fù)之前包含“abc”的命令行
- !-n 重復(fù)n個(gè)命令之前的命令
搜索歷史命令
- Ctrl + r 在歷史記錄中搜索命令
- esc 然后再按 . 調(diào)用上一個(gè)命令
命令行通配符 其實(shí)就是正則表達(dá)式中的規(guī)則
- 匹配零個(gè)或多個(gè)
- 弧轧? 匹配任意一個(gè)字符
- [0-9] 匹配一個(gè)數(shù)字范圍
- [abc] 匹配列表里任何字符
- [^abc] 匹配列表以為字符
切換用戶
- su - "用戶名" 切換用戶,不寫參數(shù)碗殷,切到root用戶精绎,不加-,就在原來窗口
- sudo 使用管理員用戶身份來運(yùn)行命令
- id 顯示當(dāng)前用戶信息
- passwd 修改當(dāng)前用戶密碼
- exit 退出當(dāng)前用戶
Bash作業(yè)管理
- 在后臺(tái)運(yùn)行進(jìn)程锌妻,在命令后添加一個(gè) &
- 暫停某個(gè)程序代乃,通過Ctrl + z 或者發(fā)送信號(hào)7
- 終止某個(gè)程序 : Ctrl + c
- jobs 查看當(dāng)前在后臺(tái)運(yùn)行的所有程序
- bg + 命令編號(hào) 控制一個(gè)程序繼續(xù)在后臺(tái)運(yùn)行
- fg + 命令編號(hào) 把一個(gè)程序拉到前臺(tái)
- sleep 30 暫停30秒
Linux 文件系統(tǒng)結(jié)構(gòu)
根目錄為"/"
文件系統(tǒng)嚴(yán)格區(qū)分大小寫(window中不區(qū)分)
路徑使用“/”分割(window中使用“\”)
pwd print work directory當(dāng)前工作目錄
ls list 當(dāng)前目錄下的內(nèi)容 -a:顯示隱藏文件 -l:顯示詳細(xì)信息 -R:遞歸的顯示子目錄 -ld:顯示目錄和鏈接的信息cd
touch/mkdir 創(chuàng)建文件/文件夾,touch可以更新已有文件時(shí)間
rm/rm -r (remove)刪除文件/文件夾 -i 交互式(需要yes/no) -f 強(qiáng)制刪除仿粹,沒有警告
rmdir 刪除空目錄
查看文件類型
- file 查看文件類型
絕對(duì)路徑和相對(duì)路徑
- cd ~ 家目錄
- cd .. 上一級(jí)目錄
- cd . 當(dāng)前目錄
- cd - 上一個(gè)工作目錄
復(fù)制搁吓、移動(dòng)、重命名文件吭历、目錄
- cp 源文件 目標(biāo)文件 -r:遞歸復(fù)制整個(gè)目錄樹 -v:顯示詳細(xì)信息
- mv 文件 目標(biāo)目錄 如果指定文件名堕仔,則可以重命名文件
Linux 系統(tǒng)目錄架構(gòu)
- bin (binary)保存可執(zhí)行的二進(jìn)制命令,也就是保存的命令
- boot 各系統(tǒng)的引導(dǎo)文件
- dev (device)抽象成文件的系統(tǒng)的硬件設(shè)備
- etc 操作系統(tǒng)的配置文件
- home 家目錄
- root 管理員用戶目錄毒涧,有?贮预,說明沒有權(quán)限看
- lib 庫文件
- proc 當(dāng)前操作系統(tǒng)實(shí)時(shí)信息贝室,只存在內(nèi)存匯總
- sbin 可執(zhí)行的二進(jìn)制文件,只有超級(jí)用戶才能執(zhí)行仿吞,bin中都可以操作
- system 底層硬件信息
- tmp 臨時(shí)目錄滑频,會(huì)定期自動(dòng)清除
- usr 默認(rèn)保存安裝的應(yīng)用軟件的位置
- opt 默認(rèn)大型軟件保存的位置
- var 保存經(jīng)常變化的信息。如系統(tǒng)的日志信息唤冈、郵件
常用命令
日期命令
- date 查看當(dāng)前系統(tǒng)時(shí)間
- date -u 格林尼治時(shí)間
- date + %Y - %m - %d 自定義輸入格式
- cal 查看日歷
- uptime 查看系統(tǒng)運(yùn)行時(shí)
輸出命令
- echo 顯示輸入的內(nèi)容
- cat 顯示文件內(nèi)容
- more 翻頁形式顯示文件內(nèi)容(只能向下翻頁)
- less 翻頁顯示文件(帶上下翻頁)
- head 顯示文件頭幾行(默認(rèn)10行)-n 指定顯示的行數(shù)
- tail 顯示文件末尾幾行(默認(rèn)10行) -n 指定顯示的行數(shù) -f 追蹤顯示文件的更新(一般用于查看日志)
查看硬件信息
- lspci 查看pci設(shè)備 -v 詳細(xì)信息
- lsubs 查看USB設(shè)備
- lsmod 查看加載的模塊(驅(qū)動(dòng))
關(guān)機(jī)峡迷、重啟
shutdown 用以關(guān)閉、重啟計(jì)算機(jī) -h 關(guān)機(jī) -r 重新啟動(dòng)
立即關(guān)機(jī) shutdown -h now
10分鐘后關(guān)機(jī) shutdown -h +10
23:30關(guān)機(jī) shutdown -h 23:30
立即重啟 shutdown -r now
poweroff 立即關(guān)閉計(jì)算機(jī)
reboot 立即重啟計(jì)算機(jī)
歸檔你虹、壓縮
- zip 用以壓縮文件 zip + 壓縮后文件+ 要壓縮的文件
- unzip 解壓縮文件
- gzip 也可以壓縮文件
- tar 歸檔文件(不是壓縮绘搞,是歸檔,把文件放一塊)
- tar -cvf out.tar 文件 : 把文件歸檔
- tar -xvf 文件 : 把歸檔文件打開
- tar -cvzf backup.tar 文件: -z 參數(shù):歸檔并壓縮
查找
- locate 用以快速查找文件傅物、文件夾 (此命令需要預(yù)先建立數(shù)據(jù)庫夯辖,數(shù)據(jù)庫默認(rèn)每天更新一天,可用update命令手工建立董饰、更新數(shù)據(jù)庫)
- find 用以高級(jí)查找文件蒿褂、文件夾 find 查找位置 查找參數(shù) 如:find / *md
- find支持很多的查找條件,常用如下:-name -prem -user -group -ctime(修改時(shí)間) -type -size
Vim
- vim 打開vim編輯器
- vi + 文件 文件存在卒暂,就打開啄栓,不存在就新建并打開
- vim 三種模式:1)命令模式:按ESC 進(jìn)入命令模式,可以完成粘貼也祠、復(fù)制昙楚、撤銷等操作
2)插入模式:i 可以進(jìn)入插入模式
3)ex模式:按 : 進(jìn)入ex模式,光標(biāo)會(huì)移動(dòng)到底部诈嘿,可以保存堪旧、修改或者退出 - 命令模式下:
i 在光標(biāo)前插入文本
o 在當(dāng)前行的下一行插入新行
dd 刪除整行
yy 復(fù)制當(dāng)前行
n + yy 將n行的內(nèi)容復(fù)制
p 粘貼
u 撤銷上一個(gè)操作
r 替換當(dāng)前字符
/ 查找關(guān)鍵字 - EX 模式:
:w 保存當(dāng)前修改 (write)
:q 退出 (quit)
:q! 強(qiáng)制退出永淌,不保存修改
:x 保存并退出崎场,相當(dāng)于 :wq shift+ zz
:set number 顯示行號(hào)
:!系統(tǒng)命令 執(zhí)行一個(gè)系統(tǒng)命令并顯示結(jié)果遂蛀,按enter又回到vim界面
:sh 切換到命令行谭跨,使用ctrl+d 切換回vim
磁盤基本概念
- mount 將格式化好的磁盤掛載到一個(gè)目錄上
- umount 卸載已掛載的文件系統(tǒng)
沒必要記住所有東西
- 養(yǎng)成查幫助文檔的好習(xí)慣
- 幾乎所有命令都可以使用-h 或者--help參數(shù)獲取使用方法、參數(shù)信息等
- man Linux最常用的幫助命令,可以獲得相應(yīng)文檔 man ls
- man -k 查看包含關(guān)鍵字的文檔
- info 與man類似李滴,但是提供的信息更為詳細(xì)深入 info ls
- doc 詳盡的文檔
用戶基礎(chǔ)
- 每個(gè)用戶都擁有一個(gè)UserID,操作系統(tǒng)實(shí)際使用的是用戶ID,而非用戶名字
- 每個(gè)用戶屬于一個(gè)主組螃宙,屬于一個(gè)或多個(gè)附屬組;每個(gè)組擁有一個(gè)GroupID;每個(gè)進(jìn)程以一個(gè)用戶身份運(yùn)行所坯,并受該用戶可訪問的資源限制谆扎;每個(gè)可登陸用戶擁有一個(gè)指定的shell
- 用戶分三種類型:
root用戶:ID為0的用戶為root用戶,超級(jí)用戶
系統(tǒng)用戶:(ID為1~499)特點(diǎn)是沒有shell芹助。專門為某些服務(wù)創(chuàng)建的堂湖,不需要登錄shell
普通用戶:(500以上) - id 可以顯示當(dāng)前用戶的信息
- passwd 修改當(dāng)前用戶密碼
- /etc/passwd 保存用戶信息
- /etc/shadow 保存用戶密碼(加密的)
- /etc/group 保存組信息
命令越短闲先,顯示的信息越多。linux的文化
- whoami 顯示當(dāng)前用戶
- who 顯示有哪些用戶已經(jīng)登錄系統(tǒng)
- w 顯示有哪些用戶已經(jīng)登錄并且在干什么
創(chuàng)建一個(gè)用戶
- useradd 創(chuàng)建一個(gè)新用戶 支持參數(shù):-d 家目錄
-s 登錄shell
-u userid
-g 主組
-G 附屬組
修改用戶信息 - usermod 參數(shù) username 支持參數(shù):-l 新用戶名: usermod -l newUser oldUser
-u 新userid
-L 鎖定用戶使其不能登錄
-U 解鎖
刪除用戶 - userdel 保留用戶家目錄
- userdel -r 同時(shí)刪除用戶的家目錄
創(chuàng)建无蜂、修改伺糠、刪除組
- groupadd
- groupmod
- groupdel
權(quán)限機(jī)制
chown 改變文件的所屬用戶 -R 參數(shù),遞歸的修改目錄下的所有文件的所屬用戶
chgrp 改變文件的所屬組 -R 參數(shù)斥季,遞歸的修改目錄下的所有文件的所屬組
chmod 修改文件的權(quán)限: chmod 模式 文件
模式為如下格式:1. u 训桶、g 、o 分別代表用戶酣倾、組舵揭、其他
2. a 可以代指ugo
3. + 、- 代表加入或者刪除對(duì)應(yīng)權(quán)限
4. r 躁锡、w 午绳、x 代表三種權(quán)限,read稚铣、write箱叁、執(zhí)行權(quán)限
模式示例:chmod u+rw linux 為這個(gè)文件linux所屬用戶加入讀寫權(quán)限
chmod g-x linux 為這個(gè)文件所屬組減去執(zhí)行權(quán)限chmod 也支持以數(shù)字方式修改權(quán)限,三個(gè)權(quán)限分別由3個(gè)數(shù)字表示:
-r = 4 (2^2) -w = 2 (2^1) -x = 1 (2^0)
rw = 4 + 2 = 6
rwx = 4 + 2 + 1 = 7
r-x = 4 + 1 = 5使用數(shù)字表示ugo權(quán)限必須三個(gè)都選
chmod 660 linux == rw-rw----
chmod 775 linux == rwxrwxr-xls -ld 文件 可以查看當(dāng)前的文件的權(quán)限信息
所有文件夾必須有x權(quán)限惕医,不然沒法查看文件
默認(rèn)權(quán)限每一個(gè)終端都擁有一個(gè)umask屬性,來確定新建文件算色、文件夾的默認(rèn)權(quán)限
umask使用數(shù)字權(quán)限方式表示抬伺,如:022
目錄默認(rèn)權(quán)限是:777-umask (減去)
文件默認(rèn)權(quán)限是:666-umask
一般,普通用戶的默認(rèn)umask是002灾梦,root用戶默認(rèn)umask是022
也就是說峡钓,對(duì)于普通用戶來講:新建文件權(quán)限是:666-002=664;新建目錄權(quán)限是:777-002=775
umask :可以查看默認(rèn)umask的值
3個(gè)特殊權(quán)限
- suid 以文件的所屬用戶身份執(zhí)行若河,而非執(zhí)行文件的用戶能岩;對(duì)目錄無影響
- sgid 以文件的所屬組身份執(zhí)行;在該目錄中創(chuàng)建的任意新文件的所屬組與該目錄所屬組相同
- sticky 對(duì)文件無影響萧福;對(duì)目錄擁有寫入權(quán)限的用戶僅可以刪除其擁有的文件拉鹃,無法刪除其他用戶所擁有的文件
網(wǎng)絡(luò)配置
- linux 中,以太網(wǎng)接口被命名為:eth0鲫忍、eth1等膏燕,0、1代表網(wǎng)卡編號(hào)
- lspci 查看網(wǎng)卡硬件信息 lsusb 查看usb網(wǎng)卡
- ifconfig 查看接口信息 -a 查看所有接口 eth0 查看特定接口
- ifup eth0 / ifdown eth0 啟用悟民、禁用一個(gè)接口
- hostname 查看主機(jī)名
網(wǎng)絡(luò)測(cè)試命令
- ping 192.168.1.1/baidu.com 測(cè)試網(wǎng)絡(luò)連通性,后面可以加IP地址或者域名
- host/dig baidu.com 測(cè)試dns解析,dig命令出來的數(shù)據(jù)更多
- ip route 顯示路由表
- traceroute baidu.com 追蹤到達(dá)目標(biāo)地址的網(wǎng)絡(luò)路徑
- mtr baidu.com (結(jié)合了my traceroute 和ping) 進(jìn)行網(wǎng)絡(luò)質(zhì)量測(cè)試
- hostname 名字 實(shí)時(shí)修改主機(jī)名字
- /etc/sysconfig/network 永久性修改主機(jī)名
故障排查
- 從底層到高層坝辫、從自身到外部的流程進(jìn)行
- 先查看網(wǎng)絡(luò)配置信息是否正確:ip地址、子網(wǎng)掩碼近忙、網(wǎng)關(guān)竭业、dns
- 查看到達(dá)網(wǎng)管是否連通:ping 網(wǎng)關(guān)ip地址
- 查看dns解析是否正常
管道和重定向
- linux中,幾乎所有的命令的返回?cái)?shù)據(jù)都是純文本的及舍,而純文本形式的數(shù)據(jù)又是絕大多數(shù)命令的輸入格式永品,這就讓多命令協(xié)作成為可能。
- linux的命令行為我們提供了管道和重定向機(jī)制击纬,多命令協(xié)作就是通過管道和重定向完成的鼎姐。
- 命令行shell的數(shù)據(jù)流定義:STDIN:標(biāo)準(zhǔn)輸入,編號(hào)0更振,默認(rèn)鍵盤炕桨;
STDOUT:標(biāo)準(zhǔn)輸出,1肯腕,終端
STDERR:標(biāo)準(zhǔn)錯(cuò)誤献宫,2,終端 - 通過管道和重定向我們可以控制CU的數(shù)據(jù)流:
重定向: > 將STDOUT重定向到文件实撒,覆蓋形式
>> 將STDOUT重定向到文件姊途,追加形式 (這2個(gè)只適用用標(biāo)準(zhǔn)輸出)
2> 將STDERR重定義到文件,覆蓋形式
2>&1 將STDOUT和STDERR結(jié)合
< 重定義SDTIN
管道: | 將一個(gè)命令的標(biāo)準(zhǔn)輸出(STDOUT)作為另一個(gè)命令的STDIN ls | grep test*
文本處理
基于關(guān)鍵字搜索: 命令grep用于關(guān)鍵字搜索文本
-i 搜索時(shí)忽略大小寫
-n 顯示結(jié)果所在行數(shù)
-v 輸出不帶關(guān)鍵字的行
-Ax 在輸出的時(shí)候包含結(jié)果所在行之后的指定行數(shù)
-Bx 在輸出的時(shí)候包含結(jié)果所在行之前的指定行數(shù)基于列處理文本: 命令cut用于列處理文本
-d 指定分割字符(默認(rèn)是TAB)
-f 指定輸出的列號(hào)
-c 基于字符進(jìn)行切割文本統(tǒng)計(jì): 命令wc用于統(tǒng)計(jì)文本信息
-l 只統(tǒng)計(jì)行數(shù)
-w 只統(tǒng)計(jì)單詞
-c 只統(tǒng)計(jì)字節(jié)數(shù)
-m 只統(tǒng)計(jì)字符數(shù)文本排序: 命令sort用于對(duì)文本內(nèi)容進(jìn)行排序(基于英文)
-r 倒序排列
-n 基于數(shù)字進(jìn)行排列
-f 忽略大小寫
-u 刪除重復(fù)行 uniq 用以刪除重復(fù)的相鄰行
-t c 使用c作為分隔符分割為列進(jìn)行排序
-k x 當(dāng)進(jìn)行基于指定字符分割為列的排序時(shí)知态,指定你基于那個(gè)列排序文本比較: 命令diff用于比較兩個(gè)文件的區(qū)別
-i 忽略大小寫
-b 忽略空格數(shù)量的改變
-u 統(tǒng)一顯示比較信息(一般用以生成patch文件)處理文本內(nèi)容: 命令tr(translate)用于處理文本內(nèi)容,要用重定向方式
-d 刪除關(guān)鍵字 tr -d 'TMD' < test.txt
轉(zhuǎn)換大小寫: tr 'a~z' 'A~Z' < test.txt搜索替換: 命令sed 用以搜索并替換文本,中間用的正則表達(dá)式
sed + 正則 + 文件: 如: sed ‘s/linux/unix/g’ linuxcast 捷兰、sed '1,50s/linux/unix/g' linuxcast