Linux指令格式:指令名 選項 參數
Linux 剛面世時并沒有圖形界面,所有的操作全靠指令完成,如 磁盤操作、檔案存取、目錄操作、程序管理、檔案權限 設定等,在職場中,大量的伺服器維護工作都是在遠端通過SSH 用戶端來完成的,并沒有圖形界面,所有的維護工作,都需要通過指令來完成,在職場中,作為後端程式員,必須要或多或少的掌握一些 Linux 常用的終端指令,Linux 發行版本的指令大概有 200 多個,但是常用的指令隻有 10 多個而已。
檔案及目錄操作
linux下,我們是看不到硬體盤符的,我們隻能看到檔案夾(目錄)

目錄速查表
/ :根目錄,Ubuntu隻有一個根目錄,所有檔案都在它下面
/home/user:使用者工作目錄或者家目錄。
/bin、/usr/bin:可執行二進制檔案的目錄
/boot:放置 linux 系統啟動時用到的一些檔案,如 linux 的核心檔案:/boot/vmlinuz;系統引導管理器:/boot/grub
/dev:存放linux系統下的裝置檔案,通路該目錄下某個檔案,相當于通路某個裝置,常用的是挂載光驅mount /dev/cdrom /mnt
/etc:系統配置檔案存放的目錄,不建議在此目錄下存放可執行檔案,重要的配置檔案有
/home:系統預設的使用者家目錄,新增使用者賬号
- ~ 表示目前使用者的家目錄
- ~edu 表示使用者 edu 的家目錄
/root:系統管理者root的家目錄
/tmp:一般使用者或正在執行的程式臨時存放檔案的目錄,任何人都可以通路,重要資料不可放置在此目錄下
/srv:服務啟動之後需要通路的資料目錄,如 www 服務需要通路的網頁資料存放在 /srv/www 内
/usr:應用程式存放目錄
- /usr/bin:存放應用程式
- /usr/share:存放共享資料
- /usr/lib:存放不能直接運作的,卻是許多程式運作所必需的一些函數庫檔案
- /usr/local:存放軟體更新包
- /usr/share/doc:系統說明檔案存放目錄
- /usr/share/man:程式說明檔案存放目錄
/var:放置系統執行過程中經常變化的檔案
- /var/log:随時更改的日志檔案
- /var/spool/mail:郵件存放的目錄
- /var/run:程式或服務啟動後,其 PID 存放在該目錄下
小技巧
- ctrl + shift + = 放大終端視窗的字型顯示
- ctrl + - 縮小終端視窗的字型顯示
- 自動補全:在敲出 檔案/目錄/指令 的前幾個字母之後,按下tab鍵,如果輸入的沒有歧義,系統會自動補全
- 按 上 / 下 光标鍵可以在曾經使用過的指令之間來回切換
- 如果想退出,并且不想執行目前選中的指令,可以按 ctrl+ c
目錄操作
pwd :檢視目錄 路徑
ls :檢視目前目錄下的 檔案和檔案夾
- ls -l 以清單方式顯示檔案的詳細資訊
- ls -a 顯示全部(包括隐藏檔案)
- ls -t 按照修改時間排序
- ls -l -h 以人性化的方式顯示檔案大小
cd 目錄 :切換路徑
- cd 和 cd ~ :切換到目前使用者的主目錄(/home/使用者目錄)
- cd . :目前目錄
- cd .. :上級目錄
- cd - :上一次所在目錄
mkdir 目錄 :建立目錄
- mkdir -p :如果父目錄不存在,同時建立父目錄
檔案操作
touch 檔案名 :建立檔案
echo 内容 > 檔案名 :向檔案寫入内容
- echo 'abc' > test1.txt (将abc字元串寫入test1.txt,會覆寫原來的内容;如果不想覆寫原來的内容,使用兩個大于符号>>)
cat 檔案名 :檢視檔案内容
tree 目錄名 :以樹狀圖的形式檢視目錄檔案結構
head -n 行數 檔案名 :檢視檔案前幾行
tail -n 行數 檔案名 :檢視檔案最後幾行
find /(查找範圍) -name '查找關鍵字' -type d :查找目錄
- find / -name 'tomcat7' -type d :查找tomcat7檔案夾所在的位置
find /(查找範圍) -name 查找關鍵字 -print :查找檔案
- find / -name 'server.xml' -print :查找server.xml檔案的位置
- find -name "*1*" 搜尋檔案名包含1的檔案
- find -name "*.txt" 搜尋所有以.txt為擴充名的檔案
- find -name "1*" 搜尋以數字1開頭的檔案
cp 原檔案 新檔案 :檔案複制
mv 原檔案路徑 新檔案路徑 :檔案移動,注意點:移動檔案的話就不要再加 / 了,如果是移動檔案夾下的所有檔案的話就可以檔案夾後面跟上 /*
rm [選項] 檔案名|目錄名 :檔案删除
- -f 強制删除(慎用!)
- -i 互動模式,在删除前詢問
- -r 遞歸删除目錄下的内容,删除檔案夾時必須的加此參數
權限管理
三個權限參數: 讀 寫 執行
- 參數:r可讀,w可寫,x可執行,-什麼都不行
在rwx三個權限中,從右至左依次用值4、2、1來表示,是以擁有某個檔案的讀、寫、執行權限也可以用三個權限值累加的方式來表示,如下表所示:
權限 | rwx | rw- | r-x | r-- | -wx | -w- | --x | --- |
含義 | 可讀4 可寫2 可執行1 | 不可執行0 | 不可寫2 | 不可讀0 | ||||
對應值 | 4+2+1=7 | 4+2+0=6 | 4+0+1=5 | 4+0+0=4 | 0+2+1=3 | 0+2+0=2 | 0+0+1=1 | 0+0+0=0 |
修改檔案權重:chmod {權限值} {檔案/目錄名}
- 給檔案夾增權重限(-R表示遞歸):chmod -R 777 檔案夾
- 給檔案增權重限:chmod 777 檔案
- 給檔案test1.txt添加可執行權限 chmod +x test.txt
- 設定檔案,擁有者有讀、寫、執行權限,其他使用者沒有通路權限chmod 700 test1.txt
- 如果給所有人添加可執行權限:chmod a+x 檔案名
- 如果給檔案所有者添加可執行權限:chmod u+x 檔案名
- 如果給所在組添加可執行權限:chmod g+x 檔案名
- 如果給所在組以外的人添加可執行權限:chmod o+x 檔案名
通配符
- *:代表任意個數字元
- ?:代表任意一個字元,至少1個
- []:表示可以比對字元組中的任意一個
- [abc]:比對a、b、c中的任意一個
- [a-f]:比對從a到f範圍内的任意一個字元
linux的通配符和正規表達式有很多相似點,可以參考我寫正規表達式的這篇文章
壓縮與解壓
windows常用rar,Mac常用zip,Linux常用tar.gz。linux中常使用tar指令進行打包、壓縮、解壓操作,gz字尾名表示進行了壓縮,tar字尾名表示進行了打包,加字尾名是為了清晰、易于了解,而不是必須的。
tar格式
參數:
- c 建立打封包件
- x 解開打封包件
- v 列出詳細過程,顯示進度
- f 執行打包的檔案名稱,f後面一定是.tar檔案,是以必須放在選項後面
- z 使用gzip方式壓縮
壓縮
tar -cvf jpg.tar *.jpg :将目錄裡所有jpg檔案打包成jpg.tar
tar -czf jpg.tar.gz 檔案1 檔案 2 目錄 *.jpg :将目錄裡所有jpg檔案打包成jpg.tar.gz
tar與gzip指令結合可以實作檔案 打包和壓縮
- tar隻負責打封包件,但不壓縮
- 用gzip壓縮tar打包後的檔案,其擴充名一般用 xxx.tar.gz
解壓
tar -zxvf xxx.tar.gz :解壓xxx.tar.gz到目前位置
tar -zxvf xxx.tar.gz -C 解壓到指定的檔案位置 :解壓xxx.tar.gz到指定位置,注意:要解壓縮的目錄必須存在
tar -xvf xxx.tar :解壓xxx.tar到目前位置
tar -xvf xxx.tar -C 解壓到指定的檔案位置 :解壓xxx.tar到指定位置,注意:要解壓縮的目錄必須存在
tar -xjvf xxx.tar.bz2 :解壓xxx.tar.bz2
tar -xZvf xxx.file.tar.Z :解壓tar.Z
zip格式
zip -r dataset.zip dataset/ :将dataset檔案夾壓縮成dataset.zip
zip -r dataset.zip p225.wav p226.wav :将p225.wav 和p226.wav壓縮成一個壓縮包 dataset.zip
zip -dv test.zip file1 :從壓縮檔案 test.zip 中删除檔案 file1
zip -q -r soft.zip /home/soft :将 /home/soft/ 這個目錄下所有檔案和檔案夾打包為目前目錄下的 soft.zip
unzip dataset.zip :将 dataset.zip 解壓到目前檔案夾
unzip -o dataset.zip -d dataset/ :将dataset.zip解壓到dataset檔案夾,如果已有相同的檔案存在,要求unzip指令覆寫原先的檔案
軟體安裝與解除安裝
檢視
dpkg -l :列出目前系統中所有的包。可以和參數less一起使用在分屏檢視。(類似于rpm -qa)
dpkg -l |grep -i "軟體包名" :檢視系統中與"軟體包名"相關聯的包。
安裝
apt-get update :更新安裝包相關的指令,重新整理可安裝的軟體清單(但是不做任何實際的安裝動作)
apt-get upgrade :進行安裝包的更新(軟體版本的更新)
apt-get dist-upgrade :進行系統版本的更新(Ubuntu版本的更新)
do-release-upgrade :Ubuntu官方推薦的系統更新方式,若加參數-d還可以更新到開發版本,但會不穩定
更新
do-release-upgrade :Ubuntu官方推薦的系統更新方式,若加參數-d還可以更新到開發版本,但會不穩定
解除安裝
apt-get的解除安裝相關的指令有remove/purge/autoremove/clean/autoclean等。具體來說:
apt-get purge / apt-get --purge remove :删除已安裝包和依賴軟體包(不保留配置檔案)。
apt-get remove :删除已安裝的軟體包(保留配置檔案),不會删除依賴軟體包,且保留配置檔案。
apt-get autoremove :删除為了滿足依賴而安裝的,但現在不再需要的軟體包(包括已安裝包),保留配置檔案。(高能警告:慎用本指令!!!它會在你不知情的情況下,一股腦删除很多“它認為”你不再使用的軟體;)
apt-get autoclean :删除為了滿足某些依賴安裝的,但現在不再需要的軟體包;apt的底層包是dpkg,而dpkg安裝軟體包時,會将*.deb檔案放在/var/cache/apt/archives/中;是以本指令會删除該目錄下已經過期的deb;
apt-get clean :删除已經安裝過的的軟體安裝包;即自動将/var/cache/apt/archives/下的所有deb删掉,相當于清理下載下傳的軟體安裝包;
那麼如何徹底解除安裝軟體呢?
具體來說可以運作如下指令:
apt-get --purge remove <package> # 删除軟體及其配置檔案
apt-get autoremove <package> # 删除沒用的依賴包
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 清理dpkg的清單中有“rc”狀态的軟體包
當然如果要删除暫存的軟體安裝包,也可以再使用clean指令。
【CSCD】linux安裝軟體和解除安裝的幾種方法
其他指令
網絡操作
ifconfig :檢視/配置計算機目前的網卡配置資訊
ping ip位址 :檢查目标 ip位址 的連接配接是否正常,數值越大,速度越慢
ssh 使用者名@ip :遠端登入
複制檔案
1、拷貝本機/home/wtf/test整個目錄至遠端主機192.168.100.1的/root目錄下
scp -r /home/wtf/test/ [email protected]:/root/
2、拷貝單個檔案至遠端主機
scp /home/wtf/test/wtf.txt [email protected]:/root/
關機
指令格式: shutdown 選項 時間
shutdown now :現在就關閉電腦
shutdown 20:10 :時間20:10分關閉電腦
shotdown -r +10 :十分鐘後重新開機電腦
shotdown -c :取消之前指定的關機計劃
shutdown :不設定選項和參數:預設1分鐘後 關閉電腦
autoreconf指令
autoreconf [參數] [目錄] :更新已經生成的配置檔案
使用autoreconf指令可以重複編譯指定目錄下的系統檔案或configure-ac指定的目錄樹。預設情況下,它隻編譯比以前編譯檔案更新的檔案。
常用參數
- -v:詳細報告處理
- -d:不删除臨時檔案
- -f:認為所有的問價都是過期的檔案,強制執行
- -i:複制輔助檔案
- -s:建立符号連結,而不是複制
- -m:當可用時,重新運作指令./configure 和 make
- -w:報告文法錯誤資訊
window平台安裝ubuntu子系統
1、安裝Ubuntu子系統,具體的操作步驟可以參考Win10安裝Ubuntu子系統超詳細攻略這篇知乎文章,步驟一步一步的進行下去就OK了。
2、在檔案夾中,我們可以通過shift + 滑鼠右鍵,快速打開 linux shell,即wsl。
微軟為我們提供了一個預設的變量可以直接指向WSL的目錄 wsl$ , 你可以在運作(win+R)或資料總管的路徑裡直接輸入 \\wsl$ 進入Ubuntu的目錄,
知道WSL的網絡路徑後你可以直接将它添加到資料總管的網絡位置裡
參考
Linux指令大全
【CSDN】将 Windows10 中的 WSL 添加至右鍵菜單
【部落格園】windows10 ubuntu子系統 WSL檔案位置
【部落格園】linux如何複制檔案夾和移動檔案夾
【CSDN】ubuntu檢視已安裝所有軟體包
【CSDN】Ubuntu下如何檢視已安裝軟體版本
【CSDN】如何安全的從ubuntu16.04更新到18.04?
【谷歌搜尋】apt-get dist-upgrade能将ubuntu16.04更新到18.04嗎
【CSDN】如何在Ubuntu中用apt指令删除/解除安裝軟體包(remove/clean/purge)