Linux:入門基礎 常用命令 面試必學

2020-10-07 12:00:06

作業系統

  • Windows 10

作業系統的分類

  • 桌面作業系統
  • 伺服器作業系統
  • 嵌入式作業系統
  • 移動裝置作業系統

桌面作業系統

  • Window 系列
  • macOS
  • Linux

伺服器作業系統

  • Linux
  • Windows Server

嵌入式作業系統

  • Linux

Linux分類

  • 商業版 Redhat
  • 穩定版 6.4 6.6 6.8 7.0(偶數)
  • 開發板 6.5 5.7 6.9 (奇數)
  • 免費版 CentOS
  • 穩定版6.4 6.6 6.8 7.0
  • 開發板 6.5 5.7 6.9

介面最好的

  • Ubuntu

國內的

  • 紅旗
  • 中標麒麟

Linux 系統需要記住的目錄

  • /etc: 系統設定,啟動程式
  • /home:普通使用者的家,目錄預設資料存放目錄
  • /mnt:臨時掛載儲存裝置的掛載點,u盤插入光碟機無法使用,需要掛載然後使用
  • /opt:額外的應用軟體包
  • /root:Linux超級許可權使用者root的家目錄
  • /tmp:臨時檔案目錄,這個目錄被當作回收站使用

資料夾的增刪改查

  • 新增:mkdir 資料夾名
    mkdir –p 資料夾名
  • 刪除:rm –rf 資料夾路徑
  • 修改:mv 要修改的資料夾路徑(名) 修改後的資料夾路徑 (名)
  • 查詢:ll [-a]
    ls [-a] [-l]
  • 複製:cp [-a/-r] 原資料夾 目標資料夾

檔案的增刪改查

  • 新增:touch 空文字
    echo ‘內容’ > 或 >> 文字

  • 刪除:rm –rf 檔案路徑(名)

  • 修改:mv 修改前檔案路徑(名) 修改後檔案路徑(名)

  • 查詢:ll [-a]
    ls [-a] [-l]

  • 檢視內容
    前10行:head 檔名
    head -10 檔名
    後10行:tail -10 檔名
    後n行:tail -n 檔名

  • 檢視所有
    cat 檔名

  • 資料過濾
    grep [引數] 關鍵字 檔名

  • 編輯:vi 或者 vim

其他

  • 當前所在的目錄:pwd
  • 清空螢幕:clear
  • 軟連線:ln -s 目標檔案絕對路徑 快捷方式路徑
  • 幫助檔案:命令+ --help
  • &&:前面的命令執行成功再執行後面的。
  • ||:前面的命令執行失敗再執行後面的。

Vi編輯器的常用命令

VI編輯器的三種模式

  • 命令模式
  • 編輯模式
  • 末行模式

末行模式

  • 儲存並退出 :wq 或者 x!
  • 不儲存強制退出 :q!

行內移動

  • 以單詞為單位向後移動 w
  • 以單詞為單位向前移動 b
  • 遊標移動到行首 0 或者 ^
  • 遊標移動到行尾 $

行數移動

  • 移動到首行 gg
  • 移動到尾行 G
  • 定位到某一行 數位gg 或者 數位G 或者 :數位

