一、什麼是 Shell?
狹義的shell指的是指令列方面的軟體,包括基本的Linux操作視窗Bash等,廣義的shell則包括圖形介面的軟體,因為圖形介面其實也可以操作各種驅動程式來呼叫核心進行工作。
系統合法的 shell 皆寫在 /etc/shells 檔案中。
二、Bash Shell 的基本操作技巧
1、查看前一次登入執行過的命令:vim ~/.bash_history
2、指令與檔案補全功能(Tab鍵)
tab 接在一串指令的第一個字後面,則為指令補全
tab 接在一串指令的第二個字後面,則為檔案補全
3、指令別名設定功能:alias
#alias lm='ls -al'
4、程式化腳本(shell scripts)
5、萬用字元
#6、換行輸入\ +[enter]
7、從遊標向前或向後刪除字串[crtl]+u / [crtl] +k
8、從遊標移動到整個指令串的最前面/最後面[crtl] +a / [crtl]+e
#9、使用env 和export 可觀察環境變數;set 可以觀察目前bash 環境下的所有變數
11、編碼問題:LANG 或 是 LC_ALL設定; locale 列出目前語種。
12、查看別名的原始程式碼: type -a 別名指令
13、列出所有的按鍵與按鍵內容:stty -a
14、設定按鍵功能:stty erase ^h : 設定crtl + h 向後刪除字元
15、取得核心版本:echo $(uname -r)
#三、Shell Script
概念:Shell script 是利用shell 的功能所寫的程序,這個程式是使用純文字檔。將一些 shell 的語法與指令寫在裡面,搭配正規表示式、管線指令與資料流重導向等功能,以達到我們的處理指令。
個人理解:其實Shell script 是window 中的批次指令,它將shell 指令、再加上一點腳本的語法 寫出來的程式。 shell script 用在系統管理上面是很好的工具,但是用在處理大量數值運算上,就不夠好了,因為shell scripts的速度較慢,且使用的CPU資源較多,造成主機資源的分配不良。
變數:
變數類型:bash變數型別預設為字串,可以是整數或陣列型,沒有浮點型,所以沒有小數,1/3 結果是0.
變數宣告:預設為字串,可以直接宣告為變數名稱=變數內容(x=123 )這樣,如果要宣告為陣列或整數可以:
#升級成環境變數:export PATH-
取消變數:unset a 陣列定義:var[1]="123" var[2]="456" var[3]=" 789" ``或()的意義:『或()裡面的指令先被執行,作為外部的輸入訊息 變數$$:出現的數字就是你的PID號碼 變數?:上一個錯誤指令的錯誤碼,如果沒有錯誤就為0-
#
變數互動
:read -p "請輸入你的名字:" -t 30 name (-p表示提示世界,-t 表示30秒的輸入時間)
變數內容的擴展
:PATH="$PATH":/home/bin
變數內容的刪除
:echo ${path#/*:} 這句話的意思是從/開始到:之間刪除掉最短的字元
變數內容的替換
:
執行
:
1、直接絕對路徑和相對路徑執行,執行者必須要有腳本的執行權限。 2、全域變數的話可以用bash shell.sh 或sh shell.sh來執行
source、 sh script 的執行方式差異?
sh script 或bash script 都會使用一個新的bash環境來執行腳本中的指令,當子程式完成後,子程式完成後,在子程式內的各個變數或動作將會結束而不會傳回父程式中
source script 會在父親程式中執行,因此各項動作都會在原本的bash 內生效
流程控制(順序)
:shell scripts 依照從上到下、從左到右的順序執行。
流程控制(條件)
############################################################# for 迴圈########################### ############函數:### #### ############## 注意點:和傳統語言不同,函數必須定義在腳本最前面,以便程式執行的時候可以認識函數。函數形參也是用${1}、${2}、${3} 來傳參,也就是說函數內的${1}/${2}/${3} 辨認的調函數時傳進去的實參。而非 執行腳本傳遞時的參數###### ### ######
以上是Linux--Bash 和 Shell講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!