bash基礎特性整理以及shell編程的思路整理
在linux的學習中,目前就學習到第六課時半天的時候發現在bash基礎特性當中,使用不同的命令以及shell編程中,發現有很多的bash變量在不同的環境使用的方法都不一樣,下面就結合第一節課到第6節課的bash特性進行整理如下:
1,什么是bash:
bash是許多Linux平臺中內定的shell,bash腳本功能在處理自動循環或大的任務方面可以節省大量的時間
以CentOS6為例:查看當前系統中有多少個bash:
bash的分類:
以上圖可以看出在Linux中的bash可以大致可以分成2種,下面就詳細介紹一下生效劃分的bash與功能劃分的bash的意義:
生效劃分的bash:
功能劃分的bash:
bash中的變量的種類:
根據變量的生效范圍等標準:
本地變量:生效范圍為當前shell進程:對當前shell之外的其他shell進程,包括當前shell 的子shell不生效
環境變量:當前shell進程及其子進程
局部變量:生效范圍為當前shell進程中某代碼片段(通常指函數)
位置變量:$1,$2,…來表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數
特殊變量:$?,$0,$*,$@,$#
例1:history歷史命令查看:
history是否對其他用戶進行生效呢?以wostop用戶登錄之后輸入history命令:發現2個不同的用戶登錄使用history命令顯示的結果是不同的
按照bash所給的/etc/profile, /etc/porfile.d/*.sh ,~/.bashrc ,~/etc/bashrc,/etc/bash_profile查看發現 :在/etc/profile 下有關于histroy的配置變量:
由于不同用戶登錄使用的命令是不一樣的,就可以判定存儲的histroy的bash存放在個人的bash中:
上述解釋了bash中有個人個全局的區別:
本地變量:
變量賦值:name='value'
可以使用引用:
value:(1)可以是直接字串:name="username"
(2)變量引用:
name="$sername"
(3)命令引用:name=`COMMAND`,name=$(COMMAND)
變量引用:${name},$name
"":弱引用,其中的變量引用會被替換為變量值;
‘’:強引用,其中的變量引用不會被替換為變量值,而保持原字符串;
bash中的算術運算:
+ – * / %(取余數)**
實現算術運算:
(1)let var=算數表達式
(2)var=$[算術表達式]
(3)var=$(())
(4)var=$(expr args1 arg2 arg3…)
各個通配符已經在shell編程,正則表達式的使用法以及區別:
glob:bash中用于事先文件名"通配"
bash的快捷鍵:
Ctrl+l:清屏,相當于clear命令;
Ctrl+a:跳轉光標命令首部;
Ctrl+e:跳轉至命令尾部;
Ctrl+c:取消命令執行;
Ctrl+u:刪除命令行首至光標所在處的所有內容;
Ctrl+k:刪除光標所在處至命令行尾部的所有內容;
grep正則表達式:文本過濾工具(默認處于貪婪模式)
–color=auto:對匹配到的文本著色顯示:
-v:反向顯示:顯示不能夠被pattern匹配到的行;
-i:匹配時忽略字符的大小寫;
-o:僅顯示匹配到字符串;
-q:檢查匹配后不向屏幕輸出:靜默模式
-A:after,后#行:-B:before,前#行;
-C:context,前后各#行:
-E:使用擴展的正則表達式
-F:使用fegrp表達式
GREP中的字符匹配,這里和glob的字符匹配有所不同:
OK上述將grep與glob的相同且不同意義的字符做了對比:grep匹配次數的用法:
.*:任意長度的任意字符:
\?:匹配其前面的字符0次或1次,即前面的字符可有可無:
\+:匹配其前面的字符至少1次:
\{m\}:匹配前面的字符m次:
\{m,n\}:匹配前面的字符至少m次,至多n次:
\{0,n\}:匹配前面的字符至多n次:
\{m,\}:匹配前面的字符至少m次:
位置錨定:
^:行首錨定:例如^root
$:行尾錨定:例如:root$
^$:空白行:
^[[ :space: ]]*$:空格字符
\<或\b:詞首錨定:用于單詞模式的左側:\<root
\<或\b:詞尾錨定:用于單詞模式的左側
\<PATTERN\>:匹配整個單詞
分組:\(\):將一個或多個字符捆綁在一期,當作一個整理進行處理:
原創文章,作者:wostop,如若轉載,請注明出處:http://www.www58058.com/21302
寫的很好,排版還可以在漂亮一點,可以多畫點圖加深印象,加油