1、Shell概述
1.1、Shell是一個指令解釋器,解釋使用者輸入的指令,讓Linux核心了解并執行使用者指令,同時将Linux核心執行的結果進行翻譯顯示通知給使用者。

作業系統體系結構.jpg
1.2、Shell分類
1、Bourne Shell,1979(sh,ksh,Bash,psh,zsh)
2、C Shell,Unix中使用的Shell(csh,tcsh)
3、查詢目前使用的Shell版本,通過查詢變量獲得
echo $SHELL
4、檢視支援的Shell版本
cat /etc/shells
5、Shell版本切換,直接輸入:版本名+enter 進入,輸入:exit 退回
2、腳本執行方式
2.1、echo輸出指令
echo [選項] [輸出内容]
選項:
-e 識别輸出内容中的轉義字元\b \t \x \e。。。。
2.2、hello word腳本,其中可以調用系統指令
vim hello.sh
#!/bin/bash
#The first program
echo -e "\e[1;34m hello word \e[0m"
執行方式
1、chmod 755 hello.sh (修改權限)+ ./hello.sh或者/home/hello.sh (執行)
2、bash hello.sh (直接執行)
3、Bash的基本功能
3.1、指令的別名
1、檢視已有別名 alias
2、定義別名
臨時生效:alias ls='ls --color=never'
永久生效:在用戶家目錄內的.bashrc檔案中添加別名定義語句
3、刪除別名 unalias 別名
3.2、指令生效順序
1、執行絕對路徑和相對路徑執行指令
2、執行別名
3、執行bash的內部指令
4、執行按照$PATH環境變量定義的目錄查找順序找到的第一個指令
3.3、快捷鍵
ctrl+c 強制終止
ctrl+l 清屏 clear
ctrl+u 删除光标位置到行首
ctrl+a 到行首
ctrl+e 到行尾
ctrl+z 将指令放到背景
ctrl+r 在曆史指令中搜尋
3.4、曆史指令
1、history [選項] [曆史指令儲存檔案,在家目錄下的.bash_history]
選項:
-c 清空曆史指令
-w 把緩沖中指令寫入儲存檔案\
2、預設保留1000條,可以通過/etc/profile中設定
3、!n重複執行第n條指令
4、!!重複執行上一條指令
5、!字元 重複執行上一次以字元開頭的指令
6、上下鍵傳回
3.5、輸出重定向
1、标準輸入輸出
|裝置~|裝置檔案名~ |檔案描述符|
|鍵盤~|/dev/stdin |0|
|顯示器|/dev/stdout|1|
|顯示器|/dev/stderr|2|
2、格式
指令>檔案 (以覆寫形式)
指令>>檔案 (以追加形式)
3、儲存報錯資訊
指令 2>檔案 (以覆寫形式)
指令 2>>檔案 (以追加形式)
4、正确輸出和錯誤輸出同時儲存
指令>檔案 2>&1
指令>>檔案 2>&1(***)
指令 &>檔案
指令 &>>檔案(*****)
指令>>檔案1 2>>檔案2(****)
3.6、輸入重定向
1、wc [選項] [檔案名] //統計輸入内容
選項:
-c 統計位元組數
-w 統計單詞數
-l 統計行
2、wc < 檔案名 ,統計檔案内容
3、wc<
3.7、管道符
1、多指令順序執行
cmd1;cmd2 順序執行,無論是否出錯
cmd1&&cmd2
cmd1||cmd2
指令1 && 指令2 || 指令3——ls && echo yes || echo no
2、管道符,多指令順序執行
指令1 | 指令2 //指令1的輸出結果作為指令2的操作對象
netstat -an | grep ESTABLISHED | wc -l
3.8、通配符,主要用于比對檔案名或者目錄,檔案内容一般采用正規表達式
?比對任意一個字元
*比對任意一個或多個字元
[]比對中括号内的任意一個字元
[-]比對中括号内的任意一個字元,-代表範圍[0-9]
[^]比對中括号内的任意一個字元,^代表邏輯非

bash中其他的特殊符号.jpg
3、reference