BASH 命令以及使用方法小結

2022-07-06 21:12:17 字數 2276 閱讀 2686

1,export var=...

這個命令在shell下直接執行可以使之後執行的指令碼也知道這個var。但是如果這個命令在指令碼中執行,那麼不影響指令碼以外的引數。舉個例子,如果在乙個指令碼執行之前沒有 var這個環境變數,而在指令碼中執行了 export var=3 這一命令,那麼在指令碼結束之後,如果執行 echo $var,不會有任何顯示。說明export僅在指令碼中有效。

2,if ... ; then ...; else ...; fi

可以把判斷寫在不同行,這樣就不需要「;」號了。if後面跟,中括號裡面是表示式,表示式與中括號的首尾都需要留乙個空格。乙個例子來判斷var為空:

if [ -z "$var" ]; then echo "empty"; else echo "not empty"; fi

需要注意的是必須把$var的兩頭用雙引號包起來。

3,雙引號和單引號

說到雙引號,它與單引號的區別在於如果引號之間有變數,則一定要用雙引號。因為bash不會檢測單引號中的內容,也就是說單引號之中不存在特殊字元。echo '$var' 的輸出就是$var,在單引號中使用雙引號也沒有任何問題。相反,如果在雙引號中需要列印特殊符號是就需要使用'\'來轉義。比如echo "$var" 會輸出空字元,而echo "\$var"會輸出\$var。

4,$()

如果需要把乙個或一串命令的返回值賦給乙個變數,可以用$(),然後把命令放入括號中。例如:

lines = $(cat filename | wc -l)

5,#!/bin/sh

6,sed 's/abc/cba/' 

sed可以用來做正規表示式的搜尋和替換,既可以針對文字檔案,也可以針對字串變數。這裡我主要使用的是字串變數,所以一般格式是這樣的:

temp=$(echo $svar | sed 's/.*\(regex\).*/\1/')

這樣就可以在變數svar中找到對應regex的內容,然後把它提取出來。regex兩邊的 \( 和 \) 用來把regex對應的內容形成乙個組(group),然後 \1 表示把svar的所有內容替換成第一組的內容,也就是regex能夠match的那一部分。如果找不到與regex對應的部分,那麼返回的是svar的所有內容。

7,"$" = "$var"

上述等式可以用來判斷乙個字串中是否存在substring。如果相等則說明不存在。因為等式左邊會返回從找到的第乙個substring開始的子字串,只有當不存在substring時才會返回原字串。

8,curl

curl是乙個非常強大的用來傳送http請求的命令。我只用到了一些引數,如

-s 表示靜默執行,不顯示curl命令的速度,完成情況,錯誤等statistics

-s 通常與 -s 一起用,表示當有錯誤的時候顯示出來

-k 當需要傳送https請求時,加上這個表示允許不安全請求

-x 後面跟請求方法,如post, put, delete。如果是get的話就不用了,因為這是預設操作

-h 後面跟頭部引數,乙個curl命令可以使用多個 -h 來定義多個引數

-d 後面跟body,必須使用單引號開始和結束

所以乙個curl命令可能看上去是這樣的:

需要注意的是在body中使用變數的話,需要先用乙個單引號結束上乙個單引號的控制範圍,再在這個變數之後用乙個單引號與後面的單引號作對應。

9,定義方法

在指令碼中是可以定義function的。具體形式可以是:

func()

定義時不需要寫明輸入引數有哪些,因為在方法裡面可以直接獲取並使用這個方法或者命令後面跟的引數。例如:

func abc 30

那麼$1 就是abc,$2 就是30。如果有更多輸入引數,那麼可以使用$3,$4,。。。一直下去。

方法也可以有返回值,如

func()

那麼 func abc 30 執行之後,$?中存的就是35。

10, tr

可以用來把字串中的某乙個字元改成另乙個字元,所以就可以用來做字串的切分。例如有乙個字串svar="a,b,c"。通過命令:

arr=$(echo $svar | tr "," "\n")

就可以把乙個字串變成三個。

11,字串操作

字串尾部新增字元:svar=$svar'abc' 就可以在svar原本的字串後面新增abc三個字元

字串刪除尾部最後乙個字元:svar=$

12,case "$var" in

a)...

;;b)

...;;

*)...

;;esac

這個就類似c語言中的switch,對var中的不同內容進行不同的操作。

IO REMOVE LOCK使用方法小結

io remove lock 刪除鎖 的具體結構沒有公開,wdk的文件中中查不到io remove lock。最開始看到io remove lock是在wdk的例子event中。下面是參考網上的一些資料之後的一點總結,錯誤的地方請指正。wdm 驅動程式在處理裝置刪除 irp 並釋放驅動程式分配的記憶...

Git使用方法小結

安裝完成後,還需要最後一步設定,在命令列輸入 git config global user.name your name git config global user.email email example.com 因為git是分布式版本控制系統,所以,每個機器都必須自報家門 你的名字和email位...

Sqlmap 使用方法小結

平常的使用get方法像 tables columns t d dbs dump 啥的就不說了,只是部落格幾天不發,空著不好,還是得寫寫東西 is dba 當前使用者許可權 是否為root許可權,mssql下最高許可權為sa dbs 所有資料庫 current db 當前資料庫 users 所有資料庫...