第一階段:Linux基礎

1.1Linux基礎

1.1.1課程簡介

  1. python體驗和勵志公式

    • 在Linux終端下直接輸入python會顯示電腦中python的版本,同時進入python的編輯環境

    • 代碼演示

      # 每天進步0.01,堅持365天后你就會有一個質的飛躍
      1.01 ** 365 # **表示指數運算,運算的結果爲37.8
      # 三天打魚兩天曬網的最終結果就是一事無成
      1.01 ** 3 * 0.99 ** 2 # 結果爲1.0098
      

1.1.2操作系統簡介

1.1.2.1什麼是操作系統

  1. 裸機:沒有安裝操作系統的計算機稱爲裸機,如果想在裸機上運行自己編寫的程序就必須使用機器語言編寫程序
  2. 操作系統的作用:
    • 實例說明:一個用戶想要在電腦上播放一首音樂,在沒有操作系統的情況下需要經過以下幾個步驟:首先電腦要將存儲在硬盤中的音樂加載到內存中,然後電腦使用聲卡對音頻文件進行編碼,最後電腦將編碼後對文件發送到音響進行播放(以上步驟需要用戶用機器語言來操作計算機硬件)
    • 作用一:方便用戶直觀簡單的操作硬件而不需要編寫複雜的機器語言
    • 作用二:操作系統將對計算機硬件的操作封裝成系統調用,這樣用戶就可以通過系統調用直接運行軟件而不需要逐步操作硬件

1.1.2.2桌面操作系統

  1. 三種主流桌面操作系統的比較
    • Windows操作系統:用戶基數大,應用軟件多;但是安全性和穩定性差
    • Macos操作系統:安全性和穩定性好,適合程序員開發,但軟件較Windows來說少
    • Linux操作系統:應用軟件最少,主要用於服務器和嵌入式開發領域

1.1.2.3服務器操作系統

  1. 服務器:從硬件層面來說服務器就是一臺電腦,從軟件層面來說服務器就是一個操作系統;只不過這種特殊的電腦不是放在桌子上的而是放在櫃子中的,這些裝載服務器的櫃子所在的地方一般稱之爲機房,通常機房噪聲大,溫度低,公司內部員工一般在辦公室自己的電腦上安裝軟件來遠程操作這些位於機房中的電腦;只要機房中的電腦連上網,世界各地的用戶就可以通過網絡來訪問這臺電腦並使用位於這臺電腦上的資源,例如百度
  2. 兩種服務器操作系統的比較
    • Linux:市場佔有率高,免費,安全、穩定且提供的服務器相關的配套軟件多
    • Windows server:市場佔有率低,收費,且安全性和穩定性不如Linux,一般是使用微軟提供的.net開發的公司使用

1.1.2.4嵌入式操作系統

  1. Linux:目前嵌入式操作系統是Linux一家獨大的局面,主要用於智能硬件的開發(像智能手機和智能平板,這裏Android也是基於Linux延伸開發的)以及智能家居、智能機器人的開發,因此要學習人工智能就需要學習Linux的基本使用

1.1.2.5虛擬機簡介

  1. 虛擬機:虛擬機是一個軟件,但這個軟件可以運行具有完整硬件功能(模擬)的操作系統

1.1.2.6linux內核版和發行版

  1. 內核版:用來與計算機硬件進行交互的版本,內核版本永遠只有一個
  2. 發行版:在內核版的基礎上添加了圖形界面、應用程序等,發行版本可以存在多個

1.1.2.7Windows和Linux文件系統的區別

  1. Windows:前生是單用戶操作系統,一次只能有一個用戶來操作系統,每個盤符只能根據當前用戶來確定其功能(放文件還是軟件)
  2. Linux:前生是多用戶操作系統,沒有盤符的概念,所有文件都在一個根目錄下(/),在根目錄下有一個目錄(/home),在該目錄下可以存放多個用戶目錄以實現多用戶同時操作的功能,在每個用戶目錄下根據每個用戶的需要創建不同功能的目錄,但是每個用戶只能操作自己用戶目錄下的文件,不允許操作其他用戶的目錄

1.1.2.8windows和linux系統目錄結構

  1. Windows:系統盤下,Windows目錄用來存放系統相關的文件;programfiles目錄用來存放安裝過的軟件
  2. Linux:
    • /etc:用來存放系統配置的目錄
    • /bin:用來存放可執行的二進制文件,像一些常用的命令:cat、ls等
    • /:根目錄,所有的文件都是在該目錄下
    • /home:家目錄,在該目錄下存放着不同用戶的根目錄

1.1.3Linux命令簡介

1.1.3.1明確學習目標

  1. 爲什麼要學習終端:在對服務器的維護中,都是在遠程電腦上通過ssh客戶端來完成的,並沒有圖形界面,必須要在終端下維護

1.1.3.2終端放大與縮小字體的快捷鍵

  1. 放大字體:ctrl+shift+=
  2. 縮小字體:ctrl±

1.1.3.3七種常用的命令

  1. ls:查看當前文件夾下所包含的內容
  2. pwd:查看當前文件的路徑
  3. cd:切換文件夾
  4. touch:新建文件
  5. mkdir:創建目錄(新建文件夾,注意區分與touch的區別)
  6. rm:刪除指定的文件名,若要刪除文件夾,需要在rm後加-rf(-rf表示不接受提示強行刪除該目錄下的所有目錄和子目錄,而-r表示刪除該目錄下的所有目錄和子目錄但當遇到有些特殊文件時會有刪除提示,需要向用戶確認刪除)
  7. clear:清屏

1.1.3.4終端命令格式

  1. 格式:command [-option] [parameter]

    command:命令名

    option:選項,對命令進行控制

    parameter:傳給命令的參數

    []:表示可以省略

  2. 舉例:rm -rf yfx(表示強制刪除yfx目錄以及該目錄下的所有子目錄)

