bash 的基礎特性以下:git
1、命令的別名--alias 命令shell
用來定義和顯示命令的別名,unalias撤銷定義的別名;可是要注意如下幾點:編程
1.alias的效果僅限於當前shell的生命期;數組
2.若是修改.bashrc配置文件,其中保存的別名不會當即生效,只有在從新加載該文件的內容後,纔會生效且永久生效;bash
3.爲了可以保證設置的別名有效,一般兩種操做都要作;編程語言
2、命令歷史ide
shell進程會其會話中保存此前用戶提交執行過的命令,history是shell的內置命令函數
1.命令語法格式:spa
history [-c] [-d OFFSET] [n]命令行
history -anrw [FILENAME]
history -ps VALUE [VALUE...]
-c: 清空命令歷史;
-d offset(偏移量):刪除指定命令歷史,offset爲history顯示出來的命令數字
-r: 從文件讀取命令歷史至歷史列表中;
-w:把歷史列表中的命令追加至歷史文件中;
history #:顯示最近的#條命令;
重複使用命令緩衝區中的命令
●!#:再一次執行歷史列表中的第#條命令;
●!-#:執行倒數第幾條命令;
●!!:再一次執行上一條命令;
●!STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;
重複使用歷史命令的一部分:
●!$:表示最後一次命令中最後一個參數;
●ESC,. 最後一次命令中最後一個參數;
●Alt+. 真正終端上纔可使用此用法;
●!^: 第一個位置的參數
●!:NUM 表示最後一次命令中的第NUM個位置的參數;
●!SEQUENCE:NUM 表示第SE條命令的第NUM個參數;
●!STRING:^|$|*|NUM;
2.與歷史相關的bash變量
HISTSIZE:shell進程可保留的命令歷史的條數;
HISTFILE:持久保存命令歷史的文件,默認爲.bash_history
HISTFILESIZE:命令歷史文件的存儲歷史命令數量條數;
HISTCONTROL:控制命令歷史記錄的方式
ignoredups:忽略重複的命令;
ignorespace:忽略以空白字符開頭的命令;
ignoreboth:以上二者同時生效;
3、快捷鍵:
按鍵組合映射成bash能夠識別的命令;
Ctrl+a:跳轉至命令行行首
Ctrl+e:跳轉至命令行行尾
Ctrl+u:刪除行首至光標所在處之間的全部字符;
Ctrl+k:刪除光標所在處至行尾的全部字符;
Ctrl+l:清屏,至關於clear
4、命令補全機制:
% SHELL命令的執行過程:
1.SHELL會根據用戶鍵入「ENTER」來判斷用戶的輸入結束;
2.SHELL會將收集的命令信息,根據空白字符來分段:第一個分段被理解爲命令字段;
3.判斷第一個字段是內部或者外部命令:若是是內部命令,直接運行;若是是外部命令,經過PATH變量所指示的路徑信息,去查找相關的位置,以肯定是否存在同名文件,若是有就執行,不然報錯;
4.判斷選項以及參數是否正確;%
兩個方面的理解:
命令自己的字符串補全&&參數的補全;
使用TAB鍵能夠完成命令或者路徑的補全:
注意:若是給出的字符串不是惟一標識,則bash不予不全,再次TAB鍵,bash給出參考列表;若是參考列表中的內容過多,bash會詢問是否顯示該列表;
還能夠根據提供的參數路徑進行補全,若是參數沒有任何提示字符串信息,則默認從工做目錄查找;
5、shell 的命令行展開(用簡單的字符實現bash可以識別的複雜信息)
~:
~ bash會自動將其展開爲當前登陸用戶的家目錄;
~STR :bash會自動將其展開爲以STR爲用戶名的家目錄;
~+ :調用SHELL變量」PWD」的值;
~- : 調用SHELL變量」OLDPWD」
{}:在其中能夠填充一個以」,」分隔的路徑列表,bash會將其展開爲多個獨立的路徑;
例如:mkdir /{a,b}_{c,d} 建立了四個目錄:a_c,a_d, b_c, b_d。
6、命令的執行結果
1.bash經過狀態返回值來輸出結果:成功:0 失敗:1-255
0:命令執行成功;1,2,127: bash內置的狀態返回值;1表示小問題,2表示嚴重問題,127表示命令自己出現問題;3-126以及128-255:用戶自定義的狀態信息;
2.狀態返回值保存於bash的特殊變量:$?
3.引用命令的執行結果:$(COMMAND)或`COMMAND`
任何一個命令都有兩種執行結果:
其一:命令的正常輸出結果;
與用戶需求相關的返回內容
引用方法:
``:反向單引號—反引號;
$():標準的命令引用格式;
補充命令:
wc:統計一個文件的行數,字數以及字節數;
-c:只顯示字節數
-l:只顯示行數
-w:只顯示字數;
其二:命令的執行狀態返回值;
與命令執行成功與否相關的返回內容,保存在bash的一個特殊變量中:$?;
7、引用特性
‘ ’ :強引用,凡是被單引號引用的內容,bash一概將其視爲普通字符,即使其自己有特殊功能和做業也是如此,可是單引號自己是個例外;
「 」 :弱引用,被雙引號引用的內容,有些特殊的字符仍會保留其特殊含義,好比: $、\、」
8、轉義功能:
\:bash定義的轉義字符,只能使其後一個字符失去特殊含義;
9、Globbing,文件名通配,簡稱爲glob;
匹配模式:元字符(一組代替一個或多個字符的字符)
具備特殊意義的專用字符,能夠用來規定其前導字符在目標對象的出現模式
*:匹配任意長度的任意字符,包括空字符
?:匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
例如[abc]、[a-z]、[A-Z]、[a-zA-Z]、[A-Z]、[0-9]、[a-z0-9]
特殊格式:
[[:upper:]]:全部大寫字母
[[:lower:]]:全部小寫字母
[[:alpha:]]:全部字母
[[:digit:]]:全部數字
[[:alnum:]]:全部的字母和數字
[[:space:]]:全部空白字符
[[:punct:]]:全部標點符號
[^]: 匹配指定範圍外的任意單個字符
10、輸入輸出重定向;
在使用計算機時 實現某種功能的主體是:程序 (= 指令 + 數據;)
數據是指令操做的對象,在Linux體現就是文件;
能夠用於輸入的設備也是一種文件;
例如鍵盤設備,文件系統中的常規文件、網卡聲卡設備;
能夠用於輸出的設備:文件
顯示器,文件系統的常規文件,網卡聲卡…
每一種程序都有三種形式的數據流:
a).輸入數據流:爲程序獲取數據的數據流;默認的輸入數據流的來源是鍵盤;
b).輸出數據流:將程序所處理的數據結果展現給用戶的數據流;默認輸出數據流的終點 是顯示器;
c).錯誤數據流:將程序沒法處理或處理過程當中出現的問題的結果展現給用戶的數據流;默認錯誤數據流的終點是顯示器;
從鍵盤實現的輸入數據流成爲標準輸入;
到顯示器上的輸出數據流稱爲標準輸出;
到顯示器上的錯誤數據流稱爲標準錯誤輸出,簡稱標準錯誤;
文件描述符:File Descriptor,FD。
0:標準輸入,stdin
1:標準輸出,stdout
2:標準錯誤,stderr
IO重定向:採用非標準設備文件實現的IO操做;
簡單來講,
不是從鍵盤設備完成的數據流輸入,就能夠稱爲輸入重定向或者叫作重定向輸入;
不是到顯示器設備正確輸出數據流就被稱爲輸出重定向,或叫重定向輸出
輸出重定向:
>:覆蓋輸出重定向
set –C //開啓防誤覆蓋開關,此開關啓後,能夠用「>|」符號繼續覆蓋重定向;
set +C//關閉防誤覆蓋
>>:追加輸出重定向
錯誤重定向:
2>:覆蓋錯誤重定向
2>> :追加錯誤重定向
合併標準輸入和標準輸出的重定向
1).&>、&>>(並非全部bash都支持)
2).COMMAND >|>> /PATH/TO/SOMEFILE 2>&1
11、管道:
| 用來鏈接命令,注意最前的命令應該具有輸出數據流的功能;
12、bash變量
前面介紹到聲明是程序,簡單來講,程序 = 指令 + 數據;
指令引導硬件和數據操做行爲;
數據:就是文件系統中要進行管理的文件(存儲在存儲設備中的流式數據),而存儲在內存的數據就稱爲變量;
因此,變量就是一段連續的內存空間;一段內存空間被平面編址,分爲若干cell--8bit;假如咱們爲這一段內存空間取一個名,就稱爲變量名;在這段內存空間中所存儲的數據,就稱爲變量的值;
變量的賦值操做符:=
賦值方法:VARNAME=VALUE;
其中變量名VARNAME的命名規範以下:
1.開頭,只能以字母或_爲首字符,不能使用數字,後面能夠是任意字母數字下劃線;
2.大小寫嚴格區分
3.要見名知意
4.書寫規範:
1) 全大寫:FILES
2) 駝峯式:MyFiles
5.不能與已知變量重名;
根據不一樣的編程語言,變量能夠分爲強變量和弱變量兩類;
強變量:
必須在使用前進行聲明,並且要聲明變量的類型;
例如 255:
字符類型:3Bytes
整數型:1Byte
null
弱變量:
能夠隨時使用,隨時聲明,甚至能夠不聲明;不對變量類型作硬性要求;若是沒有指明變量類 型,統一按字符型對待;bash的變量即爲弱變量;
下面介紹一下bash中變量的種類:
全局變量(環境變量):做用範圍是整個shell進程,包括子shell;
本地變量:做用範圍僅是當前登陸的shell,不包含子shell
局部變量:做用範圍僅是當前程序段,通常用在函數;
特殊變量:
$?:展開爲最近一次執行命令的狀態返回值(退出狀態);
$#:位置參數的個數;
$*:從1開始展開爲位置參數,當使用雙引號引用展開的時候,它展開爲以特殊變 量「IFS」的第一個字符分隔的值;
$@:從1開始展開爲位置參數,當使用雙引號引用的時候,展開爲一個單獨的字符串;
$$:展開爲當前shell 的進程標識符;
$0:展開爲shell或者shell腳本的文件名;
變量的使用:
賦值:
撤銷變量:unset VARNAME
聲明環境變量:export VARNAME
命令 declare
-a:聲明索引數組(若是支持)
-A:聲明關聯數組
-i:聲明整型變量
-l:小寫字母
-u:聲明變量並將變量值中的字符轉換爲大寫字母;
-x:聲明變量並將其導出爲環境變量;
-r:聲明變量爲只讀變量(常量);只能進行第一次賦值;
聲明局部變量:local VARNAME=VALUE
注意:通常狀況下,聲明變量都是現作現用,並不須要修改配置文件;