天天看點

Linux指令學習

Linux指令格式:指令名  選項  參數

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

檔案及目錄操作

linux下,我們是看不到硬體盤符的,我們隻能看到檔案夾(目錄)

Linux指令學習
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的目錄,

Linux指令學習

知道WSL的網絡路徑後你可以直接将它添加到資料總管的網絡位置裡

Linux指令學習

參考

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)