1.1.3.5查看命令幫助信息

  1. 兩種方式查看命令幫助信息

    • command --help

    • man command:進入幫助界面後的快捷操作

      q:退出幫助界面

      回車鍵:多輸出一行幫助信息

      空格鍵/f:向後切換一頁

      b:向前切換一頁

1.1.4目錄相關命令

1.1.4.1自動補全命令和選擇命令

  1. 按一下tab鍵可以自動補全一個命令剩餘的部分(當以輸入部分開頭的命令有多個時不會自動補全)
  2. 按兩下tab鍵可以查看該文件夾下以輸入部分開頭的命令有哪些,當不輸入命令直接按兩下tab鍵時會顯示當前文件夾下所包含的文件
  3. 在輸入命令後如果不想執行或者想換一行重新輸入一個新命令,輸入ctrl+c鍵就可以實現

1.1.4.2隱藏文件和上級目錄

  1. 創建隱藏文件:只需要在隱藏文件的前面加一個.就可以創建隱藏文件,例如:touch .yfx.txt
  2. 查看隱藏文件,只需要加入一個選項-a(all的意思)就可以查看所有文件(包括隱藏文件),例如:ls -a
  3. 一個.表示當前目錄,兩個…表示上級目錄,例如:cd . (還處在當前目錄),cd …(切換到上一級目錄)

1.1.4.3ls常用選項

  1. 各參數及其含義

    • -a:顯示包括隱藏文件的所有文件,在顯示文件時,一般文件以白色字體顯示,而文件夾以藍色字體顯示
    • -l:以列表的形式顯示文件的信息,其中第一列(drwxr-xr-x)中的第一個字母如果是d表示是一個文件夾,如果是-表示是一個文件
    • -h:單獨使用無效,只有結合-l使用纔有效,以人性化的形式顯示文件大小(例如將4096字節大小顯示爲4kb,方便用戶理解)
    • 常用選項的參數既可以分開使用也可以結合使用(-a -l -h和-alh效果是一樣的)
  2. 隱藏文件的作用

    一般以.開頭的隱藏文件都是一些軟件的配置文件

1.1.4.4ls和通配符的使用(用來匹配到指定的文件)

  1. 各種通配符及其含義

    • *:表示任意個數的字符(注意以下都只在當前目錄下匹配(子目錄無法匹配),最多可顯示一層子目錄)

      ls 1*:表示列出以1開頭的所有文件和文件夾
      ls 1*.txt:表示列出以1開頭的且後綴名爲txt所有文件
      ls *1:表示列出所有以1結尾的文件和文件夾
      ls *1.txt:表示列出所有以1結尾且後綴名爲txt的文件
      注意:一般是文件夾的後面會顯示一個冒號,如果該文件下有文件會在換行後顯示,但是隻能顯示一層子文件,同時查詢也無法查詢子文件中所包含的內容(即若子文件包含查詢的內容但子文件在當前目錄下的第一層文件不包含查詢的內容,則子文件也不會顯示)
      ls *1* :表示列出所有包含1的文件和文件夾
      ls *1*.txt :表示列出所有包含1且後綴爲txt的文件
      
    • ?:代表任意一個字符,但只能表示一個字符

    • []:表示可以匹配字符組中的任意一個

      ls [123]abc.txt:表示列出所有以abc結尾且後綴爲txt同時以123中任意一個開頭的文件(注意,[]的位置可以在開頭、中間和結尾,但是隻能取其中的一個值,即[]只佔一位,不能同時取123)
      ls [1-3]abc.txt:表示列出所有以abc結尾且後綴爲txt同時以123中任意一個開頭的文件(注意,這裏的-表示爲範圍)
      

1.1.4.5cd命令的常用參數

  1. cd:直接輸入cd命令就可以回到當前用戶所在的家目錄(即/home下的用戶目錄)
  2. cd ~:回到當前用戶所在的家目錄的另一種表示
  3. cd -:在最近的兩次工作目錄中來回切換

1.1.5文件相關命令

1.1.5.1touch和mkdir命令的拓展

  1. touch:如果文件不存在會創建一個新文件,如果文件存在會修改文件的最後一次修改日期(注意:這裏僅僅是修改日期,其它的都沒有變化)
  2. mkdir -p:遞歸創建目錄
  3. 說明:在Linux文件中,文件和文件夾不允許同名(有後綴就不是同名)

1.1.5.2rm命令拓展

  1. 使用rm命令刪除的文件或文件夾是不會放入垃圾桶中的,會直接從硬盤上刪除而不能恢復
  2. -f:強制刪除,不會有任何提示(例如用-r刪除目錄如果目錄不存在會提示目錄不存在,但是-f不會有任何提示)
  3. -r:遞歸刪除目錄下的內容,刪除文件夾時必須有此選項
  4. 通配符也適用於rm命令

1.1.5.3拷貝和移動命令

  1. tree命令:以樹狀形式列出文件目錄結構,同時會顯示有幾個目錄有幾個文件夾(tree :表示以樹狀列出家目錄,在Linux中表示家目錄),使用-d選項表示只顯示目錄,不顯示文件
  2. cp 源文件 目標文件:這裏的路徑既可以是絕對路徑也可以是相對路徑(說明:這裏如果複製後的文件名不改變則在目標文件中只需輸入路徑而不需要輸入文件名,同時只有輸入-r選項纔可以複製目錄)
    • -i:表示覆蓋文件會提示
  3. mv 源文件/源目錄 目標文件/目標目錄(不需要-r就可以移動目錄):這裏可以在目標文件中修改文件名以達到移動的同時修改文件名,同時-i:表示覆蓋文件會提示(要經常使用-i命令,爲防止因爲命名的錯誤導致重要文件被覆蓋而丟失,在終端中文件的操作是不可逆的)

