linux命令入門指南

longsihua2003發表於2024-07-17

linux命令入門指南

(個人學習所用,雷同之處請忽略)

關於linux

伺服器種類

  1. 物理伺服器
    需要機房(零度、無塵、無靜電)--防止機器短路,資料丟失。(建造自己的機房或者進行託管)
    自己的伺服器需要維護。
  2. 雲伺服器
    由伺服器廠商提供(阿里雲、騰訊雲)--省錢、有人維護
  3. vmware虛擬化技術
    透過cpu的虛擬化技術,建立虛擬機器伺服器。
    安裝虛擬機器linux參考:https://www.cnblogs.com/pyyu/articles/9313587.html

linux的優勢

  1. 跨平臺的硬體支援
  2. 豐富的軟體支援
  3. 多使用者多工
  4. 可靠的安全性(檔案系統)
  5. 良好的穩定性
  6. 完善的網路功能
    img

硬體---(有效控制)---作業系統-->應用程式
img

linux的發展情況

  • Linux以高效和靈活主城,Linux同事具有多工、多使用者的能力,支援多執行緒,多CPU。
  • Linux包括了文字編輯器,高階語言編譯器,以及圖形使用者介面登應用軟體,當然絕大多數伺服器都是使用命令列,文字模式操作Linux的。
  • Linux遵循GNU通用公共許可協議,屬於自由軟體,使用者不需要支付費用就可以獲得系統和系統原始碼,無償使用且自由傳播。
  • Linux具有很高的系統穩定性和可靠性。
  • 具有很高的系統安全性
  • 眾多業界廠商支援,如IBM、Oracle、Intel、HP、Google等
  • 有完善的資料庫平臺,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等。
  • 有完善的圖形化使用者介面,包括GNOME、KDE等。
  • 有完善的開發平臺,包括C/C++、Java、Python等。

linux發行版

Linux實際上只是定義了一個作業系統的核心,這個核心由kernel.org維護。不同的企業和組織在基礎上開發了一系列的輔助軟體,打包釋出自己的“發行”版本。(這個發行版才叫作業系統)

  1. linux桌面程式 -- Ubuntu
  2. 伺服器端linux -- Redhat(企業、收費)、CentOS(社群版、免費)
  3. 中文 -- 麒麟linux

linux和window區別

Windows:普通使用者基本依靠圖形介面操作,滑鼠和鍵盤完成一切需求,上手簡單容易
Linux:兼具圖形介面(需要帶有桌面環境的發行版Linux)和完全命令列操作,無法使用滑鼠,新手入門困難,需要學習後方可使用,熟練後效率極高!

總結

  1. 作業系統是什麼
    是人與計算機硬體溝通的介質

  2. 作業系統組成---雞蛋由幾部分組成

  • 蛋黃-系統核心
  • 蛋清-命令直譯器shell
  • 蛋殼-應用程式
  1. Linux是一套開放原始碼程式、且可以自由傳播的作業系統

  2. 掌握centos/redhat能更好的適應網際網路服務端開發環境

  3. 使用linux的好處是自由傳播,免費,不會犯法,任意切換圖形/命令終端,安全穩定,不用防毒軟體,不卡

linux檔案系統

1. window對硬碟分盤,存在多個主盤。而linux是從一個原點開始。
2. window是透過反斜槓(\)做分隔符,而linux是透過斜杆(/)作為分隔符

linux目錄結構

img

  • /bin:
    bin是Binary的縮寫, 這個目錄存放著最經常使用的命令。

  • /sbin:
    s就是Super User的意思,這裡存放的是系統管理員使用的系統管理程式。

  • /etc:
    這個目錄用來存放所有的系統管理所需要的配置檔案和子目錄。

  • /lib:
    這個目錄裡存放著系統最基本的動態連線共享庫,其作用類似於Windows裡的DLL檔案。幾乎所有的應用程式都需要用到這些共享庫。

  • /tmp:
    這個目錄是用來存放一些臨時檔案的。

  • /opt:(第三方軟體存放目錄)
    這是給主機額外安裝軟體所擺放的目錄。比如你安裝一個ORACLE資料庫則就可以放到這個目錄下。預設是空的。

  • /var:
    這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌檔案。

  • /sys:
    這是linux2.6核心的一個很大的變化。該目錄下安裝了2.6核心中新出現的一個檔案系統 sysfs 。

  • /selinux:
    這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似於windows的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux相關的檔案的。

  • /usr:
    這是一個非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似於windows下的program files目錄。

  • /usr/bin:
    系統使用者使用的應用程式。

  • /usr/sbin:
    超級使用者使用的比較高階的管理程式和系統守護程式。

  • /media:
    linux系統會自動識別一些裝置,例如隨身碟、光碟機等等,當識別後,linux會把識別的裝置掛載到這個目錄下。

