什麼是shell
shell就是我們常說的命令列程式,它是乙個作為使用者與linux系統間介面的程式,它允許使用者向作業系統輸入要執行的命令。在linux中安裝多個shell是可行的,一般系統有預設的shell,linux中預設的為bash檢視系統所有shell及當前起作用shell
[liangc@ip-10-30-20-114 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
檢視當前shell,通過shell變數檢視
[liangc@ip-10-30-20-114 ~]$ echo $shell
/bin/bash
如何編寫shell使用文字編輯工具,將命令組合到乙個檔案中即可,在linux中,副檔名無特別意義,它只是為了更清楚標識這個檔案而已,所以你的shell指令碼檔案可以無副檔名。但是一般都會加上.sh作標識vi first
敲入如下命令
#!/bin/sh
echo "hello world"
exit 0
以上是乙個簡單的shell指令碼
第一行#!是一種特殊注釋,後面的/bin/sh表示這個指令碼將使用此shell來解析執行,需使用絕對路徑
exit的使用確保指令碼返回乙個有意義的狀態碼,如果其它指令碼需要呼叫這個指令碼程式,那麼返回乙個有意義的狀態碼是很有必要的。但建議時,即使這個程式不會被其它程式呼叫,還是返回乙個狀態碼吧。一般用0表示成功。
執行shell
兩種執行方式1 呼叫shell,把指令碼名當成乙個引數
/bin/sh first
2 使用chmod賦予可執行許可權
chmd +x first
./first
shell語法變數,在shell裡,變數可以不先宣告,只是通過使用它們(比如賦初值時)來建立它們。所有變數被看作字串並以字串儲存,即使值為數字時也如此。linux區分大小寫,所以hello和hello是不同的哦。在變數面前加上「$"可訪問該變數。
hello="hello world"
echo $hello
echo "$hello"
echo '$hello'
echo \$hello
輸出hello world
$hello
$hello
注意,如果字串裡面包含空格,必須用引號把它們括起來。此外,等號兩邊不能有空格環境變數使用單引號和反斜線不會進行變數的替換
環境變數
說明$home
當前使用者家目錄
$path
以冒號分隔的用來搜尋命令的目錄列表
$0shell指令碼的名字
$#傳遞級指令碼的引數個數
$$shell指令碼的程序號,指令碼通常用它來生成乙個唯一的臨時檔案,如/tmp/tmpfile_$$
引數變數
引數變數
說明$1 ,$2....
指令碼程式的引數
$*在乙個變數中列出所有引數,各引數之間用環境變數ifs中第乙個字元分隔開
$@是$*的變體,它不使用ifs變數,即使ifs為空,引數也不會擠在一起
Linux 基礎學習篇筆記 Linux基礎知識
1.1根據書上寫的,原來linux的核心是被linus torvalds將unix核心刪減後改寫出來的呀。1.2kernel 核心,即控制硬體的東西。顯示影像的硬體時顯示卡和螢幕,連線internet的硬體組成時網絡卡,發出聲音的硬體時音效卡。控制這些硬體資源的工作狀態就是這個作業系統最底層的東西 ...
linux基礎 shell基礎程式設計
以檔案形式存放批量的linux命令集合,該檔案能被shell解釋執行,這種檔案就是shell指令碼程式。通常由一些linux命令,shell命令,注釋和控制語句構成 第一行 指定用哪個程式來編譯和執行指令碼 bin bush 或 bin sh注釋行 使用 號 變數名必須以字母或下劃線開頭,後面跟數字...
Linux系統基礎學習之shell及常用命令(二)
匹配 0 或多個字元 a b a與b之間可以有任意長度的任意字元,也可以乙個也沒有,如aabcb,axyzb,a012b,ab。匹配任意乙個字元 a?b a與b之間必須也只能有乙個字元,可以是任意字元,如aab,abb,acb,a0b。list 匹配 list 中的任意單一字元 a xyz b a與...