1.1.5.4文件內容命令

  1. cat:將文件中的內容一次性全部顯示出來,通常用於查看內容比較小的文件

    • -b:顯示所寫內容的行號(空行不會顯示行號)
    • -n:顯示每一行的行號(空行也會顯示行號)
  2. more:將文件中的內容通過分屏的方式顯示出來,通常用於查看內容比較多的文件,對於顯示的內容可以通過b,回車,空格,f,q等來完成查看等相關操作

  3. grep:查找指定文件內容(grep 查找文件內容 查找文件名)

    • -n:顯示指定文件內容所在的行號(這裏-b不能表示顯示(不包括空行)指定文件內容所在的行號,-n顯示的內容行號包括空行)(grep 123 -n 222.txt)

    • -v:顯示不包含指定文件內容所在的行號

    • -i:表示忽略大小寫進行文件內容的查找(grep abc -ni 222.txt)

    • 說明:當查找的內容有空格時,要在查找的內容前面加上引號(grep “hello world” -ni 222.txt)

    • grep允許對文本文件進行模式查找(例如搜尋以a開頭的行),所謂模式查找就是正則表達式

      a$:查找以a結尾的行(grep -n a$ 123.txt)
      ^a:查找以a開頭的行(grep -n ^a 123.txt)
      

1.1.5.5其它命令

  1. echo和重定向

    • echo:顯示參數指定的文字,通常和重定向聯合使用

      echo hello world:終端會顯示hello world
      
    • 重定向>和>>:用於將指定的文字覆蓋或追加到指定的目錄中,其中>會以覆蓋原文件內容的形式追加到指定文件中,>>會以追加到原文件的形式追加到指定文件中,不會覆蓋原文件的內容

      echo hello world >> a.txt:將hello world追加到a.txt文件的末尾,不會覆蓋之前a.txt文件中的內容(如果文件不存在會自動出創建該文件)
      echo hello world > a.txt:將hello world添加到a.txt文件中,會覆蓋之前a.txt文件中的內容
      ls -lh >> q.txt:將ls -lh命令的結果追加到q.txt文件的末尾(Linux中通常將命令的結果追加到指定文件中)
      
  2. 管道|

    • 說明:Linux允許將一個命令的輸出通過管道作爲另一個命令的輸入

    • 舉例:

      ls -lh ~ | more:將ls -lh ~的結果進行分屏輸出
      ls -lh ~ | grep -i do:在ls -lh ~的結果中不分大小寫的查找含有do的行
      

1.1.6遠程管理命令

1.1.6.1關機和重啓

  1. shutdown:表示一分鐘後關機
  2. shutdown -c :表示取消關機
  3. shutdown -r now:表示立刻重新啓動
  4. shutdown +10:表示10分鐘後關機
  5. shutdown 20:04:表示在20:04分關機

1.1.6.2網卡和ip地址的概念

  1. 網卡:網卡是一個專門負責網絡通訊的硬件設備
  2. IP地址:IP地址是可以設置在網卡上的地址信息,可以唯一標識一臺主機
  3. 簡易理解:我們可以將電腦比作電話卡,將網卡比作sim卡,將IP地址比作手機號碼;IP地址就可以唯一標識一個網卡從而唯一標識一臺電腦,所以每臺電腦的IP地址不可以衝突
  4. 在ubuntu中輸入ifconfig可以查看網卡信息,其中ens33下的IP地址就是本機的IP地址,而另一個lo下的IP地址是本地環回地址,用來測試本機網卡是否正常

1.1.6.3ping

  1. 用ping命令來測試本地網卡是否正確

    ping 172.0.0.1:過程分析,本機向網卡發送一個固定字節的信息,網卡在接受到信息後迴向本機回覆一個固定字節的信息,最終終端會顯示是否收到網卡發送的接受信息以及接受信息所用的時間,時間越短說明網速越好(ping的工作原理皆是如此)
    

1.1.6.4遠程管理命令ssh工作方式簡介

  1. ssh全稱secure shell,是一種安全的遠程管理服務器的方式,管理員需要在服務器端和客戶端分別安裝ssh端相關ssh軟件,然後管理員在客戶端通過ssh遠程管理服務器(這裏一般linux和mac系統都是默認已經安裝了ssh,只有windows需要自己安裝ssh),這種通過ssh的方式傳輸數據是會加密的,而且數據在傳輸的過程中是會壓縮的則會提高數據的傳輸效率

1.1.6.5域名和端口號的概念

  1. 域名:就是IP地址的別稱,方便用戶記憶,同樣可以唯一標識一臺電腦,例如百度的域名爲www.baidu.com
  2. 端口號:通過端口號可以訪問計算機上的應用程序,嚴格來說一臺計算機如果要得到另一臺計算機的服務,域名和端口號是缺一不可的,域名用來找到要訪問的計算機,端口號則用來找到具體要訪問的應用程序,但是向web服務器有一個默認的端口號是80,ssh有一個默認的端口號是22,如果用戶訪問時沒有輸入端口號則使用默認的端口號,例如用web訪問百度時就只輸入域名同樣可以得到服務就是啓用了默認的端口號

1.1.6.6ssh客戶端的簡單使用

  1. 使用格式:ssh [-p port] user@remote

    • user是指遠程機器上的用戶名,如果不指定就默認爲當前用戶
    • remote是指遠程機器的地址,這個地址可以時IP地址,也可以是域名,還可以是別名
    • port是ssh server監聽的端口,如果不指定就默認爲22,即[]內的內容可以省略
  2. mac電腦遠程連接ubuntu

    ssh -p 22 [email protected]

  3. 連接問題處理:connect to localhost port 22: Connection refused

    查詢網址:https://blog.csdn.net/c1481118216/article/details/52385056
    如果遠程連接mac電腦時出現連接問題:connect to localhost port 22: Connection refused,則可能是mac的遠程登陸端口沒有打開:系統偏好設置->共享->遠程登陸勾選->允許訪問選擇所有用戶
    
  4. 當遠程操作其它電腦時出現權限不夠的問題時,可以在命令行前面加上sudo就可以獲得一定的權限(表示以超級用戶的權限執行)

