shell其實是一個命令解釋器,它的作用是解釋用戶輸入的命令和程序;
如果我們的命令或者應用程序不在命令行直接執行,而是通過一個程序文件來執行時,這個程序就稱為shell腳本。shell腳本里面通常內置了多條命令,有的還包含控制語句,比如if和
else的條件控制語句;這些內置在一個shell腳本中的命令通常是一次性執行完成,不會不停的返回信息給用戶,這種通過文件執行腳本的方式稱之為非交互方式;
我們可以在文本中輸入一系列的命令、控制語句和變量,這一切有機的結合起來就形成了功能強大的shell腳本;
(基本/擴展)正則表達式,用某種模式去匹配一類字符串的公式,它是由一串字符和元字符構成字符串。;
. 任意的一個字符;漢字等(除換行符以外)

*前面字符重復任意次;wang* (wan,wang,wangg,wanggg。。。),(wang)*(wang,wang...)
.*任意長度的任意字符串;
+前面字符重復一次以上;x{1,}; x xx xxx
{n,}至少n次(>=n)

{n}精確n次;\ 用於轉義字符;

{m,n}m次到n次
{,n}至多n次
?前面字符0次或1次,可有可無;
^行首;(脫字符號)

$行尾;

詞首 \< 或 \b (<,>,用於界定單詞的左邊界和右邊界)
詞尾 \> 或 \b
[]符號用於匹配方括號內出現的任意字符;[wang] 任意一個字符w a n g;\d 匹配一個數字,等價於[0-9]


“\d”是一種Perl兼容模式的表達式,又稱作 PCRE,要想使用這種模式的匹配符,需要加上-P參數
[^.]除了.的其它的任意一個字符
[:alpha:]
a|bxy a或bxy
(a|b)xy axy 或 bxy
(expr1) (expr2) \1 \2
cut
diff
patch -b
wc
sort
uniq
head
tail
tac;cat;
more;less;paste;netstat;
` (后引號、斜引號);如,a=`ls -l`;表示把ls -l作為命令來執行,執行的結果賦值給a;
vim ex模式下輸入 :%s/xyz/&er/g (xyz替換成xyzer,g表示一行里替換多個xyz,不加g 則只替換一個xyz) (&,表示前面搜索出來的字符)
vim 命令模式,插入模式(a,i,o),ex模式(底行模式,vim a.sh就可以操作);
grep -o;只要數字;
擴展正則表達式grap -E 或egrep
0-9 10-99 100-199 200-249 250-255
[0-9] [1-9][0-9] 1[0-9][0-9] 2[0-4][0-9] 25[0-5]
ifconfig |egrep -o "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"




上圖是字符串比較;


判斷.sh

創建用戶


seq(sequeue,序列),主要用來輸出序列化的東西;-s 使用指定字符串分割數字(默認\n)


paste命令用戶合並文件的行;它可以合並一個文件或多個文件的行;
-d 指定各個文件在合並時,使用的分隔符;
-s 順序的合並文件,每個文件中所有內容合並為一行;



wc;word count
10行 13個單詞(以空格區別)

ls |wc; wc --help;
wc -l /etc/passwd(查看多少行,查看多少個賬號)


cut取列;sort取列,然后進行排序;
sort -t: -k3 /etc/passwd(按照字符排序)
sort -t: -k3 -n /etc/passwd(按照數字升序排列)
sort -t: -k3 -nr /etc/passwd (根據passwd中第3列,按照數字倒序排列)

tr (translate)主要用於刪除文件中的控制字符,或進行字符轉換;
如下圖;將空格使用';'替代;

cut用來從標准輸入或文本文件中剪切列或域;-d指定不同列的分割符;-f 1剪切第1域/列;

sort以行為單位對文本進行排序;-n 根據字符串數值進行排序;-r 反向輸出排序結果;

head 可以將一段文本的開頭的一部分輸出到標准輸出;默認前10;-n25輸出前25行;








統計遠程主機登錄次數的前三個ip




grep;文本,行過濾工具;
