2 shell的基本功能
2.2 shell命令
2.3 shell函式
1.1 什麼是bash
bash是乙個用於gnu作業系統的shell,也就是命令直譯器。
1.2 什麼是shell
shell是乙個能執行各種命令的巨集處理器。
unix shell不僅是乙個命令直譯器,還是一種程式語言。
shell會讀取輸入並將之分解為乙個個單詞和運算子,並使用引用規則來決定每個單詞和字元的不同含義。然後shell會把這些解析為命令和其他結構,去除一些特定單詞的特殊含義,對另外一些進行擴充套件,根據需要進行重定向,執行指定的命令,等待其退出狀態,並讓這個狀態能用於後續檢查或處理。
2.1 shell操作
1.讀取命令
2.根據引用規則對命令做展開,同時進行別名擴充套件
3.將符號解析為簡單或者複雜命令
4.進行各種shell擴充套件
5.進行必要的重定向,並將其從命令引數列表中去掉
6.執行得到的命令
7.(可選)等待命令結束並收集其退出狀態
2.1.1 引用
引用在 shell 中用以去除某些字元或單詞的特殊含義。
可以用來禁止對特殊字元的特殊處理,使得保留字不再被認為是保留字,或者禁止引數擴充套件。
三種引用機制:轉義字元、單引用、雙引用
2.1.2 轉義字元
字元描述
\a警告(響鈴)
\b退格刪除
\e轉義字元(不屬於ansi c)
\f走紙換頁
\n新行
\r換行
\t(水平)製表符
\v垂直製表符
\ \反斜槓
\ 』單引號
\nn由八進位制數nnn(一到三個數字)代表的乙個八位字元
\xhh
由十六進製制數hh(一到兩個數字)代表的乙個八位字元
\cx乙個控制字元ctrl-x
2.1.3 單引用
2.1…4 雙引用
2.2 shell命令
2.2.1 簡單命令
乙個簡單的shell命令,包括命令本身、加一些引數,用空格分隔。
2.2.2 管道
控制字元| 或者 |&
1.格式
[ time [-p] ] [!]命令一[[|或者|&]]命令二...]
|&是2>&1 | 的簡寫形式
2.2.3 命令佇列
命令佇列由乙個或者管道通過運算子 ;、&、&&、||連線而成,最後還可以由 ; 、&或者換行符結束
&&和||具有同樣的優先順序,;和&也是。
與佇列
命令一 && 命令二
或佇列
命令一 || 命令二
2.2.4 復合命令
bash提供了迴圈結構、條件結構、以及將命令分組並將之整體執行的機制。
1.迴圈結構
until 測試命令; do 命令塊; done
while 測試命令; do 命令塊; done
for 變數 [in 單詞 ]; do 命令塊; done
for((表示式一;表示式二;表示式三));do命令塊;done
2.條件結構
if 測試命令一 ;then
命令快一;
[elif 測試命令二 ;then
命令快二;]
[else
其他命令塊;]
fi
case 單詞 in
[ [(] 模式一 [| 模式二] ...)
命令塊;;]
......
...esac
每個分句都以";;"、";&"、";;&" 結束
;;結尾:匹配第乙個模式後就不會再匹配其他模式
;& 結尾:有其他分句就繼續執行
;;& 結尾:有其他分句就檢查其模式,模式為真就繼續執行
select 名稱 [in 單詞表 ...];do 命令塊;done
((算術表示式))
等於 let 「表示式」
[[條件表示式]]
3.命令組合
(表示式)
{表示式;}
2.3 shell函式
賦值語句可以作為內部命令 alias、declare、typeset、export、readonly、local的引數
2.3.1 位置引數
由除了單個0以外的乙個或多個數字表示的引數
2.3.2 特殊引數
這些引數只能使用不能賦值
*從1開始的引數 「$ *」 ="$1c$2c"
@從1開始的引數 「$ @」="$1c""$2c"…
-連字元
!後台執行的命令
_ 下劃線
Bash4 0中文文件解讀三
3.2 bash的內部命令 內部命令是由shell自身提供的。3.1 波恩shell的內部命令 逗號 除了擴充套件引數和執行重定向不做任何操作,返回狀態是零。點號 讀取命令 和source等價 break 從for,while,until,select迴圈中退出 cd切換工作目錄 continue ...
AspEmail 5 0 中文文件
文件已經更新。目錄如下 第一章 概述 介紹aspemail 的一般特性,系統要求和安裝過程 第二章 入門 介紹傳送簡單文字和 html 超文字格式電子郵件 第三章 附件 介紹如何傳送帶附件的電子郵件。同時也介紹了 aspupload 與aspemail 聯合使用的方法 第四章 內嵌影象 介紹如何在傳...
Julia 1 0 中文文件
歡迎來到julia 1.0的文件。請閱讀發布部落格文章,了解該語言的一般概述以及自julia v0.6以來的許多更改。請注意,0.7版本與1.0一起發布,以提供1.0版本之前的軟體包和 的公升級路徑。0.7和1.0之間的唯一區別是刪除了棄用警告。有關自0.6以來的所有更改的完整列表,請參閱版本0.7...