段落

  • 以段落為單位後移 }
  • 以段落為單位前移 {

復原

  • 復原命令 u
  • 取消復原/恢復復原 Ctrl+r

刪除文字

  • 刪除多行 數位dd
  • 刪除一行 dd
  • 在遊標所在的位置刪除至行尾 D
  • 在遊標所在的位置刪除至行首 d0 或者 d^
  • 剪下 x

複製

  • 複製多行 數位yy
  • 複製一行 yy
  • 貼上 p

替換的命令

  • 替換的是遊標所在的位置以及後面的資料 R
  • 只替換遊標右側的第一個字元 r

資料夾內查詢

  • 通過檔名指定路徑查詢 find 路徑 -name *.txt
  • 通過檔名在當前路徑查詢 find -name *.txt

檔案內查詢

  • /查詢的內容
  • 向上查詢 N
  • 向下查詢 n

檔案內替換

  • :%s/舊文字/新文字/g [c]

壓縮命令

  • gzip
    壓縮檔案 tar zcvf 壓縮檔名.tar.gz 被壓縮的檔案/資料夾
    解壓壓縮檔案 tar zxvf 壓縮的檔名.tar.gz -C 路徑
  • bzip2
    壓縮檔案 tar jcvf 壓縮檔名.tar.bz2 被壓縮的檔案/資料夾
    解壓壓縮檔案 tar jxvf 壓縮的檔名.tar.bz2 -C 路徑

關機

  • halt

重新啟動

  • reboot

使用者許可權

  • drwxr-xr-x. 2 root root 4096 9月 14 23:15 aa (如下解釋)

  • d:表示資料夾

  • rwx:當前使用者具備的許可權

  • r-x:當前使用者所屬的組具備的許可權

  • r-x:其他使用者所具備的許可權

  • root:檔案所屬的使用者

  • root:檔案所屬的使用者所屬的組

  • 4096 :檔案大小

  • 9月:檔案建立的月份

  • 14 23:15:檔案建立的日期

  • aa:檔名

  • 讀許可權:數位表示4

  • 寫許可權:數位表示2

  • 執行許可權:數位表示1

  • 讀寫執行能夠構成的數位和是1、2、3、4、5、6、7

使用者和組的新增

  • 組的操作

    • 新增組 groupadd 組名
    • 刪除組 groupdel 組名
    • 查詢當前所有的組 cat /etc/group
    • 修改組 chgrp 組名 檔案/目錄名
  • 使用者的操作

    • 新增使用者同時指定組 useradd -g 組名 使用者名稱
    • 新增使用者 useradd 使用者名稱 【未指定組時,建立一個與使用者名稱相同的組】
    • 刪除使用者(刪除家目錄):userdel –r 使用者名稱
    • 檢視當前使用者 cat /etc/passwd
    • 為使用者設定密碼 passwd 使用者名稱

使用者切換

  • Su 使用者名稱
  • Root使用者 切換到普通使用者無需密碼,普通使用者之間切換需要密碼
  • 退出使用者 exit
  • 普通使用者臨時借用root許可權使用sudo 命令【普通使用者已經新增到/etc/sudoers檔案中】

修改許可權

  • chmod [-R] 777 檔名/資料夾名
  • chmod +/- rwx 檔名|目錄名
  • chmod -R u=rwx,g=rwx,o=rwx 檔名|目錄名

修改檔案所屬的組

  • chown -R 新使用者:新使用者的組 檔名/資料夾名

其他命令

  • 獲取當前日期:date
  • 更新當前日期:date -s 「yyyy-MM-dd HH:mm:ss」
  • 檢視磁碟空間:df -h
  • 檢視某一目錄所佔空間大小:du -h
  • 檢視程序詳細資訊:ps aux
  • 檢視cpu記憶體等使用情況:top
  • 殺死某一程序:kill [-9] 程序號
  • 檢視記憶體使用率:free –h [-m/-g]

Cut

  • 按照字元提取 head -2 1.txt | cut -c 5
  • 指定分隔符 head -2 1.txt | cut -d ‘:’ -f 1,2

Sort

  • 文字排序 sort 檔名
  • 文字排序反轉 sort -r 檔名
  • 文字排序去重 sort -u 檔名
  • 數值按大小排序 sort -n 檔名
  • 指定分隔符、指定排序列 sort -t ‘分隔符’ -k2nr 檔名

Wc

  • 檢視檔案基本資訊 wc 檔名
  • 檢視檔案行數 wc – l 檔名
  • 檢視檔案單詞數 wc -w 檔名
  • 檢視檔案位元組 wc -c 檔名
  • 檢視多個檔案資訊 wc 檔案1 檔案2 檔案3

Uniq

  • 與sort連用
  • 排序、去重 cat 5.txt | sort | uniq
  • 排序、去重計算總數 cat 5.txt | sort | uniq -c

Tee

  • 資料定位到多個檔案 cat 5.txt | tee a.txt b.txt c.txt

Tr

  • 小寫i 替換成 echo 「itheima」 | tr ‘i’ ‘I’
  • 把 HELLO 轉成 小寫 echo 「HELLO」 |tr ‘[A-Z]’ ‘[a-z]’
  • 刪除數位 echo ‘abc1d4e5f’ | tr -d ‘[0-9]’

Split

  • 按照檔案大小切分 split -b 10k 被切分的檔案
  • 按照行數進行切分 split -l 1000 被切分的檔案

Awk

  • 模糊查詢 awk ‘/條件/’ 文字名
  • 按照分隔符拆分,根據角標顯示

awk -F ‘,’ ‘{print $1, $2, $3}’ 1.txt

  • 按照分隔符拆分,根據角標顯示並指定分隔符
    awk -F ‘,’ ’ {OFS="==="}{print $1, $2, $3}’ 1.txt
  • 支援函數
    awk -F ‘,’ '{print toupper($2),$3100}’ 1.txt

If判斷語句

  • awk -F ‘,’ ‘{if($4>60) print $1, $4, 「及格」; else print $1, $4, 「不及格」}’ score.txt

Shell程式設計

Shell 指令碼的直譯器

  • /bin/sh
  • /bin/bash
  • /sbin/nologin
  • /bin/dash
  • /bin/tcsh
  • /bin/csh

指令碼的編寫規範

  • 首行描述直譯器 #!/bin/bash

執行指令碼的三種方式

  • bash 指令碼名稱 指令碼引數
  • sh 指令碼名稱 指令碼引數
  • /指令碼名稱 指令碼引數【./指令碼名稱之間沒有空格】【chmod 777 指令碼名稱】

變數的宣告

  • 變數名=」值」【中間不能有空格】
  • 變數名要求 字母或下劃線或數位(開頭不能是數位)構成

變數的參照

  • 使用$ 或 ${}參照變數
  • 刪除變數 唯讀變數
  • 刪除 unset 變數名
  • 唯讀 readonly 變數名

字串使用

  • 雙引號(」」):內部可以使用變數
  • 單引號(‘’):內部所有的原樣輸出
  • 反引號(``):表示可執行

字串長度及擷取

  • 長度: echo ${#skill}
  • 擷取: echo ${str:2:2} 【在第二個字元開始擷取擷取兩位】

指令碼引數傳遞

  • bash 指令碼名 引數1 引數2 引數3 。。。。。。
  • 指令碼內
  • $0 指令碼名稱
  • $1 引數1
  • $2 引數2
  • $n 引數n
  • $* 所有引數
  • $# 引數的個數

算數運運算元

  • 加法計算 expr 2 + 2
  • 乘法計算 expr 2 \* 2

流程控制if

  • if [ $a -gt 10 ];then
    程式碼1
    elif [ $a -lt 10 ];then
    程式碼2
    else
    程式碼3
    fi

關係運算子

  • 大於:-gt
  • 小於:-lt
  • 大於等於:-ge
  • 小於等於 :-le
  • 小於:-eq
  • 不等於 :-ne

迴圈

  • For 迴圈:
    For aa in XXXX
    do
    迴圈體
    done
  • While迴圈:
    While 條件 ;
    do
    迴圈體
    done

跳出迴圈

  • 跳出所有迴圈:break
  • 跳出當前迴圈,進入下一次迴圈:continue

case ()

  • case 值 in
    結果1)
    結果1對應的操作;;
    結果2)
    結果2對應的操作;;
    結果3)
    結果3對應的操作;;
    esac

接收控制檯資料

  • read 變數名

函數的使用

  • 函數宣告:
    [function] 函數名(){
    函數體
    $引數1
    $引數2
    $引數3
    }

函數呼叫

  • 函數名 引數1 引數2 引數3

陣列

  • 陣列宣告: 陣列名稱=(元素1 元素2 元素3 元素4)

陣列的使用

  • 單個使用 echo 陣列名[角標] 【角標從0開始】
  • 遍歷陣列
    for var in ${my_arr[*]}
    do
    echo $var
    done

檔案載入

  • 在檔案中新增 . 指令碼名稱 或者 source 指令碼名稱
    #!/bin/bash
  • source ./test1.sh :載入test1.sh 的檔案內容