一.shell指令碼定義
shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。實際上shell是乙個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。
shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的linux命令對作業系統發出相關指令的人機介面。 shell可以通過其條件語句和迴圈語句等,把一系列linux命令結合在一起,形成乙個相當於面向過程的程式,shell script,來實現一些較為複雜的功能。
總括,shell是linux命令集的概稱,是屬於命令列的人機介面。shell 是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。shell既是一種命令語言,又是一種程式語言。shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務。ken thompson的sh是第一種unix shell,windows explorer是乙個典型的圖形介面shell。shell 和shell script不是一回事,通常我們說的都是shell script。
由定義可知, shell相當於經過裝飾的命令列,和命令列一樣,都能操作linux。但是shell是面向過程的,相當於有了一定的邏輯和過程,而命令列只是單一的操作。
二.使用shell指令碼
1、建立字尾是sh檔案,用來啟動指令碼
命令:./檔名.sh 比如:./start.sh
注意:
(1)啟動linux指令碼時出現許可權不夠
輸入命令:chmod 777 ./指令碼名 比如:chmod 777 ./start.sh
(2)乙個規範的shell指令碼在第一行會指出由哪個程式(直譯器)來執行指令碼中的內容,這一行內容在linux bash的程式設計一般為:#!/bin/bash
2、變數
1)自定義變數
變數名=value 比如:
a="hello word"
echo $a
注意:(1)「=」賦值左右兩邊都不要有空格 (2)輸出結果時,$n傳遞給指令碼或者函式的引數,n表示第幾個引數
2)陣列
(1)遍歷陣列
for i in $a;
do echo $i // 列印元素
done
3、shell指令碼執行命令列
變數名=$(command) 比如:將命令列輸出的結果賦值給變數
a=$(ls)
echo $a
注意1:如果想執行多個命令列來達到要求,需要在單個命令列後面加上「;」,如下:
$(find . -name "lb3*" >> /home/lb3/11;find /home/lb3/11 -type f|xargs grep "2017")
注意2:執行cd命令時不起作用,解決方法,如下:
(1)用命令source ./指令碼名來執行指令碼;
(2)將路徑換成絕對路徑。
4、擷取內容
$
5、檔案操作
(1)將資料夾下的所有資料夾進行.tar.gz打包,並將所有資料夾刪除
命令:cd /mnt/udisk/l6t/2017/01
for x in `ls`;do tar -zcvf $x.tar.gz $x && rm -rf $x;done
(2)在資料夾下搜尋指定檔案,並將輸出結果寫入另乙個檔案中
命令:find . -name "關鍵字*" >> 指定目錄檔案
(3)建立指定目錄,並移動指定檔案到該目錄下
命令:mkdir -p 指定目錄;mv 指定檔案 指定目錄
Linux學習之shell指令碼
第一行 bin bash 標記指令碼的直譯器 指令碼 bin bash echo hello world 賦予執行許可權 chmod x test.sh 執行指令碼 test.sh 定義變數時不需要 符號 td date y m d 1.變數名和符號之間不能有空格 2.首個字元必須為字母 3.中間不...
linux之shell指令碼學習
1,linux的shell種類眾多。shell常見種類如bourne shell usr bin sh或 bin sh bourne again shell bin bash c shell usr bin csh k shell usr bin ksh shell for root sbin sh...
linux之shell指令碼學習(一)
bin bash echo hello your name longxiong echo your name echo for i in ls opt do echo done str 1234 echo unset str echo echo 執行的指令碼為 0 echo 第乙個引數 1 echo...