一文懂shell命令
0一、shell解釋器使用優先級別
-
一、顯示指定的解釋器:
/bin/bash ./first.sh
python -
二、腳本文件首行指定默認:
./first.sh
shell#!/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/