1.1.6.7scp遠程複製文件或者文件夾

  1. 從本地向服務器複製文件格式:scp -P port 源文件 用戶名@IP地址:目標文件的地址
  2. 從遠程端口向本地複製文件的格式:scp -P port 用戶名@IP地址:源文件地址 目標地址
  3. 從遠程端口向本地複製文件夾的格式:scp -r 用戶名@IP地址:源文件地址 目標地址
  4. 從本地向服務器複製文件夾格式:scp -r 源文件 用戶名@IP地址:目標文件的地址
  5. 注意:上面提到的地址都是相對地址,本機是相對當前操作目錄的地址,而遠程服務器是相對於家的地址
  6. 上面的port是端口號,ssh命令默認的端口號爲22
  7. 注意:-P port這兩個也可以不寫

1.1.6.8ssh高級

  1. 目錄.ssh:有關ssh的配置信息都保存在該目錄下且該目錄默認是隱藏的,該目錄存儲在用戶的目錄下
  2. known_hosts:.ssh目錄下的文件,用來保存遠程登陸的連接信息,一般當第一次登陸後後面再次登陸這些服務器時就可以直接輸入: ssh 用戶名@IP地址就可以遠程登陸

1.1.6.9免密碼登陸

  1. 在客戶端終端中輸入ssh-keygen創建免密碼登陸的鑰匙,客服端的.ssh文件夾中會增加兩個文件:id_rsa(私鑰)和 id_rsa_pub(公鑰),然後在客戶端的終端中輸入ssh-copy-id 服務端名稱@服務端IP地址,這樣就會將服務器端產生的公鑰id_rsa_pub複製併發送到服務器端的.ssh文件夾中同時取名爲authorized_keys,這樣客戶端就可以免密碼登陸服務器端並進行一些操作
  2. 客戶端使用私鑰對數據進行加密/解密,服務器端使用公鑰對數據進行加密/解密
  3. 非對稱加密算法:使用公鑰加密的數據需要使用私鑰解密;使用私鑰加密的數據需要使用公鑰進行解密
  4. 免密碼登陸的工作原理:服務器使用私鑰對發送數據進行加密並傳輸到服務器,服務器使用公鑰對數據進行解密然後對要發送到客戶端的信息進行公鑰加密,客戶端再使用私鑰對信息進行解密

1.1.6.10配置別名

  1. 在客戶端中爲服務器創建別名,方便客戶端快速連接服務器

    • 在客戶端的.ssh文件夾下新建一個文件config,在文件中輸入以下信息

      Host 服務器別名
      	HostName 服務器的IP地址
      	User 服務器名稱
      	Port 22
      
    • 現在在客戶端就可以直接輸入ssh 服務器別名直接遠程登陸服務器,就不需要再輸入其它信息

1.1.7用戶權限

1.1.7.1基本概念

  1. 對文件/用戶的權限包括:

    權限 縮寫 數字代號
    r 4
    w 2
    執行 x 1
  2. 組:爲了方便對用戶權限的設置,設定組的概念,對組進行相關權限的設置,然後將需要設定相關權限的用戶劃分到這些組中來設定用戶的權限

1.1.7.2ls -l輸出信息介紹

drwxr-xr-x 2 dedicationyu dedicationyu 4096 1月 20 18:09 1
說明:
drwxr-xr-x:是對應的讀、寫、執行權限;一共10個字母,將這10個字母分割成4份;第一個d表示對應的文件是文件夾還是文件;第二個rwx表示該文件所屬的用戶(dedicationyu)所擁有的權限(可讀、可寫、可執行,有時s也表示可執行);第三個r-x表示該文件所屬的組的所擁有的權限(可讀、不可寫、可執行);第四個r-x表示除了所在用戶和所在組之外的其它用戶的權限(可讀、不可寫、可執行);2表示硬鏈接數,通俗來說就是有多少種方式可以訪問到當前的目錄/文件(一般文件的訪問方式都是一種,而目錄訪問方式的多少取決於子目錄的多少)第一個dedication表示文件所屬用戶的名稱;第二個 dedication表示文件所處的組的名稱;4096表示文件的大小;1月20日18:09分表示文件的修改時間;1是文件名

1.1.7.3chmod修改文件權限

  1. 一般命令格式(無法指定特定的用戶相關的權限):

    chmod +/-rwx 文件名/目錄名
    chmod -w 1.txt:表示禁止文件的可寫權限
    chmod +x 1.txt:表示增加文件的可執行權限
    說明:一般文件如果有可執行權限那麼文件一般在終端中的顏色是綠色的,用./1.txt來執行當前文件(一般向代碼就可以執行);對於目錄而言(文件夾),如果沒有可執行權限就無法針對該目錄使用任何命令,如果沒有可讀權限就無法查看該目錄下所包含的內容,如果沒有可寫命令就無法在該目錄下創建新文件
    
  2. 常用命令格式:

    chmod -R 755 文件名/目錄名遞歸修改文件權限(r:4,w:2,x:1)
    這裏的755分別代表擁有者用戶、擁有者所在組、其它用戶的權限
    

1.1.7.4超級用戶

  1. 一般用戶只可以修改家目錄下自己的用戶的相關文件而無法修改其它的文件
  2. 如果一般用戶想要使用超級用戶的權利,只需在命令前面加上sudo但是需要驗證密碼,但是每一次輸入密碼後的五分鐘之內用戶就無需再次輸入密碼就可以使用sudo,超過五分鐘後則需要再次輸入密碼

1.1.8組管理

