更新時(shí)間:2022-08-10 來源:黑馬程序員 瀏覽量:
一、導(dǎo)學(xué)
掌握Linux命令是高級Java工程師必備的技能之一,但并不是每個(gè)人都能完全掌握,絕大部分Java初中級工程師只知道少數(shù)的cd/ls/mkdir/rm等非常簡單的命令,但是只會這些命令是完全不夠的,如果想要提升技術(shù)壁壘,晉升成為大牛程序員,掌握最實(shí)用的Linux命令是不可或缺的。文本作者結(jié)合多年企業(yè)開發(fā)經(jīng)驗(yàn),將最實(shí)用的Linux命令進(jìn)行了清晰的分類,逐條羅列,對照反復(fù)練習(xí)即可快速掌握。熟練使用文本提到的命令能有效提升運(yùn)維技能并幫助各位提高工作效率。
> 提示:
>
> + 操作系統(tǒng):CentOS
>
> + 適合對象:使用過Linux的人群
> + 本文命令:多以示例命令為主,要學(xué)會舉一反三
二、安裝服務(wù)命令
在日常開發(fā)和部署的工作中,安裝服務(wù)是非常常見的操作,一般來說當(dāng)我們執(zhí)行某個(gè)命令提示不存在命令時(shí),都需要進(jìn)行服務(wù)安裝,一般安裝命令有2種:在線安裝和離線安裝。對比來說,如果網(wǎng)速還不錯(cuò)的話,推薦使用在線安裝更加方便。
在線安裝
`````yacas
yum install -y vim
`````
示例含義:在線安裝vim服務(wù)
> 注意:如果要加速yum在線下載需要修改yum源為國內(nèi)源
2. 離線安裝
``````yacas
rpm -ivh tomcat.rpm
``````
示例含義:離線安裝tomcat服務(wù)
> 注意:rpm文件安裝包需要上傳到服務(wù)器上,再執(zhí)行安裝命令
三、文件操作命令
文件操作命令是Linux中使用最為頻繁的命令,眾多命令中還包含非常出名的Linux三劍客grep、awk、sed,在文中也有介紹。
1. 創(chuàng)建文件
創(chuàng)建方式1:touch命令直接創(chuàng)建
+ ``````yacas
touch abc.txt
``````
創(chuàng)建方式2:vi命令修改后保存
+ ``````yacas
vi abc.txt
``````
+ 然后保存
創(chuàng)建方式3:echo命令輸出寫入文件
+ `````yacas
echo hello > abc.txt
`````
2. 編輯文件
+ ``````yacas
vi abc.txt
``````
+ ``````yacas
vim abc.txt
``````
3. vi或vim內(nèi)查找關(guān)鍵詞
用法:vi或vim打開文件后(不要進(jìn)入到編輯模式)輸入英文的?或/,后面跟上要搜索的關(guān)鍵詞即可
+ `````yacas
?hello
`````
+ 然后按住n健查找下一個(gè),按N健查找上一個(gè)
+ ``````yacas
/hello
``````
+ 然后按住n健查找下一個(gè),按N健查找上一個(gè)
4. 命令光標(biāo)的移動
這個(gè)命令非常實(shí)用,有時(shí)候當(dāng)我們輸入一段比較長的命令時(shí),光標(biāo)已經(jīng)到最后了,但發(fā)現(xiàn)前面的命令寫錯(cuò)了,一般的做法是按照向左箭頭按鍵一直往左移動光標(biāo),改完由按向右監(jiān)聽按鍵一直向右移動光標(biāo),這個(gè)效率太慢了,以下快捷鍵能快速解決這個(gè)問題,能直接達(dá)到命令最前面和最后面。
+ 移動到命令最前:按住快捷鍵 ctrl +a
+ 移動到命令最后:按住快捷鍵 ctrl+e
5. vi或vim設(shè)置或取消行號
vi或vim打開文件后,根據(jù)要求分別輸入如下命令(不要進(jìn)入到編輯模式)
+ 設(shè)置行號
``````shell
:set nu
``````
+ 取消行號
``````shell
:set nonu
``````
6. vi或vim 調(diào)到末行及首行
vi編輯文件時(shí),如果內(nèi)容太長,想要快速將光標(biāo)跳轉(zhuǎn)到文件頭部或尾部,使用下面按鍵
+ 跳轉(zhuǎn)末行 ,按住 G健
+ 跳轉(zhuǎn)首行 ,按住 g健
7. vim或vim刪除行
不進(jìn)入編輯模式,在要?jiǎng)h除的行敲擊 dd
8. vi或vim復(fù)制行
不進(jìn)入編輯模式,在要?jiǎng)h除的行敲擊 4 yy,標(biāo)識從當(dāng)前行開始復(fù)制4行,再移動光標(biāo)到指定位置按p鍵粘貼
9. 不編輯查看文件全部內(nèi)容
``````shell
cat abc.txt
``````
10. 不編輯查找文件內(nèi)容
+ 方式1
``````shell
grep "heima" abc.txt
``````
+ 方式2
``````shell
cat abc.txt |grep "heima"
``````
這里用到了Linux三劍客之一的篩選命令grep,主要用于篩選文本
10. 統(tǒng)計(jì)某個(gè)關(guān)鍵字在文件中出現(xiàn)的次數(shù)
+ 方式1
``````shell
grep "heima" abc.txt |wc -l
``````
+ 方式2
``````shell
grep "heima" abc.txt |wc -l
``````
11. 查看文件首行或尾行
+ 查看前3行
``````shell
head -3 abc.txt
``````
+ 查看尾3行
``````shell
tail -3 abc.txt
``````
+ 查看尾實(shí)時(shí)輸出的3行日志
``````shell
tail -3f abc.txt
``````
12. 替換文件內(nèi)某個(gè)關(guān)鍵字
sed作為Linux三劍客之一,是使用的最流行的替換命令,主要用于替換本文中的內(nèi)容
``````shell
sed -i s/heima/itcast/g abc.txt
``````
示例含義:替換abc.txt文件內(nèi)所有heima為itcast
13. 重命名文件
+ 方式1
``````shell
mv abc.txt bcd.txt
``````
+ 方式2
``````shell
rename abc bcd abc.txt
``````
14. 輸出格式固定的文件中第幾行第幾列數(shù)據(jù)
awk作為Linux三劍客之一,主要用于輸出固定格式文件的內(nèi)容
> 假設(shè)文本文件內(nèi)每行數(shù)據(jù)的格式如: 姓名,年齡,城市,注意分隔符是逗號
+ 輸出每一行
``````shell
awk '{print;}' aaa.txt
``````
+ 輸出第三列所有值
``````shell
awk -F ',' '{print $3}' aaa.txt
``````
-F后緊跟的是每行內(nèi)容的分割符號
+ 輸出倒數(shù)第2列的值
``````shell
awk -F ',' '{print $(NF-1)}' aaa.txt
``````
+ 輸出前2行的第2列的值
``````shell
awk -F ',' '{print $2}' aaa.txt|head -2
``````
15. **根據(jù)名稱查找某目錄下的文件
``````shell
find test/ -name abc*
``````
示例含義:查找test目錄下,所以文件名包含abc的文件
16. 查找文件并刪除
``````shell
find test/ -name "abc*" | xargs rm -rf
``````
示例含義:查找test目錄下,所以文件名包含abc的文件并執(zhí)行刪除操作
17.查找30天前創(chuàng)建的文件并刪除
``````shell
find test/ -mtime +30 -type f | xargs rm -rf
``````
示例含義:查找test目錄下,所有創(chuàng)建時(shí)間超過30天的文件并執(zhí)行刪除操作
18. 下載文件
+ 單線程下載
`````shell
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
`````
+ 多線程下載
``````shell
axel -n 10 https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
``````
示例含義:開啟10個(gè)線程一起下載一個(gè)文件,注意這種下載效率會比單線程快很多
+ 將本地文件上傳到服務(wù)器或從服務(wù)器下載
+ 上傳
``````
rz
``````
執(zhí)行命令后會彈出窗口,選擇本地的文件,確認(rèn)后會執(zhí)行上傳
+ 下載
``````
sz 文件命名
``````
默認(rèn)會下載到本地操作系統(tǒng)downloads目錄下
說明:以上兩個(gè)命令執(zhí)行的前提是已經(jīng)安裝了lrzsz,可通過在線命令`yum install -y lrzsz`安裝
四、壓縮解壓命令
壓縮解壓命令在開發(fā)中比較常見,一般開發(fā)部署遇到的壓縮包主要以zip和tar包為主,掌握這2種壓縮文件的壓縮和解壓命令就足夠了。
1. zip
+ 壓縮
``````shell
zip -r xxxx.zip xxxx
``````
實(shí)例含義:將xxx的全部內(nèi)容壓縮為xxx.zip
+ 解壓
``````shell
unzip -d xxxx xxxx.zip
``````
2. tar.gz
+ 壓縮
``````shell
tar -zcvf test.tar.gz test/
``````
+ 解壓
``````shell
tar -zxvf test.tar.gz test
``````
五、系統(tǒng)命令
系統(tǒng)命令是我們?nèi)粘E挪榉?wù)器問題及進(jìn)行系統(tǒng)設(shè)置時(shí)使用比較多的命令,這些命令要求熟記于心
1.查看網(wǎng)卡信息
``````shell
ip addr
ifconfig
``````
2. 修改密碼
修改當(dāng)前用戶密碼:
``````
passwd
``````
修改其他用戶密碼:
``````
password deploy
``````
3. 重啟系統(tǒng)
``````shell
reboot
``````
4. 重啟網(wǎng)卡
``````shell
service network restart
``````
5. 關(guān)閉防火墻
``````shell
systemctl stop firewalld
systemctl disable firewalld
``````
6. 查看內(nèi)存大小
+ 查看還剩多少m
`````shell
free -m
`````
+ 查看還剩多少g
``````
free -g
``````
7. 查看磁盤空間
+ 查看總共剩下多少空間
``````shell
df -h /
``````
+ 查看某個(gè)目錄占用空間
``````shell
du -sh test/
``````
+ 查看某個(gè)文件占用空間
``````shell
du -sh abc.txt
``````
8. 查看cpu使用情況
`````
top
`````
9. 跨服務(wù)器傳輸文件
+ 將本服務(wù)器文件傳輸?shù)狡渌?wù)器
``````shell
scp aaa.zip root@192.168.200.130:/usr/local/
``````
+ 將本服務(wù)器目錄傳輸?shù)狡渌?wù)器
``````shell
scp -r aaa root@192.168.200.130:/usr/local/
``````
+ 將其他服務(wù)器文件傳輸?shù)奖痉?wù)器
``````shell
scp root@192.168.200.130:/usr/local/bbb.zip aaa.zip
``````
+ 將其他服務(wù)器目錄傳輸?shù)奖痉?wù)器
``````shell
scp -r root@192.168.200.130:/usr/local/bbb /mnt
``````
六、文件權(quán)限命令
為文件添加權(quán)限
比如我們在任意目錄下執(zhí)行`ls -al`,將看到文件或目錄最前面顯示效果如下
``````
444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx
``````
解讀下這個(gè)展示效果的含義,其實(shí)都是文件系統(tǒng)權(quán)限相關(guān)內(nèi)容:
從左至右,先是3個(gè)數(shù)字,代表文件權(quán)限然后是9個(gè)字母(或者連字符),其中 1-3位數(shù)字代表文件所有者權(quán)限,4-6位數(shù)字代表同組用戶的權(quán)限,7-9數(shù)字代表其他用戶的權(quán)限,而具體的權(quán)限是由數(shù)字來表示的。
+ 讀取的權(quán)限等于4,用r表示
+ 寫入的權(quán)限等于2,用w表示
+ 執(zhí)行的權(quán)限等于1,用x表示
通過4、2、1的組合,得到以下幾種權(quán)限:
+ 0(沒有權(quán)限)
+ 4(讀取權(quán)限)
+ 5(4+1 | 讀取+執(zhí)行)
+ 6(4+2 | 讀取+寫入)
+ 7(4+2+1 | 讀取+寫入+執(zhí)行)
+
2. 為某個(gè)目錄添加執(zhí)行權(quán)限
`````shell
chmod a+x -R test
`````
3. 以root身份執(zhí)行命令
`````shell
su chmod a+x -R test
`````
七、進(jìn)程命令
服務(wù)部署時(shí)使用比較多的命令就是進(jìn)程命令,這些命主要是圍繞著查看進(jìn)程、確認(rèn)進(jìn)程存活情況及殺掉進(jìn)程等操作
1.查看進(jìn)程
``````shell
ps -ef|grep java
``````
示例含義:查看所有運(yùn)行中的進(jìn)程信息中包含java的進(jìn)程
2. 查看端口是否占用
`````shell
lsof -i:8080
`````
示例含義:確認(rèn)8080端口是否被占用,如果命令執(zhí)行完有響應(yīng)數(shù)據(jù)列表,則表示已占用
3. 確認(rèn)端口是否開啟
``````shell
telnet 192.168.200.130 8080
``````
示例含義:確認(rèn)192.168.200.130的8080端口是否能連通,能連通就會進(jìn)入黑窗口有光標(biāo),否則會卡主到超時(shí)
4. 殺掉進(jìn)程
``````shell
kill -9 1011
``````
八、結(jié)束語
好了,這么多命令你終于都練習(xí)完畢了,有很多命令是不是讓你感覺很Nice,令你眼前一亮呢?還記得這些命令分為哪些種類嗎,如果忘記了就回顧多敲幾遍,熟能生巧! 最后別忘了,除了文中總結(jié)的命令以外,我們Java開發(fā)中還涉及到基礎(chǔ)命令還有jdk命令、maven命令、git命令,這些也都要求必須掌握的。有關(guān)于服務(wù)部署命令,更高級的命令還有docker容器相關(guān)命令,感興趣可以在本文基礎(chǔ)之上進(jìn)一步自學(xué)docker。