Linux Shell 編程筆記

經常使用命令

echo [STR]    # 打印顯示字符串
printf '[FORMAT]' [ARG]    #格式化輸出(不支持數據流操做)
read [VAR]    # 讀取鍵盤輸入
    -p  # 彈出提示信息
    -t  # 指定等待輸入的時間(time)
    -n  # 指定輸入的字符數
    -s  # 隱藏輸入的信息(secret)
    
declare [+/-] [VAR]
    -p  # 查看變量類型
    -i  # 聲明整數類型(integer)
    -a  # 定義數組類型(array)
    -x  # 定義爲環境變量類型
    -r  # 定義爲只讀類型(read only)

test [EXP]    # 測試命令

export [VAR]    # 顯示和設置環境變量
    -f    # 環境變量爲函數名稱(function name)
    -p    # 列出Shell全部的環境變量
    -n    # 刪除指定的環境變量

expr    # 指定數值運算符
wc    # 字符數統計(word count)
grep    # 正則表達式命令(global search regular expression and print)
gawk    # gawk文本處理工具(GUN awk)

比較運算符

數值及字符串比較

-eq    # 等於(equal to)
-ne    # 不等於(not equal to)
-lt    # 小於(less than)
-gt    # 大於(greater than)
-le    # 小於或等於(less than or equal to)
-ge    # 大於或等於(greater than or equal to)
-o    # 邏輯或(or)
-a    # 邏輯和(and)
-n    # 判斷是否不爲空(not null)
-z    # 判斷是否爲空(null)
-e    # 判斷文件是否存在(exist)

判斷文件屬性

-f    # 判斷是不是文件並存在(file)
-d    # 判斷是不是目錄並存在(directory)
-c    # 判斷是不是字符設備文件(character)
-S    # 判斷是不是Socket文件(socket file)
-p    # 判斷是不是管道文件(pipe file)
-L    # 判斷是不是連接文件(link file)

判斷文件權限

 

-r    # 判斷文件是否具備可讀屬性(readable)
-w    # 判斷文件是否具備可寫權限(writable)
-x    # 判斷文件是否具備可執行權限(exectutable)
-u    # 判斷文件是否具備超級用戶(SUID,super user ID)權限
-g    # 判斷文件是否具備超級用戶組(SGID,super group ID)權限
-k    # 判斷文件是否具備Sticky bit權限
-s    # 判斷文件是不是非空白文件

文件間判斷

[F1] -nt [F2]    # 判斷文件1是否比文件2新(newer than)
[F1] -ot [F2]    # 判斷文件1是否比文件2舊(olderthan)
[F1] -ef [F2]    # 判斷文件1是否與文件2相同(equal file)

 

字符處理命令

cut [OP] [F]
    -f [COLUMN_NUM]    # 提取對應列的字符
    -d [SEPARATOR]    # 制定分隔符

正則表達式

基本格式

 

grep [OP] [REP] [F]    # 正則表達式命令
    -c    # 只輸出匹配行的行數,不顯示匹配的內容(count)
    -i    # 不區分大小寫(ignore case)
    -h    # 查詢多文件時不顯示文件名
    -n    # 顯示匹配行及行號(line number)
    -s    # 不顯示不存在或無匹配的錯誤信息
    -v    # 顯示不包括匹配文本的全部行
    -E    # 容許使用擴展模式匹配(extended regular expression) egrep [OP] [REP] [F]    # 拓展性的正則表達式命令
fgrep [OP] [REP] [F]    # 用於文本文件中搜索字符串的正則表達式命令

正則表達式封裝類

 

[[:upper:]]    # 匹配大寫字符
[[:lower:]]    # 匹配小寫字符
[[:digit:]]    # 匹配數字
[[:alnum:]]    # 匹配數字和字符
[[:space:]]    # 匹配空格
[[:alpha:]]    # 匹配字符,包括大寫字符和小寫字符

 

 

 

轉義字符控制

控制序列指示器(Control Sequence Indicator,CSI)git

普通轉義字符

特殊轉義字符

\d
\s
\l
\m

 

字符顯示格式控制

 

\033[Xm    # 字符轉義開始符號,"\033"表示Esc符號,十六進制數值爲""033",X"爲可變控制碼,根據實際需求更改
\e[Xm    # 又或者是這種方式亦可,"\e"表示Esc符號

# 經常使用顯示格式,"X"的可選參數:
0    # 重置爲普通模式
1    # 設置爲強亮度 
2    # 設置爲弱亮度
3    # 使用斜體
4    # 使用單下劃線
5    # 使用慢閃爍
6    # 使用快閃爍
7    # 背景與前景色調轉
8    # 前景色設定爲背景色

字符顏色格式控制

 

\033[XYm    # "X"表示前景色,若是是"3",表示前景色;若是是"4",表示背景色."Y"表示背景色,詳細以下

0    # 黑色
1    # 紅色
2    # 黃色
3    # 綠色
4    # 藍色
5    # 洋紅色
6    # 青色
7    # 白色

 

 

awk命令使用

基本格式

awk '{[AWK_CONTNET]}' [F]

經常使用選項

-F
-f file
-v
-mf N
-mr N
-W keyword

內置變量

$n    # n>0,獲取該行第n個字段(字段間以一個空格間隔開)
$0    # 獲取該行全部字段
NR    # 已經讀取過的記錄數,即文檔中有字符記錄的行數(number of records)
FNR    # 從當前文件中讀出的記錄數(file number of records)
FILENAME    # 當前文件名
FS    # 字段分隔符,即以空格分開的字符串列(field separator)
RS    # 記錄分隔符(records separator)
OFMT    # 數字輸出格式(output format of mathematics)
OFS    # 輸出字符分隔符(output format of string)
ORS    # 輸出記錄分隔符(output records separator)
NF    # 當前記錄中的字段數(number of fields)

經常使用字符串函數

 

index(string1, string2)
length(string)
blength(string)
substr(string, startChar, charNum)
match(string, ere)
split(string, array, regexp)
tolower(string)
toupper(string)
sprintf(format, expr1, expr2, ...)

 

經常使用時間函數

 

mktime
strftime(format, timestamp)
systime()

 

 

 

 

sed命令使用

基本格式

sed [OP] [CMD] [F]
sed [op] -f [SCRIPT] [F]
相關文章
相關標籤/搜索