使用者目錄

/root:
該目錄為系統管理員,也稱作超級許可權者的使用者主目錄。

/使用者名稱:
普通使用者檔案主目錄。

linux使用者系統

熟悉普通的命令

  1. ssh + 登入使用者 + @ip 進行ssh隧道連線
    輸入密碼可以成功連線
    img

直到看到上次登入時間和歡迎詞時登入成功。
在伺服器命令列當中:
掌握普通使用者登入後系統的提示符:$
掌握root使用者登入後系統的提示符:#

  1. 檢視終端情況
    tty 檢視當前終端
    who am i 僅顯示當前使用者正在使用的終端和登入時間
    w 檢視所有終端(功能最全,顯示使用者名稱,終端標記,登入時間,負載等資訊)

終端情況

ssh連線在linux當中的配置檔案

  • 配置檔案位置:/etc/ssh/sshd_config
  • 透過次命令檢視配置 grep -v '^#' /etc/ssh/sshd_config | grep -v '^$' -- grep管道符進行篩選、-v表示將篩選結果倒置(將篩出來的東西排除)、'^#' 所有#開頭的註釋,'^$'所有空行。
    img
  • 其中PasswordAuthentication yes表示ssh隧道允許使用密碼登入。

linux目錄檔案操作

linux命令手冊

對資料夾的操作

命令 描述 備註
ls + 路徑 展示目錄下的檔案資料夾
mkdir +檔名 建立資料夾
mv + 檔案/資料夾路徑 + 檔名/路徑 資料夾重新命名 當為路徑時也可以進行檔案移動
rm -rf 刪除檔案或者資料夾 -r無需確定進行刪除、-f遞迴刪除
rmdir 刪除空資料夾 對空資料夾進行刪除

對檔案的操作

命令 描述 備註
ls + 路徑 展示目錄下的檔案資料夾
touch +檔名 建立檔案
mv + 檔案/資料夾路徑 + 檔名/路徑 資料夾重新命名 當為路徑時也可以進行檔案移動
rm -rf 刪除檔案或者資料夾 -r無需確定進行刪除、-f遞迴刪除

通用命令

  1. 修改檔案的修改時間

    touch -t '07101530' 1.txt --將1.txt的檔案修改時間修改為07月10日15:30

  2. 控制檯輸出和寫入檔案

    echo '字串' --將某字串輸出在終端
    echo '字串' >> 1.txt -- 將某字串寫入檔案1.txt

  3. 特殊符號

    • '>>' 追加重定向,將文字寫入檔案末尾
    • '>' 重定向符號,清空原來檔案內容,然後進行覆蓋寫入
    • '<' 輸入重定向
    • '<<' 將輸入結果輸入重定向
      給幾個例子
      img
      img

