bash特性

bash的基礎特性之一:

         命令歷史:shell進程會其會話中保存此前用戶提交執行過的命令;git

                   ~]#history算法

                            定製history的功能,可經過環境白能量實現;shell

                                     HISTSIZE:shell進程可保留的命令歷史的條數編程

                                     HSITFILE:持久保存命令歷史的文件緩存

                                               .bash_historybash

                                     HISTFIELSIZE:命令歷史文件的大小;數據結構

                   命令用法:編程語言

                            history[-c] [-d 偏移量] [n]ide

                            history –anrw[文件名]函數

                            history –ps 參數 [參數…]

                           

                            -c:清空命令歷史;

                            -doffset:刪除指定命令歷史

                            -r:從文件讀取命令歷史之歷史列表中;

                            -w:把歷史列表中的命令追加至歷史文件中;

                            history#:顯示最近的#條命令;

調用命令歷史列表中的命令

                            !#:再一次執行歷史列表中的第#條命令;

                            !!:再一次執行上一條命令;

                            !STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;

                                     注意:命令的重複執行有時候須要依賴於冪等性;                           

                   調用上一條命令的最後一個參數:

                            快捷鍵:Esc, .

                            字符串:!$

                 控制命令歷史記錄的方式;

                            環境變量:HISTCONFTROL

                                     ignoredups:忽略重複的命令;

                                     ignorespace:忽略以空白字符開頭的命令;

                                     ignoreboth:以上二者同時生效;

                            修改變量的值:

                                     NAME=’VALUE’

Bash基礎特性之二:

 

                   命令補全:

                            shell程序在接收到用戶執行命令的請求,分析完成以後,最左側的字符串會被看成命令;

                            命令查找機制:

                                     查找內部命令;

                                     根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名;

 

                            給定的打頭字符串若是能唯一標識某命令程序文件,則直接補全;

                                                不能唯一標識某命令程序文件,再擊tab鍵一次,會給出列表;

 

                   路徑補全:

                            在給定的起始路徑下,以對應路徑下的打頭字串來逐一匹配起始路徑下的每一個文件:

                                     tab

                                               若是能唯一標識,則直接補全;

                                               不然,再一次tab,給出列表;

bash的基礎特性之三:命令行展開

                   ~:自動展開爲用戶的家目錄,或指定的用戶的家目錄;                         

                   {}:可承載一個以逗號分隔的路徑列表,並可以將其展開爲多個路徑;

                            例如:/tmp/{a,b}至關於 /tmp/a /tmp/b

bash的基礎特性之四:命令的執行狀態結果

 

                   命令執行的狀態結果:

                            bash經過狀態返回值來輸出此結果:

                                     成功:0

                                     失敗:1-255

 

                            命令執行完成以後,其狀態返回值保存於bash的特殊變量$?中;

 

                   命令正常執行時,有的還回有命令返回值:

                            根據命令及其功能不一樣,結果各不相同;

 

                   引用命令的執行結果:

                            $(COMMAND)

                            `COMMAND`

bash的基於特性之五:引用

                   強引用:''

                   弱引用:""

                   命令引用:``

bash基礎特性之六:快捷鍵

                   Ctrl+a:跳轉至命令行行首

                   Ctrl+e:跳轉至命令行行尾

 

                   Ctrl+u:刪除行首至光標所在處之間的全部字符;

                   Ctrl+k:刪除光標所在處至行尾的全部字符;

 

                   Ctrl+l:清屏,至關於clear

bash的基礎特性之七:

 

         globbing:文件名通配(總體文件名匹配,而非部分)

 

                   匹配模式:元字符

                            *:匹配任意長度的任意字符

                                     pa*,*pa*, *pa, *p*a*

                                               pa,paa, passwd

                            ?:匹配任意單個字符

                                     pa?,??pa, p?a, p?a?

                                               pa,paa, passwd

                            []:匹配指定範圍內的任意單個字符

                                     有幾種特殊格式:

                                               [a-z],[A-Z], [0-9], [a-z0-9]

                                               [[:upper:]]:全部大寫字母

                                               [[:lower:]]:全部小寫字母

                                               [[:alpha:]]:全部字母

                                               [[:digit:]]:全部數字

                                               [[:alnum:]]:全部的字母和數字

                                               [[:space:]]:全部空白字符

                                               [[:punct:]]:全部標點符號

 

                                               pa[0-9][0-9],2[0-9][0-9]

                            [^]:匹配指定範圍外的任意單個字符

                                     [^[:upper:]]

                                     [^0-9]

                                     [^[:alnum:]]