1.1.8.1創建組/刪除組/確認組信息/修改所屬組

  1. 格式

    命令 作用
    groupadd 組名 添加組
    groupdel 組名 刪除組
    cat /etc/group 確認組信息
    chgrp -R 組名 文件名/目錄名 遞歸修改文件/目錄所屬的組
  2. 說明:對組的操作,因爲在/etc目錄下,不是用戶的家目錄下,所有對於組的相關操作都要在超級用戶權限下進行,其中在ubuntu中用shift可以切換中英文

1.1.9用戶管理

1.1.9.1創建用戶/設置密碼/刪除用戶

  1. 相關命令及作用(這些命令都需要超級用戶的權限)

    命令 作用 說明
    useradd -m -g 組 新建用戶名 添加用戶 -m:自動建立用戶家目錄(如果沒有使用-m那麼在用戶界面的目錄下就沒有這個用戶的目錄);-g:指定用戶所在的組,否則用戶會建立一個和用戶同名的組
    passwd 用戶名 設置用戶密碼 如果是普通用戶,直接用passwd可以修改自己的賬戶密碼
    userdel -r 用戶名 刪除用戶 -r 選項會自動刪除用戶家目錄
    cat /etc/passwd |grep 用戶名 確認用戶信息 新建用戶後,用戶信息回保存在/etc/passwd文件中
  2. 說明:再創建新用戶是必須創建密碼,因爲通過其它客戶端遠程連接時必須要輸入密碼才能進行遠程連接,如果不設置密碼就無法被其它用戶遠程連接

1.1.9.2id查看UID和GID以及passwd文件介紹

  1. GID:組代號

  2. UID:用戶代號

  3. id 用戶名:查看用戶的相關代號

    id devyfx
    uid=1001(devyfx)gid=1001(dev)組=1001(dev)
    說明:uid的信息是保存在/etc/passwd的文件中的,而gid的信息是保存在/etc/group中
    cat -n /etc/passwd | grep devyfx
    43 devyfx:x:1001:1001::/home/devyfx:/bin/sh
    說明:43表示行號;devyfx表示用戶名;x表示有密碼且密碼是加密的;1001表示用戶代號;1001表示組代號;兩個冒號中間的內容表示用戶的拓展名如果沒有顯示則表示默認使用用戶名;/home/devyfx表示用戶所在的家目錄;/bin/sh表示登陸使用的shell(終端),Ubuntu默認使用的是dash
    cat -n /etc/group | grep dev
    67 dev:x:1001
    說明:分別表示組名,組加密,組代號
    ls :會直接顯示當前所在用戶的組代號和用戶代號等信息(即@後面的用戶)
    cat -n /etc/group | grep dedicationyu
    adm:x:4:syslog,dedicationyu:表示dedicationyu這個用戶具有adm這個管理員組的權限
    cardom:x:4:decicationyu:表示dedicatioyu這個用戶可以訪問系統的光驅
    sudo:表示dedicationyu表示dedicationyu這個用戶可以使用sudo這個超級用戶的權限來維護和管理系統
    

1.1.9.3who和whoami

  1. who:查看當前所有登陸的用戶列表

    dedicationyu :0 2020-01-20 10:41(:0)
    說明:2020-01-20 10:41表示登陸到賬號dedicationyu的時間(只要電腦不重啓,時間就定格不變),括號中的內容爲0表示dedicatioinyu這個賬號是從當前電腦登陸的,如果不是從當前電腦登陸的就會顯示一個IP地址
    
  2. whoami:查看當前登陸用戶的賬戶名

1.1.9.4usermod設置主組和附加組

  1. 主組:通常在新建用戶時指定(使用-g選項確定的組),在etc/passwd的第四列gid對應的組
  2. 附加組:在/etc/group中最後一列表示該組的用戶列表,用戶指定用戶的附加權限(adm就表示一個附加組,改行最後一列的dedicationyu就表示dedicationyu用戶能夠使用這個附加組的權限);一般直接輸入id時會顯示當前用戶的相關組信息,如果只有一個組而沒有其它的附加組一般該用戶就沒有其它組的附加權限(像sudo權限等)
  3. 修改用戶的主組:usermod -g 組 用戶名
  4. 添加用戶的附加組:usermod -G 組 用戶名
  5. 修改用戶登陸的shell:usermod -s /bin/bash 用戶名
    • dedicationyu@dedicationyu:@前面的dedicationyu表示用戶名,後面的dedciationyu表示計算機名
    • 當ubuntu中新建的用戶的shell時sh(Ubuntu默認創建的事dash)而默認管理員的用戶使用的shell時bash時(通過cat -n /etc/passwd |grep 用戶名查看默認的shell),則在新建用戶的終端中不會出現用戶名@計算機名的情況同時文件和文件夾也不會有顏色區分,這裏需要修改新建用戶的默認shell爲管理員使用的shell即爲bash
    • 修改後用戶登陸的shell不會立刻生效需要退出後再次進入用戶界面纔會生效
    • 一般Ubuntu默認使用的shell時dash但是這種shell使用不方便一般都改爲bash來簡化使用(一般電腦的默認用戶的shell就是bash)

1.1.9.5which查看命令所在位置

  1. /etc/passwd:用戶保存用戶信息的文件
  2. /usr/bin/passwd:用於修改用戶密碼的程序(直接輸入passwd就可以修改用戶的密碼)
  3. 用法:passwd 命令
  4. bin和sbin
    • 說明:在Linux中,絕大多數可執行文件都是保存在/bin,/sbin,/usr/bin,/usr/sbin中
    • /bin:全稱是binary,是二進制執行文件目錄,主要用於具體應用
    • /sbin:全稱是system binary,是系統管理員專用的二進制代碼存放目錄,主要用於系統管理
    • /usr/bin:後期安裝的一些軟件
    • /usr/sbin:超級用戶的一些管理程序

