一文讀懂shell命令

0一、shell解釋器使用優先級別

  • 一、顯示指定的解釋器: /bin/bash ./first.shpython

  • 二、腳本文件首行指定默認:./first.shshell

    #!/bin/bash
  • 三、系統默認bash

0二、shell腳本運行方式

  • 一、顯示指定解釋器運行: /bin/bash ./first.sh
  • 二、使用默認解釋器:./first.sh
  • 三、使用source.運行
    • source ./first.sh
    • . ./first.sh

0三、變量基本定義

shell腳本語言中,值的類型只有一種——字符串!學習

賦值符號兩側絕對不能有空格!網站

bash解釋器,在解釋一行代碼的時候,是按照空格做爲命令的邊界!spa

  • name=weiwei
  • name='weiwei'
    • 單引號定義的值內部不會幫助咱們作變量值的替換
  • name="weiwei"
    • 雙銀號定義的值內容會幫助咱們替換變量值

0四、特殊的變量:命令變量

把一個命令的執行結果,做爲一個變量使用!
在這裏插入圖片描述
code

0五、變量取值

  • $變量名
  • ${變量名}
    • 優勢:定義了變量名的範圍,避免衝突
  • "${變量名}"

0六、刪除一個變量

unset 變量名對象

0七、環境變量(全局變量)

一個環境變量,只做用於當前環境(一個交互終端就是一個獨立的環境!)blog

環境變量的意義:爲程序運行,提供一些參數;經過環境變量,傳遞一些參數!圖片

定義方式:

# 定義的時候使用export修飾
export name=haige

# 先定義後修飾
name=haige
export name

07-一、變量的默認值

${變量名:-默認值}

  • 變量定義了,則使用定義的值
  • 變量未定義,使用默認值
  • 若是變量定義了,可是值爲空,使用默認值

${變量名+默認值}

  • 變量必須定義,才能起效果
  • 變量定義了,可是值爲空,則強制使用默認值
  • 即便變量定義且有值,忍讓強制使用設置的默認值

0八、表達式

運算符和參與運算的對象,組合而成的一個式子:1+2

shell中判斷一個表達式是否正確(成功返回0,失敗返回1):

  • test 1 == 2
  • [ 1 == 2 ]

08-一、邏輯表達式:

  • &&: 表示而且,等同於python中的and
  • ||:表示或者,等同於python中的or

08-二、文件表達式:

  • [ -f 文件名 ]:判斷是不是一個普通文件
  • [ -d 文件名 ]: 判斷是不是一個文件夾
  • [ -x 文件名 ]:判斷該文件是否有可執行權限

08-三、數值比較運算:

  • [ 1 -eq 2 ]: 相等比較
  • [ 1 -gt 2]: 大於比較
  • [ 1 -lt 2]: 小於比較
  • [ 1 -ne 2 ]: 不等比較
  • [ 1 -ge 2 ]: 大於等於比較
  • [ 1 -le 2 ]: 小於等於比較

08-四、字符串比較:

  • [ str1 = str2 ]: 字符相等
  • [ str1 == str2 ]:字符相等
  • [ str1 != str2 ]: 字符不等

08-五、運算表達式:

不支持浮點數,只支持整數運算;

  • count=$((運算表達式))
  • let count=運算表達式

0九、Linux經常使用的符號

09-一、輸出重定向符號

默認的重定向符號,只把標準輸出重定向!

  • >: 把原來輸出的數據,以覆蓋的方式寫入文件中;
  • >>:把原來輸出的數據,以追加的方式寫入文件中;

一、指定標準輸出(正常的打印信息)重定向

env 1> data.txt

二、標準出錯(異常報錯信息)重定向

env 2> data.txt

三、全部程序輸出重定向

env > data.txt 2>&1

09-二、管道

做用:把管道左側指令的標準輸出重定向給管道右側指令的標準輸入!

env | grep 過濾詞

09-三、執行命令尾部加上&號: sleep 10 &

快捷鍵ctrl + z

做用:把當前佔用終端的程序,掛起放在後臺任務中;

  • fg 後臺任務序號: 把後臺任務從新調回終端前臺運行;
  • jobs:查看當前終端的掛起的全部後臺任務;

十、黑洞文件/垃圾桶文件

文件位置:/dev/null

十一、經常使用命令

11-一、grep命令查詢/檢索文件內容

行爲:按行檢索文件內容,返回結果爲命中的行數據;

格式: grep [-cnvr] [檢索詞] [文件名]

  • -c: 顯示匹配到的總行數
  • -n:顯示匹配到的行信息和行號
  • -v:取反
  • -r: 若是被檢索的文件是一個文件夾,須要加這個參數,對目標文件夾中的文件遍歷檢索

11-二、sed命令修改文件內容

格式:sed -i 's/原內容/新內容/' 文件名

  • 指定行修改: sed -i '行號s/原內容/新內容/' 文件名
  • 指定列修改: sed -i 's/原內容/新內容/列號' 文件名;列號爲"g"表示全部修改:sed -i 's/原內容/新內容/g' 文件名

額外參數:

  • a參數: 指定行下方插入一行sed -i '行號a\新行內容'
  • i參數: 指定行上方插入一行sed -i '行號i\新行內容'
  • d參數: 指定行刪除sed -i '行號d'

11-三、awk命令查看文件

按行檢索,按空格劃分每一列

  • 查看指定awk '{print $1}' awk.txt
  • 查看全部列awk '{print $0}' awk.txt
  • 顯示行號awk '{print NR,$1}' awk.txt
  • 指定沒列的分割符號awk -F ':' '{print $1,$7}' linshi.txt
  • 指定輸出列的鏈接符號awk 'BEGIN{OFS=":"} {print NR,$0}' awk.txt

11-四、find命令搜索文件

格式:find [路徑] [參數] [關鍵字]

  • -name 按照文件名查找文件。
  • -perm 按照文件權限來查找文件。
  • -user 按照文件屬主來查找文件。
  • -group 按照文件所屬的組來查找文件。
  • -type 查找某一類型的文件
    • d文件夾
    • f普通文件
  • -size: 文件大小,單位bcwkMG

十二、零零碎碎的

Linux系統有一個概念:一切皆文件

計算機一個程序,一旦運行起來,會有3個輸出/輸入的方向!

一、標準輸出stdout —— 終端屏幕

二、標準輸入stdin —— 鍵盤

三、標準出錯stderr —— 終端屏幕

總結

我的記錄,新手入門,多多學習,歡迎你們交流探討!
我的網站: http://106.54.78.238/
song_of _sea的我的網站 http://106.54.78.238/

相關文章
相關標籤/搜索