- Shell概述
- 接收輸入的命令,是一個命令列直譯器,把接收到的命令轉為二進位制傳給核心,由核心呼叫硬體處理
- 解釋執行的指令碼語言,可以直接呼叫Linux系統命令,可以編寫一些程式,方便運維人員使用
- Shell的分類
- Bourne Shell (sh,ksh,Bash,psh,zsh) Bash是Linux標準Shell
- C Shell (csh,tcsh) 語法與C語言類似
- 檢視當前系統使用的Shell可以使用命令列:
echo $SHELL
- echo 輸出命令
echo [選項] [內容]
-e:支援反斜線控制的字元轉換
設定輸出字型的顏色 31m=紅色,32m=綠色,34m=藍色,0m=重置echo -e "\e[1;31m 我是紅色的字型 \e[0m"
設定背景顏色 41m=紅色,42m=綠色,43m=黃色,0m=重置echo -e "\e[1;42m 我的背景顏色是綠色 \e[0m"
- 寫一個指令碼
vi hello.sh
:用vim編輯器寫一個hello.sh檔案#!/bin/bash
: 位於首行,宣告我這個檔案是Linux的標準指令碼,即宣告使用Bash的命令直譯器(不可省略)#這是第一個shell指令碼
:#代表註釋echo -e "\e[1;31m 我是紅色的字型 \e[0m"
:wq
退出vim編輯器並儲存chmod 755 hello.sh
:修改檔案許可權./hello.sh
:執行當前目錄下的hello.sh指令碼
- 命令的別名
alias
:檢視系統中所有的命令別名alias cp='cp -i'
:此時執行cp
時相當於cp -i
(臨時生效,登出後則失效,永久生效需修改環境變數配置檔案)unalias
:刪除別名 - 命令生效順序 (先後依次排序如下)
- 絕對路徑或相對路徑執行的命令
- 執行別名
- 執行Bash內部命令
- 執行$PATH環境變數下定義的目錄裡的命令
- 常用快捷鍵
- ctrl+c:強制終止當前命令
- ctrl+z:把當前執行命令放入後臺
- ctrl+a:游標移動到當前命令列的行首
- ctrl+e:游標移動到當前命令列的行尾
- ctrl+u:從當前游標位置刪除命令列到行首
- ctrl+r:在歷史命令中搜尋
- ctrl+l:清屏相當於
clear
- history [選項] [歷史命令儲存檔案]
-c:清空歷史命令
-w:把快取中的歷史命令寫入到歷史命令儲存檔案中 預設為~/.bash_history - 歷史命令的呼叫
- 按上下箭頭
!!
:執行上一條命令!字串
:執行匹配最後一條以該字串開頭的命令
- 使用Tab鍵 進行命令和檔案目錄的補全,若當前匹配的有多個則再摁多一次,則會列出所有匹配的檔案或目錄
- 輸出重定向:把原來應該輸出到顯示器的內容,輸出到其他地方,一般輸入到檔案
- 檔案描述符
0:標準輸入
1:標準輸出
2:標準錯誤輸出 - 標準輸出重定向 只能儲存正確命令的執行的結果
命令 > 檔案:覆蓋的方式輸出到檔案
命令 >> 檔案:追加的方式輸出到檔案 - 標準錯誤輸出重定向 只能儲存錯誤命令的執行的結果
錯誤命令 2> 檔案:覆蓋的方式輸出到檔案
錯誤命令 2>> 檔案:追加的方式輸出到檔案
注意2>
之間沒有空格,否則會報錯 - 正確輸出和錯誤輸出同時儲存
命令 > 檔案 2>&1
命令 >> 檔案 2>&1
命令 &> 檔案
命令 &>> 檔案
命令 >> 檔案1 2>> 檔案2 &>/dev/null
:系統黑洞可以當成垃圾站,就是執行命令不想看到結果
- 檔案描述符
輸入重定向:wc [選項] [檔名]
選項
-c:統計位元組數
-w:統計單詞數
-l:統計行數- 例子:
執行wc
命令
輸入:asdf asdfg
再按ctrl+d
結束 wc < 檔案
或wc 檔案
:則是統計檔案wc << 字串
:當輸入相同字串時結束輸入,進行統計
- 例子:
管道符
命令1 | 命令2 : 命令1的正確輸出作為命令2的操作物件萬用字元
?:匹配一個任意字元
*:匹配任何內容,0個或多個任意字元
[]:匹配中括號中的任意一個字元,[ab] 則匹配到的是a或b
[ - ]:-代表的是一個範圍,[0-9]表示的就是匹配一個數字
[ ^ ]:匹配除了[]範圍中的一個字元,[^a-z]表示匹配一個不是小寫字母的字元- 其他特殊符號
''
在單引號中,會認為是字串""
在雙引號中,'$'被認為是呼叫變數,'`'被認為是引用命令,'\'被認為是轉義符$()
應用系統命令