天天看點

bash

bash的顔色顯示規則:

 ascii編碼對顔色進行設定:

 \033:相當于Ctrl鍵

 [:控制字元和顔色代碼之間的間隔字元

 0m:關閉顔色屬性指令;

 1m:加粗顯示文本字元;

 4m:為文本字元加下劃線辨別:

 5m:使文本字元閃爍

 7m: 将文本字元的背景色和前景色交換顯示

 8m: 将文本字元的背景色和前景色設定為相同的顔色

 30m-39m:設定文本字元的前景色;38m和39m暫時保留

 40m-49m:設定文本字元的背景色;48m和49m暫時保留

 echo -e "\033[1mhinihao\033[0m"

一個完整的程式,一般包括4類檔案:二進制檔案(可執行的檔案),頭和庫檔案,幫助檔案,配置檔案

bash-CLI(指令行接口)的一種,bash同樣屬于完整的應用程式,也有四類檔案

bash的配置檔案有三類:

 profile類:為互動式登入的shell程序實作功能初始化的配置檔案

 全局:對所有使用者都生效的配置檔案

 /etc/profile

 /etc/profile.d/*.sh

注意:在RHEL或Centos系列作業系統中,通常情況下,如果一個配置檔案内容很多,格式複雜,我們會将其切割成多個片段,将切割出來的片段統一的存放在“程式名稱.d”的目錄中,在這樣的目錄中所儲存的片段檔案,大多以統一的檔案名字尾進行指令

 使用者個人的配置檔案:僅僅隻是針對某個使用者有效地配置檔案

 ~/.bash_profile

 profile類配置檔案的作用:

 1.用于定義使用者的環境變量

 2.用于運作腳本或執行指令

bashrc類

 為非互動式登入的shell程序實作功能啟動配置的配置檔案

 全局:/etc/bashrc

 使用者個人:~/.bashrc

 bashrc類配置檔案作用

 1.用于定義本地變量

 2.用于定義指令的别名

 3.定義umask

注意:隻用超級使用者root可以修改全局類的配置檔案,普通使用者隻能修改其家目錄中的個人配置檔案

互動式登陸的shell程序,會按照順序加載下列檔案

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非互動式登入的shell程序,會按照順序加載下列配置檔案

~/.bashrc --> /etc/bashrc --> /etc/peofile.d/*.sh

logout類

 為互動式登入的shell程序提供終止及清理類功能的配置檔案

在這裡說一下shell的類型

 互動式登入的shell:

 1.直接通過某個終端輸入賬号和密碼後登入打開的shell程序

 2.使用su - USERNAME或su -l USERNAME執行切換登入打開的shell程序

 非互動式登陸的shell:

 1.在圖形界面下,通過菜單或右鍵菜單打開的終端的shell程序

 2.使用su USERNAME執行切換登入打開的shell程序

所有在指令行中執行的指令的操作,隻要沒涉及到檔案的修改,一般都隻是針對目前的shell生命周期有效,隻要shell程序結束,所有的設定均消失

配置檔案的作用:使得我們賴以生存的配置資訊可以長期有效,隻要不修改配置檔案中的内容,每一次打開shell都會使shell曾經的配置生效

讓配置檔案中新定義的配置能夠立即生效的方式:

  1.source:

  source /PATH/TO/SOME_CONF_FILES

  . /PATH/TO/SOME_CONF_FILES

  2.exec:

  exec /PATH/TO/SOME_CONF_FILES 

弱變量:

 1.無需事先定義,即可使用

 2.沒有變量資料類型的硬性要求,預設是字元型

bash中變量中存放的字元串處理方式:

 1.字元串切片

使用方法 先給變量指派 再用echo加上下面的指令 

 ${#VAR}: 傳回字元串類型的變量VAR的長度

 ${VAR:offset}:傳回字元串變量VAR第offset個字元後面的内容,不包括第offset個字元後面的内容,不包括第offset個字元;offset的取值範圍:0~字元串長度${#VAR}-1

 ${VAR:offset:number}:傳回字元串變量VAR中從第offset個字元後開始,長度為number的字元部分

 ${VAR: -length}:去字元串最右側的length個字元

 2.基于模式去字元串

 ${VAR:PATTERN}:自左而右,查找VAR變量所存儲的字元串中,第一次被PATTERN比對的字元,删除從字元串開始到PATTERN比對的字元之間的所有字元

 ${VAR##*PATTERN}:自左而右,查找VAR變量所存儲的字元串中,所有被PATTERN比對的字元,删除從字元串開始到最後一個PATTERN比對的字元之間的所有字元

 ${VAR%PATTERN*}:自右而左,查找VAR變量所存儲的字元串中,第一次被PATTERN比對的字元,删除從字元串結尾到PATTERN比對的字元之間的所有字元

 ${VAR%%PATTERN*}:自右而左,查找VAR變量所存儲的字元串中,所有被PATTERN比對的字元,删除從字元串結尾到最後一個PATTERN比對的字元之間的所有字元

 3.查找替換

 ${VAR/PATTERN/SUBSTRING}:将VAR變量中查找比對PATTERN的内容,将其第一個比對到的結果換成SUBSTRING

 ${VAR//PATTERN/SUBSTRING}:在VAR變量中查找比對PATTERN的内容,将所有比對到的結果更換成SUBSTRING

 ${VAR/#PATTERN/SUBSTRING}:在VAR變量中查找行首比對PATTERN的内容,将比對的結果更換成SUBSTRING

 ${VAR/%PATTERN/SUBSTRING}:在VAR變量中查找行尾比對PATTERN的内容,将比對的結果更換成SUBSTRING

 4.查找删除

 ${VAR/PATTERN}: 在VAR變量中查找比對PATTERN的内容,将其第一個比對到的結果删除

 ${VAR//PATTERN}: 在VAR變量中查找比對PATTERN的内容,将所有比對到的結果删除

 ${VAR/#PATTERN}:在VAR變量中查找行首比對PATTERN的内容,将其行首比對的結果删除

 ${VAR/%PATTERN}:在VAR變量中查找行首比對PATTERN的内容,将其行尾比對的結果删除

 5.字元的大小寫轉換

 ${VAR^^}:将VAR變量中的所有小寫字母轉換為大寫字母

 ${VAR,,}:将VAR變量中的所有大寫字母轉換為小寫字母 

 6.變量指派  這裡輸出的value還是value并不是value的值 要是輸出value所被賦予的值,要在value前面加$符号,這樣就會引用value被賦予的值了

 ${VAR:-value}:如果變量為空或未被設定,那麼直接傳回value的值,否則傳回變量VAR的值;

 ${VAR:+value}:如果變量VAR不為空,則傳回value

 ${VAR:=value}:如果變量VAR為空或未被設定,那麼直接傳回value的值,并且将value的值指派給變量VAR,否則傳回變量VAR的值

7.變量的間接引用

 如果第一個變量的值恰好是第二個變量的變量名,從第一個變量引用第二個變量的值的方法就稱為變量簡介變量引用也稱為間接變量引用

  VAR1=VAR2

  VAR2=value

 bash提供了兩種格式的間接變量引用方式:

 eval MYVAR=\$$VAR1 ==>\$VAR2

 MYVAR=$(!VAR1)

      本文轉自Vincent一馬 51CTO部落格,原文連結:http://blog.51cto.com/mazhenbo/1916682,如需轉載請自行聯系原作者