1.1.9.6切換用戶

  1. su - 用戶名:-可以切換到用戶家目錄,否則保持位置不變(只會切換用戶不會切換目錄)
  2. su:直接切換到root用戶,一般不推薦使用,因爲不安全
  3. 說明:如果使用su切換到root用戶時出現認證失敗,基本上是因爲root密碼沒有設定,在終端下輸入sudo passwd即可設置root用戶的密碼(直接輸入passwd只能修改當前用戶的密碼)

1.1.9.7修改文件權限

  1. chown:修改擁有者(修改文件所屬的用戶)
    • chown 用戶名 文件名/目錄名:修改文件/目錄的擁有者
  2. chgrp:修改組
    • chgrp -R 組名 文件名/用戶名:遞歸修改文件/目錄的組
  3. chmod:修改文件權限

1.1.10系統信息

1.1.10.1date和cal查看系統時間

  1. 時間和日期
命令 作用
date 查看系統時間
cal calendar的縮寫,查看日曆,-y選項可以查看一年的日曆

1.1.10.2df和du查看磁盤和目錄空間佔用

  1. 磁盤信息
命令 作用
df -h disk free 顯示磁盤剩餘空間
du -h [目錄名] disk usage顯示目錄下的文件大小

​ 說明:-h這個選項可以用人性化的方式顯示文件大小

1.1.10.3進程信息

  1. 進程的概念:所謂進程就是當前正在執行的程序

1.1.10.4進程相關命令使用

  1. 相關命令介紹

    命令 作用
    ps aux process status 查看進程的詳細狀況
    top 動態顯示運行中的進程並且排序
    kill [-9] 進程代號 終止指定代號的進程,-9表示強行終止
  2. ps命令介紹

    • 只輸入ps默認只會顯示當前通過終端啓動的應用程序

    • ps選項說明:

      選項 含義
      a 顯示終端上的所有進程,包括其它用戶的進程
      u 顯示進程的詳細狀態
      x 顯示沒有控制終端的進程(不是通過終端啓動的程序也會顯示,即顯示所有進程)
    • 說明:ps的這些選項都不需要加-,直接輸入選項即可

    • 相關參數說明:

      PID:表示進程的代號

      %CPU:表示cpu佔有率

      %MEN:表示內存佔有率

  3. top命令介紹

    • 退出top命令:輸入q即可退出命令
  4. kill命令介紹

    • 說明:不要隨意終止以root身份開啓的進程,可能會導致系統崩潰

1.1.11其它命令

1.1.11.1查找文件命令find命令的基本使用

  1. 說明:find命令功能非常強大,常用於在特定的目錄下查找符合條件的文件

  2. 格式:

    命令 作用
    find [路徑] -name “*.py” 查找指定路徑下拓展名爲.py的文件,包括子目錄(意思就是可以遞歸查找)
  3. 格式說明:

    • 如果省略路徑則表示在當前文件下查找
    • 通配符可以配合find使用

1.1.11.2軟鏈接

  1. 格式:

    命令 作用
    ln -s 被鏈接的源文件 鏈接文件 建立文件的軟鏈接,用通俗的話講就是Windows下的快捷方式,用軟鏈接的方式快速打開軟鏈接指向的文件
  2. 格式說明:

    • 沒有-s選項建立的是一個硬鏈接,工作中幾乎不會建立硬鏈接
    • 源文件要使用絕對路徑,不能使用相對路徑(相對於輸入命令的位置),這樣可以防止移動鏈接文件後仍然可以正常使用 (例如:當創建的軟鏈接位置發生變化後,對於軟鏈接所在的新位置而言,源文件的位置就不再是之前的相對路徑位置(例如相對路徑的上一級目錄不同,之前的上一級目錄是在創建軟鏈接時的上一級目錄,而移動軟鏈接後的上一級目錄則是相對於軟鏈接所在的上一級目錄),即可能在修改後的目錄下該相對路徑是錯誤的)

1.1.11.3硬鏈接

  1. 硬鏈接相對於軟鏈接而言的差異:如果將源文件刪除,創建的硬鏈接仍然可以使用而創建的軟鏈接將無法使用
  2. 軟鏈接和硬鏈接工作方式的差異
    • 在Linux中,文件名和文件數據是分開存儲的
    • 軟鏈接就是和Linux一樣創建一個軟鏈接文件名和軟鏈接的文件數據,通過訪問源文件的文件名來訪問源文件的文件數據(即軟鏈接只有通過源文件的文件名纔可以訪問源文件的文件數據,如果源文件的文件名被刪除,軟鏈接將無法訪問源文件的文件數據)
    • 硬鏈接就是創建一個和源文件文件名具有相同功能的文件,硬鏈接可以直接訪問源文件的文件數據而無需通過源文件的文件名來進行訪問,也就是說如果源文件的文件名被刪除,硬鏈接仍然可以訪問源文件的文件數據

1.1.12打包壓縮

1.1.12.1tar命令的相關介紹

  1. 說明:在不通過的操作系統中,打包壓縮的方式是不同的,在Windows中常用rar,在Linux中常用tar.gz,在Mac中常用zip

  2. tar命令只負責打包不負責壓縮:可以一系列文件打包成爲一個大文件同時也可以將一個大文件恢復成一系列文件

    • 打包和解包

      # 打包文件
      tar -cvf 打包文件.tar 被打包的文件/路徑……
      # 解包文件
      tar -xvf 打包文件.tar
      
    • 相關選項說明

      選項 說明
      c 生成檔案文件,創建打包文件
      x 解開檔案文件
      v 列出歸檔解檔的詳細過程,顯示進度
      f 指定檔案文件名稱,f後面一定是.tar文件,所以必須放在選項最後
    • 打包和解包演練

      # 打包
      tar -cvf py.tar 01.py 02.py 03.py
      # 解包
      tar -xvf py.tar
      