bash特性之:命令hash

                   緩存此前命令的查找結果:key-value

                            key:搜索鍵

                            value:值

 

                   hash命令:

                            hash:列出

                            hash-d COMMAND:刪除

                            hash-r:清空

 

    bash的特性之:變量

                   程序:指令+數據

                            指令:由程序文件提供;

                            數據:IO設備、文件、管道、變量

 

                   程序:算法+數據結構

 

                   變量名+指向的內存空間

 

                   變量賦值:name=value

                   變量類型:存儲格式、表示數據範圍、參與的運算

                            編程語言:

                                     強類型變量

                                     弱類型變量:

                                               bash把全部變量通通視做字符型;

                                               bash中的變量無需事先聲明;至關於,把聲明和賦值過程同時實現;

                                                        聲明:類型,變量名

                   變量替換:把變量名出現的位置替換爲其所指向的內存空間中數據;

                   變量引用:${var_name},$var_name

                   變量名:變量名只能包含數字、字母和下劃線,並且不能以數字開頭;

                            變量名:見名知義,命名機制遵循某種法則;不可以使用程序的保留字,例如if, else, then, while等等;

                                    

                   bash變量類型:

                            本地變量:做用域僅爲當前shell進程;

                            環境變量:做用域爲當前shell進程及其子進程;

                            局部變量:做用域僅爲某代碼片段(函數上下文)

 

                            位置參數變量:當執行腳本的shell進程傳遞的參數;

                            特殊變量:shell內置的有特殊功用的變量;

                                     $?

                                               0:成功

                                               1-255:失敗

 

                            本地變量:

                                     變量賦值:name=value

                                     變量引用:${name},$name

                                               "":變量名會替換爲其值;

                                               '':變量名不會替換爲其值;

                                     查看變量:set

                                     撤銷變量:unsetname

                                               注意:此處非變量引用;

 

                            環境變量:

                                     變量賦值:

                                               (1)export name=value

                                               (2)name=value

                                                   export name

                                               (3)declare -x name=value

                                               (4)name=value

                                                        declare-x name

                                     變量引用:${name},$name

 

                                     注意:bash內嵌了許多環境變量(一般爲全大寫字符),用於定義bash的工做環境

                                               PATH,HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROL, SHELL, HOME, UID, PWD, OLDPWD

 

                                     查看環境變量:export,declare -x, printenv, env

                                     撤銷環境變量:unsetname

 

                            只讀變量:

                                     (1)declare -r name

                                     (2)readonly name

 

                                     只讀變量沒法從新賦值,而且不支持撤銷;存活時間爲當前shell進程的生命週期,隨shell進程終止而終止;

bash特性之多命令執行:

                   ~]#COMMAND1; COMMAND2; COMMAND3; ...

 

                   邏輯運算:

                            運算數:真(true,yes, on, 1)

                                         (false, no, off, 0)

 

                            與:

                                     1&& 1 = 1

                                     1&& 0 = 0

                                     0&& 1 = 0

                                     0&& 0 = 0

                            或:

                                     1|| 1 = 1

                                     1|| 0 = 1

                                     0|| 1 = 1

                                     0|| 0 = 0

                            非:

                                     !1 = 0

                                     !0 = 1

 

                   短路法則:

                            ~]#COMMAND1 && COMMAND2

                                     COMMAND1爲「假」,則COMMAND2不會再執行;

                                     不然,COMMAND1爲「真」,則COMMAND2必須執行;

 

                            ~]#COMMAND1 || COMMAND2

                                     COMMAND1爲「真」,則COMMAND2不會再執行;

                                     不然,COMMAND1爲「假」,則COMMAND2必須執行;

 

                            示例:~]# id$username || useradd $username

相關文章
相關標籤/搜索