【小白入門 通俗易懂】2021韓順平 一周學(xué)會(huì)Linux

Linux重點(diǎn)筆記
linux的方向:
1. linux運(yùn)維
2. linux嵌入式開(kāi)發(fā)
3. 在linux下做各種程序開(kāi)發(fā)
應(yīng)用領(lǐng)域
1. 個(gè)人桌面領(lǐng)域
2. 服務(wù)器領(lǐng)域(java c++程序部署到linux服務(wù)器)
3. 嵌入式(運(yùn)行穩(wěn)定,內(nèi)核小可達(dá)到幾百kb,機(jī)頂盒,物聯(lián)網(wǎng))
tips:
CPU的架構(gòu)
兩種主要的cup架構(gòu):RISC(精簡(jiǎn)指令集)和CISC (復(fù)雜指令集)
Linux系統(tǒng)使用的是目錄樹(shù)架構(gòu),但我們的文件放置在磁盤分區(qū)當(dāng)中,這樣就引入了“mount(掛載)”
linux分區(qū)
boot分區(qū)(1GB) ?交換分區(qū)(2GB)虛擬內(nèi)存 ? 根分區(qū)(剩余內(nèi)存)
在Linux當(dāng)中,默認(rèn)root的提示字符為 # ,而一般身份使用者的提示字符 為 $
[Ctrl] + [Alt] + [F2]~[F6] 打開(kāi)圖形化界面
[Ctrl] + [Alt] + [F1] :圖形接口桌面
重命名目錄或文件
```
`mv aaa bbb` //將目錄aaa重命名為bbb
`mv aaa.txt bbb.txt` ?//將aaa文件重命名bbb
```
touch 新建文件
`vim vi` ?編輯文件
cat ?打開(kāi)文件
`cd ..` 上一級(jí)
`cd /` 根目錄
`cd ~ `home界面
`cd ../..` 返回上兩級(jí)目錄
`cp -a` 復(fù)制文件夾
echo ? 重定向
tar 打包文件
zip 壓縮文件
unzip 解壓
useradd 創(chuàng)建用戶
文件打包和壓縮
打包和壓縮的區(qū)別
打包是指將一大堆文件按或目錄變成一個(gè)總的文件,壓縮則是將一個(gè)大的文件通過(guò)一些壓縮算法變成一個(gè)小文件
(主要是linux壓縮程序只能針對(duì)一個(gè)文件進(jìn)行壓縮,這樣當(dāng)你想要壓縮一大堆文件時(shí),你就得先借助另外的工具將文件打包成一個(gè)包)
命令:tar/unzip/zip
`tar -zcvf` 打包壓縮后的文件名 要打包的文件可以多個(gè)
z 調(diào)用gzip壓縮命令進(jìn)行壓縮
c 打包文件
v 顯示運(yùn)行過(guò)程
f 指定文件名
-C 解壓到指定路徑
`tar - cvf ab.tar 1.txt ? ? ?//將1.txt文件打包名為ab.tar`
`tar -zcvf ab.tar.gz 1.txt 2.txt //將1.txt 2.txt 壓縮打包為ab.tar.gz`
`tar -zxvf abc.tar.gz -C abc/aabb ? //將abc.tar.gz 解壓到指定的目錄`
查找命令
grep
`grep title note.md`
`grep -n` 顯示行數(shù)
`grep -i` ?不區(qū)分大小寫
`grep -ni` 顯示行數(shù) 不區(qū)分大小寫
`grep -v ` ?顯示剩余的內(nèi)容
查看占用資源情況
`ps -au` 占用的資源
`ps ef` 查看所有的進(jìn)程
`ps -aux` 查看系統(tǒng)中所有的進(jìn)程數(shù)據(jù)
`ps -ef|grep liu` 查看與liu相關(guān)的進(jìn)程
file命令
用于判斷file命令后的文件的基本數(shù)據(jù)
`file test.txt`
改變文件的屬性與權(quán)限
`chgrp`:改變文件所屬群組
`chown`:改變文件擁有者
eg:`chown root:liushuping(擁有者:群組) file.txt` ?改變文件的擁有者和群組
`chmod`:改變文件的權(quán)限
各個(gè)權(quán)限對(duì)照表r4 w2 e1
`chmod -rw------ test.txt`
`chmod 600 test.txt` ?
X 權(quán)限是執(zhí)行的意思 表示可以進(jìn)入這個(gè)目錄
du 查看使用空間
`du -h` 以易讀的方式顯示空間
fdisk是linux的磁盤分區(qū)表操作工具
gcc命令
linux下執(zhí)行一個(gè)可執(zhí)行文件的四個(gè)步驟
預(yù)處理-編譯-匯編-鏈接
1. 預(yù)處理
`g++ -E test.cpp -o test.i`
2. 編譯
`g++ -S test.i -o test.s`
3. 匯編
`g++ -c test.s -o test.o`
4. 鏈接
`g++ test.o -o test`
簡(jiǎn)單的指令
`g++ test.cpp -o test`
遠(yuǎn)程登錄
1. linux服務(wù)器是開(kāi)發(fā)小組共享
2. 正式上線的項(xiàng)目運(yùn)行在公司
遠(yuǎn)程操作 Xshell ?遠(yuǎn)程文件傳輸 Xftp
Xshell 遠(yuǎn)程登陸登錄到Linux操作的軟件
強(qiáng)大的安全終端模擬軟件,支持ssh1 ssh2
遠(yuǎn)程登錄到linux服務(wù)器
1. VMware登錄centos 打開(kāi)終端
`ifconfig` 查看linux 地址
`ping 192.168.xxx` 測(cè)試
2. 打開(kāi)Xshell輸入 域名地址(192.168.xxx)
用戶名 密碼
??vim編輯器
一般模式下
|命令|功能
---|:--:|
h|左
j|上
k|下
l|右
yy|復(fù)制
4yy|復(fù)制四行
4dd|刪除4行
p|粘貼
/hello|查找hello
n|對(duì)查找切換
set nu|顯示行號(hào)
set nonu|隱藏行號(hào)
G|末行
gg|首行
u|撤銷
:sp|上下分屏
:vsp|左右分屏
Ctrl + ww|切屏
Ctrl + v|塊選擇
gg=G|自動(dòng)縮進(jìn)
set autoindent|自動(dòng)縮排
多文件編輯
vim name1 name2 name3
:n 編輯下一個(gè)文件
:N 編輯上一個(gè)文件
:files 列出所有文件
linux賬戶管理
linux系統(tǒng)是一個(gè)多用戶多任務(wù)的操作系統(tǒng),任何一個(gè)要使用系統(tǒng)資源的用戶,都必須首先向系統(tǒng)管理員申請(qǐng)一個(gè)賬號(hào),然后以這個(gè)賬號(hào)的身份進(jìn)入系統(tǒng)
跟使用者帳號(hào)有關(guān)的有兩個(gè)非常重要的文件,一個(gè)是管理使用者 UID/GID重要參數(shù)的` ?/etc/passwd `,一個(gè)則是專門管理密碼相關(guān)數(shù)據(jù)的 `/etc/shadow` ? ?`/etc/group`
`/etc/passwd` ?中有幾行就代表幾個(gè)賬號(hào)
`root:x:0:0:root:/root:/bin/bash` ?七個(gè)字段 賬號(hào)名稱:密碼:UID:GID:使用者信息說(shuō)明欄:主文件夾:shell
添加用戶
`useradd -d /home/test king` ? ?添加一個(gè)名稱為king在/home/test目錄下
添加用戶到指定的組
`useradd -g zkhx lisi` ?將lisi添加到zkhx這個(gè)組里面
指定/修改密碼
passwd 用戶名 ?
刪除用戶
userdel 用戶名
刪除用戶 保留家目錄
刪除用戶 ?不保留家目錄
userdel -r tom
查詢用戶信息
id liushuping
當(dāng)前登錄用戶
whoami
轉(zhuǎn)換組
`# usermod -g ali zhangsan` 轉(zhuǎn)換zhangsan到ali這個(gè)組
用戶組
類似于角色,系統(tǒng)對(duì)有共性的多個(gè)用戶進(jìn)行統(tǒng)一的管理
* 新增組
groupadd
進(jìn)程管理
每個(gè)執(zhí)行的程序都叫做進(jìn)程,每個(gè)進(jìn)程都有PID ?
程序run之后 會(huì)加載到內(nèi)存 就成為一個(gè)進(jìn)程
程序是一個(gè)靜態(tài)的概念 ? 進(jìn)程是一個(gè)動(dòng)態(tài)的概念
后臺(tái)(Mysql tomcat) ? 前臺(tái)
一般系統(tǒng)的服務(wù)器以后臺(tái)進(jìn)程的方式存在,而且常駐系統(tǒng)中,直到關(guān)機(jī)結(jié)束
ps -aux 查看進(jìn)程詳細(xì)信息
> a 顯示當(dāng)前終端的所有進(jìn)程信息
? u 以用戶的合適顯示進(jìn)程信息
? x 顯示后臺(tái)進(jìn)程運(yùn)行的參數(shù)
TTY 終端機(jī)號(hào)
STAT ? 進(jìn)程狀態(tài) s 代表休眠 r代表正在運(yùn)行狀態(tài)
ps -ef以全格式顯示當(dāng)前進(jìn)程
-e 全部進(jìn)程 -f以全格式
終止進(jìn)程 kill和killall
`kill + 進(jìn)程號(hào)`(通過(guò)進(jìn)程號(hào)終止進(jìn)程)
`killall + 進(jìn)程名`(所以子進(jìn)程也將終止)
`kill -9` 強(qiáng)制中止進(jìn)程
pstree 進(jìn)程樹(shù)
`pstree -p` 顯示進(jìn)程的pid
`pstree -u` 顯示進(jìn)程用戶
服務(wù)管理
服務(wù)(service) 本質(zhì)就是進(jìn)程,但是運(yùn)行在后臺(tái),通常都會(huì)監(jiān)聽(tīng)某個(gè)端口,等待其他程序的請(qǐng)求,比如(mysql,sshd,防火墻等)守護(hù)進(jìn)程
**service管理指令**
start stop restart reload status
centos7以后很多服務(wù)用 systemctl
查看服務(wù)名
ls -l /etc/init.d/
setup (所有系統(tǒng)服務(wù))
服務(wù)運(yùn)行級(jí)別(runlevel)
0:系統(tǒng)停機(jī)狀態(tài)
2
3:多用戶狀態(tài) 無(wú)界面
4:
5:圖形界面
開(kāi)機(jī)的流程
開(kāi)機(jī)->BIOS->/boot->systemd進(jìn)程號(hào)為1->運(yùn)行級(jí)別->運(yùn)行級(jí)別
**修改centos靜態(tài)ip**
root權(quán)限下
vim /etc/sysconfig/network-scripts/ifcfg-ens33
將箭頭的部分改成`static`
**設(shè)置主機(jī)名**
`vim /etc/hostname`
**配置linux主機(jī)名稱映射hosts文件**
`vim /etc/hosts`
shell編程
shell是一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過(guò)這個(gè)界面訪問(wèn)操作系統(tǒng)的內(nèi)核服務(wù)。
shell腳本?可以在腳本中執(zhí)行命令行 命令
新建一個(gè)shelltest.sh的腳本?chmod 修改可執(zhí)行文件的權(quán)限
`vim shelltest.sh `
`chmod 777 shelltest.sh`
```shell
#!/bin/bash
cd /opt/software
mkdir leecode
touch file1.txt
```
`./shelltest.sh`
> 解釋: 進(jìn)入/opt/software 在其中新建一個(gè)leecode文件夾,并建立一個(gè)file1.txt文件
1. BASH
bash是絕大多數(shù)Linux系統(tǒng)默認(rèn)的shell
```shell
$! /bin/bash
echo "helloworld"
```
`#!` 是一個(gè)約定的標(biāo)記,告訴系統(tǒng)這個(gè)腳本需要什么解釋器來(lái)執(zhí)行
`echo` 像窗口輸出文本
2. shell變量
* 局部變量
* 環(huán)境變量
* shell變量
shell 字符串
```shell
you_name="liushuping"?
unset you_name??#刪除變量
m_name="zhangsan"
str="lala\"${m_name}\"!\n"
echo ${you_name}
echo "helloworld!"
echo -e $str
~??????
```
雙引號(hào)的優(yōu)點(diǎn)
- 可以有變量
- 可以出現(xiàn)轉(zhuǎn)義字符
1. 獲取字符串的長(zhǎng)度
`echo ${#m_name}`
2. 提取字串
`echo ${m_name:1:4}`
2. 數(shù)組
```shell
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
echo ${array[2]} #讀取數(shù)組2的元素
echo ${#array[*]} #讀取全部
```
shell基本運(yùn)算符
`expr`是一款表達(dá)式計(jì)算工具,使用它能完成表達(dá)式的求值操作
* 表達(dá)式和運(yùn)算符之間要有空格,2 + 2
* 完整的表達(dá)式要被` `包含
```shell
#! /bin/bash
a=10
b=20
val= `expr $a +?$b`
echo "a+b:$val"
val=`expr $b - $a`
echo "a-b:$val"
```