1.1.12.2壓縮和解壓縮

  1. gzip壓縮和解壓縮

    • 用gzip壓縮的tar包其拓展名一般用.tar.gz,表示用tar對文件進行一個打包然後用gzip來壓縮

    • 在tar命令的選項中有一個選項-z可以調用gzip,從而方便實現壓縮和解壓縮功能,而不需要在終端下寫入兩個命令(先打包在壓縮)

    • 命令格式

      # 壓縮文件
      tar -zcvf 打包文件.tar.gz 被壓縮到文件/路徑……
      # 解壓縮文件
      tar -zxvf 打包文件.tar.gz
      # 解壓縮到指定路徑
      tar -zxvf 打包文件.tar.gz -C 目標路徑
      # 要解壓縮到指定路徑時,該路徑必須存在
      
    • 通配符可以適用於壓縮和解壓縮

  2. bzip2壓縮和解壓縮

    • bzip2壓縮到後綴名爲***.tar.bz2

    • bzip2壓縮文件的格式基本和gzip一樣,只有一個地方不同,就是在tar的選項中有一個選項j是可以調用 bzip2的

    • 命令格式

      # 壓縮文件
      tar -jcvf 打包文件.tar.bz2 被壓縮到文件/路徑……
      # 解壓縮文件
      tar -jxvf 打包文件.tar.bz2
      # 解壓縮到指定路徑
      tar -jxvf 打包文件.tar.bz2 -C 目標路徑
      # 要解壓縮到指定路徑時,該路徑必須存在
      

1.1.13ubuntu軟件安裝

1.1.13.1設置軟件源

  1. 軟件源:提供所有軟件安裝包的源頭就稱爲軟件源(ubuntu主服務器就稱爲軟件源,所有用戶可以通過apt命令來安裝軟件源所提供的所有軟件),但是Ubuntu的主服務器是放在國外的,所以國內下載會非常慢
  2. 鏡像源:就是擁有軟件源上面的相同軟件而且是在國內,方便國內的用戶進行下載(像阿里鏡像服務器、清華鏡像服務器等)
  3. 在Ubuntu中設置鏡像源,在Ubuntu的應用程序中搜索軟件和更新,找到ubuntu軟件下的下載自選項,在這裏修改軟件源(一般情況下清華的軟件源下載的速度更快),注意這裏修改中需要等待的時間可能很長,可以點擊選擇最佳服務器來由系統進行測試哪個服務器的下載最佳

1.1.13.2apt命令

  1. apt的全稱是advance package tool,是Linux下的一款軟件安裝包管理工具
  2. apt可以在終端中方便的進行安裝/卸載/更新的相關操作
    • 安裝軟件:sudo apt install 軟件包
    • 卸載軟件:sudo apt remove 軟件包
    • 更新安裝包:sudo apt upgrade

1.1.14vi編輯器

1.1.14.1vi簡介

1.1.14.1.1學習vi的目的
  1. 在工作中需要對服務器上的文件進行簡單的修改,可以使用ssh遠程登陸到服務器上,並且使用vi進行快速的編輯
1.1.14.1.2vi的基本特點
  1. vi的核心思想:讓程序員的手指始終保持在鍵盤的核心區域就可以完成所有的編輯操作而不需要使用鼠標
  2. vim:是從vi發展出來的一個文本編輯器,包含vi的全部功能同時支持代碼補全、編譯等其它的功能,在程序員中被廣泛使用,被稱爲編輯器之神
  3. 在很多Linux系統中直接將vi做成了vim的軟鏈接,也就是說輸入vi實際上打開的是vim

1.1.14.2打開文件

  1. vi 文件名(如果文件名存在就打開該文件,如果文件不存在就新建該文件後將文件打開)
  2. vi快捷鍵:將指定行的代碼複製粘貼指定次數(將光標移動到要複製的行數,在命令行下連續按兩次y,然後按下要粘貼的次數(比如20),最後按下p即可)
  3. 在打開文件的同時定位到指定的行:vi 文件名 +指定的行(vi hello.py +18),如果+後面不寫任何內容就會自動定位到程序的最後一行
  4. 刪除交換文件:當某一個程序的交換文件出現時(比如.hello.py.swp)如果直接vi hello.py會出出現一個錯誤E325,這時只需要輸入大寫的D就可以刪除交換文件,此時在vi hello.py就可以正常編輯

1.1.14.3工作模式

  1. 職責以及切換方式

    • vi的三種工作模式:命令模式、末行模式、編輯模式
    • 命令模式:命令模式下可以對文件進行常規的編輯操作,例如:定位、翻頁、複製、粘貼、刪除等
    • 末行模式:末行模式下可以進行保存、退出等操作(wq:保存並退出(write quit))
    • 編輯模式:編輯文字
  2. 末行模式下的快捷鍵:

    命令 功能
    w 保存
    q 退出,如果沒有保存則不允許退出
    wq 保存並退出
    q! 不保存退出
    x 保存並退出

1.1.14.4移動命令

  1. 重複次數:在命令模式下,先輸入一個數字再跟上一個命令可以讓該命令重複執行指定的次數

  2. 方向移動

    命令 功能
    h 向左
    j 向下
    k 向上
    l 向右
  3. 行內移動:

    命令 功能
    w 向後移動一個單詞
    b 向前移動一個單詞
    0 行首(是真正意義上的行首)
    ^ 行首,第一個不是空白字符的位置(如果行首是空白字符則不會到行首)
    $ 行尾
  4. 行數移動

    命令 功能
    gg 文件頂部
    G 文件末尾
    數字gg 移動到數字對應行數
    數字G 移動到數字對應行數
    :數字(末行模式) 移動到數字對應行數
  5. 屏幕移動

    命令 功能
    ctrl+b 向上翻頁
    ctrl+f 向下翻頁
    H 屏幕頂部
    M 屏幕中間
    L 屏幕底部
  6. 段落切換:python中用空行來區分不同的段落(即連續在一起的屬於一個段落)

    命令 功能
    { 切換到上一個段落
    } 切換到下一個段落
  7. 括號切換

    命令 功能
    % 括號匹配及切換(切換到下一個括號,但只能在一行內切換)
  8. 標記:在開發時如果需要某一行代碼需要稍後處理,可以使用m增加一個標記,後面使用’來快速回到標記處,同名的標記後寫的會覆蓋之前的標記

    命令 功能
    mx x可以是任意一個字母,用來標記行
    'x 快速定位到標記的行