注意:wc -l為統計行數,< 可以將檔案內容作為輸入。

  1. stat [引數] 檔案

    顯示檔案或檔案系統狀態

    出現的結果如下例子:
    img
    解釋如下:

    [root@master tmp]# stat 1.txt
    File: '1.txt'
    Size: 0             Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d    Inode: 17348002    Links: 1
    (許可權)Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    (最近訪問)Access: 2018-07-10 15:30:00.000000000 +0800
    (最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
    (最近改動)Change: 2018-11-07 15:38:36.400989868 +0800
    Birth: -
    

    相關引數如下:

    • -L, --dereference 跟隨連結

    • -f, --file-system 顯示檔案系統狀態而非檔案狀態

    • -c --format=格式 使用指定輸出格式代替預設值,每用一次指定格式換一新行

      --printf=格式 類似 --format,但是會解釋反斜槓轉義符,不使用換行作輸出結尾。如果您仍希望使用換行,可以在格式中加入"\n"

    • -t,

      --terse 使用簡潔格式輸出

      --help 顯示此幫助資訊並退出

      --version 顯示版本資訊並退出

    • 格式化輸出引數:

    %a 八進位制許可權

    %A 用可讀性較好的方式輸出許可權

    例如:

    img

  2. cat、more命令

    檢視檔案:
    cat:內容較少
    more:內容較多

    #檢視檔案,顯示行號
    cat -n xxx.py
    #貓,檢視檔案
    cat xxx.py
    
    #在每一行的結尾加上$符
    [root@master tmp]# cat -E 1.txt
    
    #追加文字到檔案
    cat >>/tmp/oldboy.txt << EOF
    唧唧復唧唧
    木蘭開飛機
    開的什麼機
    波音747
    EOF
    
    more /etc/passwd
    按下空格space是翻頁
    按下b鍵是上一頁
    Enter鍵向下讀取內容
    
  3. find 命令

    Linux裡如何找到需要的檔案 例如 oldboy.py

    輸入格式:

    find 在哪裡(目錄) 什麼型別(檔案型別) 叫什麼名字(檔名)

    引數

    • -name 按照檔名查詢檔案
    • -type 查詢某一型別的檔案,諸如:
    • b - 塊裝置檔案。
    • d - 目錄。
    • c - 字元裝置檔案。
    • p - 管道檔案。
    • l - 符號連結檔案。
    • f - 普通檔案。
    • s - socket檔案

    例子:

    find /tmp/ -type f  -name "oldboy.py"
    
    #找出/tmp所有以 .txt 結尾的檔案
    find /tmp/ -type f -name "*.txt"
    
    #找到/etc下所有名字以host開頭的檔案
    find /etc -name 'host*'
    
    #找到/opt上一個名為settings.py
    find /opt -name 'settings.py'
    
  4. grep 命令

  • 語法:
    grep [引數] [--color=auto] [字串] filename

  • 引數:

    • -i : 忽略大小寫
    • -n : 輸出行號
    • -v : 反向選擇
    • --color = auto : 給關鍵詞部分新增顏色

    img

  1. 管道符與grep配合快速搜尋
  • 語法:
    命令A | 命令B

    常見用法:
    #檢查python程式是否啟動
    ps -ef|grep "python"
    
    #找到/tmp目錄下所有txt檔案
    ls /tmp|grep '.txt'
    
    #檢查nginx的埠是否存活
    netstat -tunlp |grep nginx
    

    img

  1. head、tail命令

    查詢頭幾行或者尾幾行,
    可以用來看持續更新的檔案

    #檢視前兩行
    head -2 /tmp/oldboy.txt
    #檢視後兩行
    tail -2 /tmp/oldboy.txt
    #持續重新整理顯示
    tail -f xx.log
    
    #顯示檔案10-30行
    head -30 /tmp/oldboy.txt |tail -21
    
  2. 別名alias

    Linux如何提示你,在使用rm、cp、mv這些命令時候,提醒你小心呢?
    答案就是alias命令

    alias就可以設定別名,在你進行某些設定的命令時->先走別名的定義->再進行某些命令的操作

    舉例如下:

    # 檢視所有有別名的命令
    [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    
    # 設定新別名以阻止危險操作
    [root@iZ2zefuxklg0ufrapu0xnpZ ~]# alias rm='echo do not use rm'
    [root@iZ2zefuxklg0ufrapu0xnpZ ~]# alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='echo do not use rm'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@iZ2zefuxklg0ufrapu0xnpZ ~]# cd /tmp/
    [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# ls
    a  c  oldboy
    [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# rm -r a
    do not use rm -r a
    [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# ls
    a  c  oldboy
    # 取消別名
    unalias rm
    
    • 注意,此時設定的別名不會永久生效,需要設定配置檔案
    #設定別名永久生效,寫入到/etc/profile(針對登入使用者的合同,設定環境變數)
    vim /etc/profile #編輯檔案
    G  # 快速到達最後一行
    o  # 當前行下一行,建立一個新行,進入編輯模式
    # 加入兩行
    alias rm="echo do not use rm"
    source /etc/profile #讀取檔案(合同生效)
    
    # 退出重啟後別名仍然成立
    
  3. which命令

    查詢命令是否存在環境變數,或者存在在那個環境變數裡面

    • 注意與find區分

    例:
    img

  4. scp命令

    遠端複製檔案

    和cp命令幾乎一模一樣,只是它是複製遠端的檔案。

    img

  5. du命令

    顯示檔案大小

  • 語法
    du 【引數】【檔案或目錄】

    -s 顯示總計

    -h 以k,M,G為單位顯示,可讀性強
    img

  1. top命令

    工作管理員

    使用top之後調出系統情況:包括以下內容
    img
    解釋如下:

    第一行 (uptime)
        系統時間 主機執行時間 使用者連線數(who) 系統1,5,15分鐘的平均負載
    
    第二行:程序資訊
        程序總數 正在執行的程序數 睡眠的程序數 停止的程序數 殭屍程序數
    
    第三行:cpu資訊
        1.5 us:使用者空間所佔CPU百分比
        0.9 sy:核心空間佔用CPU百分比
        0.0 ni:使用者程序空間內改變過優先順序的程序佔用CPU百分比
        97.5 id:空閒CPU百分比
        0.2 wa:等待輸入輸出的CPU時間百分比
        0.0 hi:硬體CPU中斷佔用百分比
        0.0 si:軟中斷佔用百分比
        0.0 st:虛擬機器佔用百分比
    
    第四行:記憶體資訊(與第五行的資訊類似與free命令)
        8053444 total:實體記憶體總量
        7779224 used:已使用的記憶體總量
        274220 free:空閒的記憶體總量(free+used=total)
        359212 buffers:用作核心快取的記憶體量
    
    第五行:swap資訊
        8265724 total:交換分割槽總量
        33840 used:已使用的交換分割槽總量
        8231884 free:空閒交換區總量
        4358088 cached Mem:緩衝的交換區總量,記憶體中的內容被換出到交換區,然後又被換入到記憶體,但是使用過的交換區沒有被覆蓋,交換區的這些內容已存在於記憶體中的交換區的大小,相應的記憶體再次被換出時可不必再對交換區寫入。
    
  2. lsattr和chattr命令

    如何讓root都刪不掉你的檔案 ->
    給他加鎖

    • lsattr 檢視有沒有鎖
    • chattr +某個引數 加鎖
    • chattr -某個引數 解鎖

    例:
    img

  3. 時間命令

    進行時間同步,保證機器時間與雲端時間伺服器相同

    相關命令:

        # 檢視硬體時間
        hwclock
        # 檢視系統時間
        date
        # 與阿里雲的時間伺服器同步
        ntp -u ntp.aliyun.com
    
        [root@localhost ~]# date
        Thu Jul 11 00:31:17 CST 2024
        [root@localhost ~]# hwclock
        Thu 11 Jul 2024 12:31:46 AM CST  -0.993494 seconds
        [root@localhost ~]# ntpdate -u ntp.aliyun.com
        11 Jul 00:32:28 ntpdate[10203]: step time server 203.107.6.88 offset 0.870400 sec
    
  4. 日期命令

    檢視日曆

    -y引數 檢視一年的日曆

        [root@localhost ~]# cal
            July 2024     
        Su Mo Tu We Th Fr Sa
            1  2  3  4  5  6
        7  8  9 10 11 12 13
        14 15 16 17 18 19 20
        21 22 23 24 25 26 27
        28 29 30 31
    
        [root@localhost ~]# cal -y
        ……
    
    
  5. wget命令

    對網頁發get和post請求,詳情參考命令手冊。

    • window和linux互傳:

      lrzsz工具。(透過yum安裝)

      sz(向window傳送檔案)
      rz(從linux接受檔案)

    例子如下:
    img

    還可以透過拖拽的方式拉入linux(xshell)
    img

其他命令

命令 描述 備註
pwd 顯示當前路徑 顯示目前自己在哪
clear 清屏
cd + 路徑 切換目錄 表示自己要去哪
  • ls有許多常用的引數:
    -a --顯示指定目錄下所有子目錄和檔案(包括隱藏)、
    -l --以列表的形式顯示詳細資訊(大小、許可權資訊)
    -h --配合-l以更人性化的方式顯示檔案大小

  • mkdir 可以透過-p引數進行遞迴建立,{}包含的檔名可以在同級建立
    img

參考連結:https://www.cnblogs.com/pyyu/p/9276851.html