Linux指令
1.日常指令
1. cd指令 - 進(jìn)入文件夾
cd ------>文件夾路徑(路徑可以是絕對地址也可以是相對地址)-進(jìn)入到指定路徑對應(yīng)的文件夾
cd .. ------>返回上層目錄
cd / ------>進(jìn)入系統(tǒng)根目錄
cd ~ ------>進(jìn)入電腦根目錄
2. ls指令 - 顯示當(dāng)前目錄中的內(nèi)容
ls ------>直接顯示當(dāng)前文件夾中的內(nèi)容的名字(隱藏文件和文件夾` 看不到)
ls -l ------>直接顯示當(dāng)前文件夾中的內(nèi)容的名字(隱藏文件和文件夾看不到)
ls -lh ------>顯示當(dāng)前文件夾中的內(nèi)容和內(nèi)容的基本信息(隱藏文件和文件夾看不到)
ls -a ------>顯示當(dāng)前文件夾中所有的內(nèi)容(包括隱藏文件)
ls -R ------>遞歸顯示當(dāng)前目錄以及當(dāng)前目錄下所有的子目錄中的內(nèi)容
ls -r ------>內(nèi)容倒序顯示
ls -S/-t ------>顯示文件夾中的內(nèi)容普舆,并且內(nèi)容按大小/時間從大到小排序
ls -Sr ------>按文件大小從小到大排序
ls -Srlh ------>按文件大小從小到大排序砍鸠,并且顯示內(nèi)容的基本信息
3. pwd指令
pwd ------>查看當(dāng)前目錄的絕對路徑
4.文件操作
1)touch指令 新建文件
touch 文件路徑文件名------>在指定位置創(chuàng)建指定文件
touch ../a.txt ------>在當(dāng)前目錄的上層目錄新建一個文件a.txt
touch /home/a/a.txt ------>在根目錄下home目錄中的a目錄里面創(chuàng)建一個文件a.txtl
2)cat指令 查看文件內(nèi)容(讀文件)
cat 文件路徑文件名 ------>讀取指定路徑對應(yīng)的文件的內(nèi)容
3)vim指令
vim 文件路徑文件名 ------>使用vim打開文件
5文件夾操作
mkdir 新文件夾路徑文件夾名 ------>在指定位置創(chuàng)建文件夾,若沒有會報錯
mkdir -p 新文件夾路徑文件夾名 ------>在指定路徑創(chuàng)建指定文件夾,若沒有就創(chuàng)建
mkdir -p a/{b,c,...}/{d,e,f,g,...} ------>在當(dāng)前位置創(chuàng)建a,在a內(nèi)創(chuàng)建多個文件夾,在多個文件夾內(nèi)再創(chuàng)建多個相同的文件夾
6刪除文件和文件夾
1)rm指令 刪除文件和文件夾
rm 文件路徑文件名 ------>刪除指定文件(刪除的時候會循環(huán)是否確定刪除株搔,y-同意肺缕,n-不同意)
rm -f 文件路徑文件名 ------>刪除指定文件(刪除的時候不詢問)
rm -r 文件夾路徑文件夾名 ------>刪除指定文件夾
2)rmdir指令 刪除空文件夾
rmdir 文件夾路徑------>刪除空文件夾
7拷貝和移動
1)拷貝
cp 文件路徑1 文件路徑2------>將文件1中的內(nèi)容復(fù)制粘貼到文件2(如果文件2不存氛魁,會自動創(chuàng)建降允;如果存在會詢問是否覆蓋)
cp 文件路徑 文件夾路徑------>將指定文件復(fù)制粘貼到指定文件夾中
cp -r 文件夾路徑1 文件夾路徑2------>將文件夾1復(fù)制粘貼到文件夾2中
2)移動
mv 文件路徑1 文件路徑2 ------>將文件1移動到文件2所在的位置
**mv 文件名1 文件名2 ** ------>將文件1重命名為文件2(若兩個文件同時存在同一文件夾中,則重命名后文件2會被刪除,文件1會被重命名)
mv 文件路徑 文件夾路徑 ------>將文件直接移動到指定文件夾中
**mv 文件夾路徑1 文件夾路徑2 ** ------>將文件夾1移動到文件夾2中
8獲取指令的歷史記錄
history ------>顯示當(dāng)前系統(tǒng)已經(jīng)執(zhí)行過的所有指令
如果想要顯示歷史記錄的時候顯示指令執(zhí)行的時間需要修改~/.bashrc文件:
export HISTTIMEFORMAT="[%y-%m-%d_%T%M%S]"
修改完成后需要通過指令:source ~/.bashrc去執(zhí)行這個配置文件烁落,最后歷史記錄的時間才會生效
9創(chuàng)建鏈接
1)創(chuàng)建軟鏈接
ln -s 源文件路徑 入口文件位置 ------> 給源文件在指定位置創(chuàng)建一個軟鏈接(軟連接本質(zhì)就是用來保存源文件絕對地址的一個文件)
注:源文件路徑必須是絕對路徑,如果刪除或者移動源文件,軟連接會直接無效
2)創(chuàng)建硬鏈接
ln 源文件路徑 硬連接文件地址 ----->給源文件在指定位置創(chuàng)建一個硬鏈接硬鏈接的本質(zhì)就是源文件內(nèi)容的另外一個引用(相當(dāng)于文件的另一個文件名)膨更,所以刪除或者移動源文件硬鏈接仍然有效,只是刪除硬鏈接會變成普通文件
10進(jìn)程相關(guān)指令
1)ps指令
ps ------>查看當(dāng)前進(jìn)程狀態(tài)
ps -aux ------>查看當(dāng)前進(jìn)程所有狀態(tài)
ps grep 進(jìn)程名/id ------>根據(jù)進(jìn)程名/進(jìn)程ID查看指定進(jìn)程
2)top指令
top ------>實(shí)時查看當(dāng)前所有的進(jìn)程信息和系統(tǒng)信息
top -p PID1,PID2,... ------>實(shí)時監(jiān)測指定的進(jìn)程
3)free指令
free ------>顯示當(dāng)前系統(tǒng)的內(nèi)存信息缴允,顯示的時候以kb為單位
free -單位 ------>顯示當(dāng)前系統(tǒng)的內(nèi)存信息荚守,以指定單位來顯示
free -m - 顯示當(dāng)前系統(tǒng)的內(nèi)存信息,以Mb為單位
4)kill指令
kill 進(jìn)程ID ------>殺掉指定ID對應(yīng)的進(jìn)程
kill -1/-9/-15進(jìn)程ID ------>以指定的方式殺掉進(jìn)程(-1表示不間斷重啟练般;-9表示強(qiáng)制殺死進(jìn)程矗漾;-15表示正常結(jié)束進(jìn)程)
pkill 進(jìn)程名 ------>殺死指定進(jìn)程名對應(yīng)的進(jìn)程(中間可以加-1/-9/-15)
killall 進(jìn)程名 ------>殺死和進(jìn)程名相關(guān)的所有進(jìn)程
5)uptime指令
uptime ------>查看系統(tǒng)的基本信息(啟動時間等)
11用戶管理
一個Linux操作系統(tǒng)可以有多個用戶(user),也可以有多個用戶組(group)薄料;
users ------>查看當(dāng)前用戶
groups ------>查看當(dāng)前分組
groupadd 分組名 ------>創(chuàng)建分組(管理員才能創(chuàng)建;可以通過查看/etc/group文件來查看當(dāng)前系統(tǒng)所有的分組)
useradd 用戶名 ------>創(chuàng)建指定用戶(1.用戶創(chuàng)建成功后系統(tǒng)會自動在/home目錄下創(chuàng)建一個和用戶名同名的文件夾;2.會自動創(chuàng)建和用戶名同名的分組,并且將當(dāng)前用戶添加到這個分組中)
useradd -G 分組1,分組2… 用戶名 ------>創(chuàng)建指定用戶,并且將用戶添加到指定分組
usermod -G 分組1,分組2 用戶名------>修改用戶分組
password 用戶名 ------>修改用戶密碼(需要root權(quán)限)
su 用戶名 ------>切換賬號(root登錄的時候切換不需要密碼)
exit ------>退出當(dāng)前賬號
sudo -在命令前sudo是以管理員身份執(zhí)行指令
注意:不是所有的用戶都可以通過sudo來以管理員身份執(zhí)行指令敞贡,如果想要能夠使用sudo必須添加配置
①. ubuntu:將需要有管理員身份的賬號添加到sudo分組中
②. redhat和contos:在/etc/sudoers配置文件中添加代碼:
#Allow root to run any commands anywhere
root ALL=(ALL)ALL#(默認(rèn)有的)
xiaoming ALL=(ALL)ALL#(自己添加的,xiaoming是用戶名)
12文件權(quán)限
默認(rèn)情況下文件和文件夾的權(quán)限:文件所有者有讀寫權(quán)限,同組用戶和其他用戶都是只讀權(quán)限.
文件類型 | 所有者權(quán)限 | 同組用戶權(quán)限 | 其他用戶權(quán)限 |
---|---|---|---|
d(目錄) | rwx | r-- | --- |
-(文件) | rwx | r-- | --- |
l(連接) | rwx | r-- | --- |
chmod 權(quán)限值 文件路徑 ------>將指定文件的權(quán)限修改成指定值
chmod [a,u,g,o]/[+-]/[r,w,x] 文件地址 ------>給指定文件對應(yīng)指定用戶添加或者刪除指定權(quán)限(a-所有用戶,u-文件所有者,g-同組用戶,o-其他用戶;+表示添加權(quán)限,表示刪除權(quán)限;r-表示讀權(quán)限,w表示寫權(quán)限,x表示執(zhí)行權(quán)限)
chmod a-x 文件地址 #刪除所有用戶的執(zhí)行權(quán)限
chmod u+w 文件地址 #給文件所有者添加寫的權(quán)限
13日志管理
1)查看文件
cat 文件 ------>直接查看文件所有內(nèi)容(查看文件內(nèi)容的時候可以加參數(shù)-n摄职,讓內(nèi)容在顯示的時候顯示行號)
head -N 文件地址文件名 ------>顯示指定文件前N行內(nèi)容
tail -N 文件地址文件名 ------>顯示指定文件后N行內(nèi)容
less 文件 ------>按頁顯示文件內(nèi)容(通過快捷鍵控制內(nèi)容顯示過程;文件內(nèi)容不會打印到shel/終端里)
less -N 文件 ------>按頁顯示文件內(nèi)容,每次翻頁的時候翻N行
more 文件 ------>按頁顯示文件內(nèi)容(通過快捷鍵控制內(nèi)容顯示過程;文件內(nèi)容會打印到shell/終端里)
more -N 文件 ------>按頁顯示文件內(nèi)容,每次翻頁的時候翻N行
快捷鍵:
按j向下一行
按k向上一行
按f向下翻一頁
按b向上翻一頁
按g到全文開頭
按G到全文結(jié)尾
按Q退出
2)文件處理
凡是有的打印結(jié)果的指令,我們都可以通過相關(guān)指令對應(yīng)結(jié)果進(jìn)行處理
如果需要對某一個指令的結(jié)果使用另外的指令進(jìn)行二次處理的時候誊役,就需要用到管道 |
sort-排序
sort ------>從小到大排序(將一行內(nèi)容作為一個字符串,按字符串大小對應(yīng)內(nèi)容進(jìn)行排序,默認(rèn)不區(qū)分大小寫)
cat a.txt | sort ------>對a.txt的文件內(nèi)容從小到大排序顯示
參數(shù):
-r ------> 逆序
-nk 1 ------>數(shù)值大小排序
-nk 2 ------>字符大小排序(默認(rèn))
cat a.txt|sort -nk 1 ------>對a.txt的文件內(nèi)容按數(shù)字大小從小到大排序
cat a.txt|sort -rnk 1 ------>對a.txt的文件內(nèi)容按數(shù)字大小從大到小排序
cat a.txt|sort -nk 2 ------>對a.txt的文件內(nèi)容按字符大小從小到大排序(默)
cat a.txt|sort -rnk 2 ------>對a.txt的文件內(nèi)容按字符大小從大到小排序
uniq-去重
uniq ------>只能將緊挨著的相同行去掉重復(fù)的(如果需要去掉所有重復(fù)的行,先排序?qū)⑾嗤男蟹诺揭黄?
cat a.txt | unkq ------>去掉a.txt文件內(nèi)容中相鄰重復(fù)的行
cat a.txt | sortluniq ------>去掉a.txt文件內(nèi)容中所有重復(fù)的行
-c ------>重復(fù)欠數(shù)
awk-獲取列
awk '{print $N}' ------>獲取內(nèi)容中第N列的數(shù)據(jù)
historylawk '{print $2}'------>獲取歷史記錄第2列的內(nèi)容
historylawk'{print $2,$3}'------>獲取歷史記錄第2列和第3列的內(nèi)容
練習(xí):
history | awk '{print $4}'|sort|uniq -c|sort -rnk 1|head -5
顯示最常用的指令和使用次數(shù)
3)輸出重定向
執(zhí)行有打印結(jié)果的指令 > 文件地址 ------>將指定指令執(zhí)行的結(jié)果保存到指定文件中(先清除原文件內(nèi)容再添加)
執(zhí)行有打印結(jié)果的指令 >> 文件地址 ------>將指定指令執(zhí)行的結(jié)果保存到指定文件中(直接將結(jié)果追加到原文件中)
history > a.txt ------>將當(dāng)前歷史記錄直接保存到a.txt文件中
將最常用的3個指令及其使用次數(shù)保存到a.txt文件中
history l awk'{print $4}'lsort luniq-c I sort-rnk 1 I head-n3>a.txt
4)統(tǒng)計(jì)
wc -c/-w/-l 文件地址 ------>統(tǒng)計(jì)指定文件中字符/單詞/行的數(shù)量
5)查找
- 查找文件內(nèi)容 grep
①: grep 內(nèi)容 文件地址文件名 ------>在指定文件中查找指定內(nèi)容(返回文件中所有包含指定內(nèi)容的行)
grep you a.txt ------>獲取a.txt中包含you的所有的行
grep的參數(shù):
-n ------>顯示結(jié)果的時候顯示行號
-i ------>查找內(nèi)容的時候忽略大小寫
-E ------>按正則表達(dá)式進(jìn)行匹配
使用方法: grep -E '正則表達(dá)式' 文件
注意:Linux操作系統(tǒng)中正則表達(dá)式不支持:\d,\D,\w,\w,\s,\S,\b,\B;其他語法都支持
-v ------>忽略字段
grep you a.txt-v------>獲取a.txt中不包含you的所有的行
②: 執(zhí)行有打印結(jié)果的指令 |
**grep 內(nèi)容 ** ------>在指令執(zhí)行結(jié)果中查找指定內(nèi)容
③: grep -r 內(nèi)容 文件夾地址 ------>在指定文件夾中所有的文件內(nèi)容中查找指定內(nèi)容
- 查找文件名 find
①: find 文件夾路徑 -name 文件名 ------>在指定文件夾下按文件名找指定文件
找指定文件名
find dirl -name 'test1.py' #在文件夾dir1找名字是test1.py的文件
find dirl -name '*.txt' #在文件夾dir1找后綴是txt的所有文件
find dirl -name ' test*. txt'
find dirl -name ' test*'
find dirl -name '*c. txt'
②: find 文件夾路徑 -size +/-文件大小 ------>在指定文件夾下找文件大小滿足條件的所有的文件
find dirl -size +4k------>查找在文件夾dir1中所有大于4k的文件
find dirl -size -4k------>查找在文件夾dir1中所有小于4k的文件
find dirl -size +5k -size -10k ------>查找在文件夾dir1中所有大于5k并且小于10k的文件(文件大小如果是小數(shù),算
的時候向上取整)
find dirl -size +4k -name '*.txt'------>查找在文件夾dir1中所有大于4k的txt文件
- 查指令
which 指令名 ------>精確查找當(dāng)前指令對應(yīng)的文件的路徑
whereis 指令名 ------>查找和指定指令相關(guān)的所有的文件的路徑
man 指令名 ------>獲取指定指定的使用手冊
指令名 --help ------>獲取指定指令的幫助文檔
14網(wǎng)絡(luò)管理
ifconfig ------>查看網(wǎng)卡狀態(tài)
netstat -natp ------>查看網(wǎng)絡(luò)連接狀態(tài)
netstat -natp | grep 端口號 ------>查看指定端口的網(wǎng)絡(luò)連接狀態(tài)
ping ip地址 ------>給指定地址的服務(wù)器發(fā)送數(shù)據(jù)(主要用來檢測當(dāng)前網(wǎng)絡(luò)通不通)
ping -i 時間(秒) IP地址 ------>每隔指定時間ping一次(時間可以是小數(shù))
ping -c 次數(shù) IP地址 ------>ping指定次數(shù)(不限制次數(shù)的時候會不斷的ping)
wget 地址------>下載
15壓縮和歸檔
壓縮可以讓文件變小,一般在需要傳輸前都會先對文件進(jìn)行壓縮.注意,壓縮指令只針對文件有效,并且一次只能壓縮一個文件.
歸檔可以將一個文件夾變成一個文件(tar文件)
1)歸檔和解歸檔
tar -cvf 歸檔后文件存放的地址(歸檔后的文件名) 需要?dú)w檔的文件 ------>將文件進(jìn)行歸檔操作(既可以對文件進(jìn)行歸檔也可以對文件夾歸檔)
tar -xvf 歸檔文件地址 ------>將指定的歸檔文件解歸檔
2)壓縮和解壓縮
**gzip 文件地址 **------>壓縮指定文件(壓縮后會生成一個gz文件,并且會刪除原文件)
gzip -c 需要壓縮的文件地址文件名 > 壓縮文件地址 ------>將指定文件壓縮到指定位置,并且保留原文件
gzip -d 壓縮文件地址 ------>解壓指定文件(解壓完成后會刪除原壓縮文件)
gzip -l 壓縮文件地址 ------>列出壓縮文件中的內(nèi)容
xz 文件地址 ------>壓縮指定文件(壓縮文件后綴是xz)
xz -d 壓縮文件地址 ------>解壓指定文件
gunzip 壓縮文件地址 ------>解壓指定文件(解壓完成后會刪除原壓縮文件)
16包管理工具(軟件安裝)
包管理工具: yum
- yum search: 搜索軟件包,例如yum search nginx.
- yun list installed:列出已經(jīng)安裝的軟件包,例如yum list installed I grep z1ib.
- yum instal1:安裝軟件包,例如yum insta11 nginx.
- yum remove:刪除軟件包,例如yum remove nginx.
- yum update:更新軟件包,例如yum update可以更新所有軟件包,而yum update tar只會更新tar.
- yum check-update:檢查有哪些可以更新的軟件包.
- yum info:顯示軟件包的相關(guān)信息,例如yum info nginx.
源代碼構(gòu)建安裝軟件:
- wget 安裝包的路徑 -下載安裝包
- gunzip/tar 壓縮包 - 解壓、解歸檔
- (設(shè)置安裝路徑)
- cd 安裝包目錄 執(zhí)行: make && make install -編譯安裝包程序
- 給可執(zhí)行文件添加軟連接到usr/bin目錄下 -添加快捷方式
#源代碼構(gòu)建python3.x
[root ~]# yum install gcc (安裝編譯環(huán)境)
[root ~]# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz (下載安裝包)
[root ~]# gunzip Python-3.6.5.tgz (解壓)
[root ~]# tar -xvf Python-3.6.5.tar (解歸檔)
[root ~]# cd Python-3.6.5 (進(jìn)入安裝包)
[root ~]# ./configure --prefix=/usr/local/python36 --enable-optimizations (設(shè)置安裝路徑)
[root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel (安裝相關(guān)依賴庫)
[root ~]# make && make install (編譯執(zhí)行安裝文件)
...
[root ~]# ln -s /usr/local/python36/bin/python3.6 /usr/bin/python3 (給python指令文件創(chuàng)建快捷方式python3)
[root ~]# python3 --version
Python 3.6.5
[root ~]# python3 -m pip install -U pip (安裝pip)
[root ~]# ln -s /usr/local/python36/bin/pip /usr/bin/pip3 (給pip指令創(chuàng)建快捷方式pip3)
[root ~]# pip3 --version