1.1.14.5選中命令

  1. 在vi中要選擇文本,需要先用visual命令切換到可視模式,按住esc可以返回到命令行模式

  2. vi提供三種可視模式:

    命令 模式 功能
    v 可視模式 從光標位置開始按照正常模式選擇文本
    V 可視行模式 選中光標經過到完整行
    Ctrl + v 可視塊模式 垂直方向選中文本
  3. 可視模式下可以和移動命令聯合使用,例如:ggVG能夠選中全部文本

1.1.14.6撤銷和刪除

  1. 撤銷和恢復撤銷

    命令 功能
    u 撤銷上一次命令
    Ctrl + r 恢復撤銷的命令
  2. 刪除文本

    命令 功能
    x 刪除光標所在字符或者選中文字(數字+x可以刪除從光標開始的之後數字個字符)
    d(移動命令) 刪除移動命令對應的內容
    dd 刪除光標所在的行,可以ndd複製多行
    D 刪除至行尾
  3. 說明:d,x這兩個刪除命令實際上是一個剪切操作,刪除後使用p就可以粘貼刪除的內容

  4. 常用結合命令的使用

    • dw:從光標位置刪除到單詞末尾
    • d0:從光標位置刪除到一行的起始位置
    • d}:從光標位置刪除到段落末尾
    • ndd:從光標出向下連續刪除n行
    • d代碼行G:從光標所在行刪除到指定代碼行之間的代碼
    • d’a:從當前光標位置刪除到標記位置之間的所有代碼

1.1.14.7複製和粘貼

  1. 命令

    命令 功能
    y(移動命令) 複製
    yy 複製一行,nyy可以複製多行
    p 粘貼
  2. 在其它軟件中複製到的內容如果想粘貼到vi中不能使用p命令,必須進入編輯模式下右擊選擇粘貼

1.1.14.8替換命令

  1. 命令

    命令 功能 工作模式
    r 替換當前字符 命令模式
    R 替換當前光標後的字符 替換模式

1.1.14.9縮排以及重複執行

  1. 命令

    命令 功能
    >> 向右增加縮進
    << 向左增加縮進
    . 重複上次命令
  2. 在可視行模式下縮進只需要按一個>或者<就可以了

1.1.14.10查找和替換命令

  1. 常規查找

    命令 功能
    /str 查找str,查找到指定內容後,使用n可以查找下一個出現的位置,使用N可以查找上一個出現的位置(會從文件開始出開始查找)
  2. 單詞快速匹配

    命令 功能
    * 向後查找當前光標所在單詞
    # 向前查找當前光標所在單詞
  3. 全局替換

    • 在vi中替換的記憶格式::%s///g
    • 一次性替換文件中的所有出現的舊文本::%s/舊文本/新文本/g
  4. 可視區域範圍的替換:😒/舊文本/新文本/g(選定可視化區域後執行替換前面會有<>,系統會默認輸出不用理會在後面接着寫替換的命令即可)

  5. 確認替換(替換前會向用戶確認是否替換,推薦使用這種替換方式)::%s/舊文本/新文本/gc

    命令 功能
    y 替換
    n 不替換
    a 替換所有
    q 退出替換
    l 最後一個,並把光標移動到行首
    ^E 向下滾屏
    ^Y 向上滾屏

1.1.14.11插入命令

命令 功能
i 在當前字符前插入文本
I 在行首插入文本
a 在當前字符後添加文本
A 在行末添加文本
o 在當前行後面插入一空行
O 在當前行前面插入一空行

1.1.14.12vi演練

  1. 連續輸入多個相同的代碼:在命令行下輸入數字(表示要重複輸入到次數),輸入i進入編輯模式,輸入要重複的內容,按esc進入命令模式,現在編輯器就會將需要重複的內容重複指定的次數
  2. 利用可視化給多行代碼增加註釋:將光標移動到要註釋代碼塊的行首,按住ctrl+v進入可視塊模式,使用j向下選中要註釋的代碼,輸入I進入編輯模式(注意在可視化模式下i不能進入到編輯模式),輸入#,按下esc返回命令模式,此時就會將可視化部分的內容都添加爲註釋

1.1.14.13分屏命令

  1. 末行命令拓展

    命令 功能
    :e 文件名 會切換到指定的文件(當前文件必須保存否則不允許切換到指定文件),如果使用e .會打開內置的文件瀏覽器,瀏覽當前目錄下的文件,然後在該目錄下切換到指定的文件
    :n 文件名 新建文件
    :w 文件名 另存爲,但是仍然要編輯當前文件,並不會切換文件,在實際開發中可以實時進行階段性備份方便後期進行對比
  2. 分屏命令

    命令 功能
    :sp[文件名] 橫向增加分屏,如果不知道切換到哪個文件可以使用:sp .進入到內置瀏覽器進行查看
    :vsp[文件名] 縱向增加分屏
  3. 切換分屏窗口(分屏窗口都是基於ctrl+W,也就是說以下所有命令執行前都要按ctrl+W)

    命令 功能
    w 切換到下一個窗口
    r 互換窗口
    c 關閉當前窗口,但是不能關閉最後一個窗口
    q 退出當前窗口,如果是最後一個窗口,則關閉vi
    o 關閉其它窗口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章