1.Shell
要了解bash之前,我們首先要知道shell是什么。維基百科中對shell的定義如下:
In computing, a shell is a user interface for access to an operating system's services. In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer's role and particular operation. It is named a shell because it is a layer around the operating system kernel
也就是說,shell其實就是將內核中的系統調用函數包裝起來,讓我們更方便的與內核進行交流。
2.Bash
在Linux中可以使用的shell有很多很多,例如bash,csh,zsh等等。這些shell區別就像汽車有許多品牌一樣,其制作方式和內部處理過程不同,但都是為了相同的功能。而Bash是所有shell中比較常用的一個。
2.1Bash的十大特性
2.1.1 命令行展開
例如,我們需要在a文件夾下創建b文件夾和c文件夾,我們有兩種辦法:
mkdir a/b a/c
但是這種辦法有一個問題在于如果路徑名太長,那么我們創建起來很花費時間。所以這里我們可以使用命令行展開“{}”來完成:
mkdir a/{b,c}
2.1.2 別名
在bash中,我們可以對任何一個命令取別名。我們使用alias命令可以查看系統中存在的別名,如下圖:
使用unalias可以取消命令別名
2.1.3 歷史
命令history會展示一定數量使用過的命令,如下圖所示:
!#(#代表數字) 可以使用histroy中的第#個命令
2.1.4 文件名通配符
2.1.5 常用快捷鍵
2.1.6 命令補全
2.1.7 路徑補全
2.1.8 命令hash
bash會將你使用過的命令路徑記錄在一個哈希表中,使用命令hash可以進行查看,如圖所示。
這樣的好處在于當你第二次使用此命令時,不用在對$PATH進行一次變量,而直接搜索內存中的哈希表,極大的提高了命令的查找速度。
hash使用方法:
1) hash 查看hash表
2) hash -d command 刪除表中的command命令
3) hash -r 清空hash表
2.1.9 變量
2.1.9.1 特點
1)所有變量都被當做字符型變量
2)在使用變量時無需聲明變量類型
2.1.9.2分類
按變量作用于的不同,我們將變量分為三類:
1)本地變量:只能作用于當前shell進程
2)環境變量:可以作用于當前shell進程和其子進程
3)局部變量:作用于代碼片段的變量
2.1.10 多命令執行
在bash中,我們有兩種方式將多個命令一起執行:
1)command1;command2;command3.....
2)使用邏輯連接符:
command1 && command2
值得注意的是,此種方式執行命令時,只有command1執行成功后才會執行command2
command1 || command2
值得注意的是,此種方式執行命令時,只有command1執行失敗后才會執行command2