1.什麼是shelljava
2.系統提供了哪些種類的shell正則表達式
經過cat /etc/shells可查閱系統提供的shellshell
本文主要介紹/bin/bash,由於它兼容於sh,它是依據使用者需求而對sh進行了增強bash
1.什麼是變量函數
1.經過echo命令讀取工具
語法格式1: echo $變量名 oop
語法格式2: echo ${變量名}
測試
示例:spa
讀取登陸用戶名:echo $LOGNAME操作系統
讀取用戶home目錄:echo $HOME
讀取當前系統默認的shell:echo $SHELL
注意:當變量名後面連着其餘符號時,爲了不沒必要要的錯誤建議使用格式2
1.環境變量的查看
語法格式: env|more
設置環境變量使用set命令
1.經過關鍵字:export
語法格式1: export 變量名=變量值
語法格式2:變量名=變量值
export 變量名
1.變量與變量內容以一個等號"="鏈接,變量名=變量值
2.等號兩邊不能直接接空格符,如(變量名 = 變量值)這是錯誤的
3.變量名稱只能是英文字符、數字、下劃線組成,可是不能以數字開頭
4.變量內容如有空格符可以使用雙引號或者單引號將變量內容結合起來
|-雙引號中的特殊字符保有本來的特性
|-例如:var="lang is ${LANG}",則echo $var的結果爲lang is en_US.UTF-8
|-單引號中的特殊字符僅爲存文本(通常字符),就相似java中的String類型的數據
|-例如:var='lang is ${LANG}',則echo $var的結果爲lang is ${LANG}
5.可使用轉義字符"\"將特殊符號(如$、\、!等)變爲通常字符
6.若是變量的內容是由其餘命令提供的,須要使用$(命令)來獲取變量的值
|-示例
1.爲變量增長額外內容
示例:
2.取消變量的定義
語法格式: unset 變量名
示例:
注意:
若是取消系統的環境變量,須要修改/etc/profile文件,否則不生效
系統默認的變量一般變量名都爲大寫,自定義的變量建議使用小寫,方便區分
1.使用反引號(反引號爲tab鍵上方的按鍵)
語法格式: 變量名=·命令名· (使用反引號包住命令)
示例:
由示例看出,這種方式變量的值就爲命令獲取的值
2.使用圓括號
語法格式: 變量名=(命令)
示例:
由示例看出,此種方式變量的值就是命令自己
1.全局變量:
2.局部變量:
3.把一個命令定義成一個變量$(命令)或者·命令·
4.若變量和其餘字符組成新的變量就須要個變量加上大括號,不然容易出錯如${date}day
1.數據重定向的基本概念
1.數據重定向的命令及其對應的編號
數據重定向對應的編號
經常使用的組合命令及其含義
示例:將ls的輸出重定向到ls.log文件中
2.使用數據重定向的方式書寫內容到指定文件
語法格式: cat > filename << "EOF"
輸入此命令,此後全部的內容都會有">"提示輸入,直到輸入一個"EOF",纔會關閉輸入流
示例:
3.使用數據重定向測試執行程序
對程序進行測試,就是看看可否執行成功,無需顯示執行過程和信息
示例:
示例中,/dev/null,叫作"黑洞",把數據輸出到此設備中,不會被保存,而是被丟棄
2>&1:表示不管是錯誤的仍是正確的信息都輸出到/dev/null設備中
1.命令回傳值的基本概念
1.Linux系統中的短路與(&&)和短路或(||)
短路與和短路或的應用
示例:判斷/temp/test是否存在,存在則建立/temp/test/test.txt
1.管道命令的基本概念
2.grep命令
3.示例
將ls查詢到的信息傳遞給grep命令進行搜索匹配文件夾名包含"ba"的內容
1.find命令的功能
find命令可以在一個目錄中搜索文件,能夠指定匹配條件,好比按文件名,文件類型等
2.find命令及其經常使用選項
語法格式: find [目錄路徑] [選項] 參數
經常使用選項:
1.sed的基本概念
2.sed逐行處理文件,並將結果發送到屏幕的具體過程
3.sed命令的應用
語法格式: sed [選項] "[動做]" fileName
經常使用選項:
特殊選項:
示例:修改源文件,同時想要修改後的源文件的內容顯示在屏幕上
經常使用動做:
示例:sed "s/baiduhadoop/hadoop/g" demo.txt
注意:
想要修改源文件的內容,使用選項-i便可:sed -i "s/baiduhadoop/hadoop/g" demo.txt
若是向輸出到其餘文件裏:sed "s/baiduhadoop/hadoop/g" demo.txt > demo1.txt
示例:應用多條sed的動做進行文件內容的修改
方式1,經過-e選項:sed -e "s/h/H/g" -e "s/o/O/g" fileName
方式2,經過在引號中添加分號的形式:sed "s/h/H/g;s/o/O/g" fileName
1.sort命令的做用
2.sort命令及其選項
語法格式: sort [選項] 參數
經常使用選項:
3.示例
默認排序:
指定的四段進行排序:
1.cut命令的做用
cut命令在文件中負責剪切數據用的,可是數據必須是有規則的數據
2.cut命名及其經常使用選項
語法格式: cut [選項] [參數] fileName
經常使用選項:
示例:
示例:剪切每一行的第5個到第7個字節
示例:剪切每一行第6個字節以後的內容
示例:剪切每一行,第6個字節以前的內容
1.history命令的做用
該命令用於顯示歷史執行過的全部命令
2.歷史命令的一些執行命令
1.什麼是shell script
shell script就是以固定語法組織起來的存文本文件
能夠編譯這個文件,讓文件幫助咱們一次執行多條命令
能夠經過一些運算與邏輯判斷來達成較爲複雜的功能
2.shell script的注意事項
命令的執行是從上而下,從左到右執行的
命令、選項和參數間的多個空格會被忽略
空白行也被忽略掉,tab被當成空格
"#"後面的內容爲註釋,不會執行
若是讀取一個Enter符號,就會嘗試開始執行該行命令
1.直接執行
假設程序文件名是:/home/shell.sh(該文件必須是可讀可執行的權限(rx))
經過絕對路徑:運行/home/shell.sh
經過相對路徑:先cd到/home/,使用./shell.sh 執行
2.經過source執行
假設程序文件名是:/home/shell.sh(該文件必須是可讀可執行的權限(rx))
語法格式:source /home/shell.sh
3.經過sh執行
假設程序文件名是:/home/shell.sh(該文件必須是可讀可執行的權限(rx))
語法格式:sh /home/shell.sh
1.提示用戶輸入兩個數字,而後對這兩個數字進行相乘,給用戶返回結果
#!/bin/bash #告訴用戶本程序的功能,而且引導用戶進行內容的輸入 echo "您好,請輸入兩個數字,我將對這兩個數字進行乘法運行,給您返回結果!" #引導用戶輸入 read -p "請輸入第一個數字:" num1 read -p "請輸入第二個數字:" num2 #計算結果,並返回 mul=$(($num1*$num2)) echo "您輸入的兩個數字${num1}*${num2}的結果是${mul}"
代碼執行的結果:
以上腳本解析:
1.test命令及其選項
語法格式:test [選項] 參數
經常使用選項:
2.test判斷字符串
經常使用的字符串的判斷
3.編寫一個腳本,判斷文件時那種類型,具備哪些權限
#!/bin/bash #先給予提示 read -p "請輸入一個文件名,將對其判斷文件類型及其權限" fileName #是否輸入了文件名,若是爲空,進行提示,並提示腳本 test -z $fileName&&echo "您必須輸入一個文件名" && exit 1 #判斷文件/目錄是否存在?不存在則結束腳本 test !-e $fileName && exit 2 #判斷文件類型及其統計文件具備哪些權限 test -f $fileName && filetype="文件" test -d $fileName && filetype="目錄" test -r $fileName && fileperm="讀" test -w $fileName && fileperm="${fileperm}-寫" test -x $fileName && fileperm="${fileperm}-執行" #輸出文件類型和文件全部的權限 echo "您輸入${fileName}的類型是${filetype},它具有的權限是${fileperm}"
1.[]判斷符號的做用
[]符號比較字符串,裏邊可用的符號:
==:等於
!=:不等於
[]符號中的邏輯判斷:
-a:邏輯與
-o:邏輯或
[]符號比較數字,裏邊可用的符號:
2.注意點:
在使用[]判斷符的時候,必定要注意[]符號兩邊空格的使用,[]符號裏邊兩邊應保留一個空格
[]符號中不能使用:&&,||,>,<
6.2.3 shell script的參數
1.腳本參數的標識符
經常使用的腳本參數的標識符
2.編寫一個腳本,查看各個標識的含義
#!/bin/bash echo "the script name is==>$0"
echo "total parameter number is==>$#" [ "$#" -lt 2 ]&&echo "the number of parameter is lt 2"&&exit 1
echo "1st parameter==>$1"
echo "2nd parameter==>$2"
echo "your whole parameter is==$@" exit 0
代碼執行結果:
注意:此方式是腳本後面直接接參數傳遞給腳本,這些參數就被當作腳本的變量來使
3.編寫一個腳本,體現$@和$*的不一樣點
#/bin/bash for i in "$*";do
echo $i done
echo "============="
for i in "$@";do
echo $i done
代碼執行結果:
由以上結果可知:
$@和$*都是獲取全部的參數數據,可是$@獲取的每個參數是獨立的
$*獲取的全部參數變成了一個總體
1.shift的做用
shift是用於偏移腳本的參數的,一般是用於參與執行過程的參數的"刪除"
這裏的"刪除"不是真的刪除,而是將對應的參數標記,從而不去執行它
例如:執行命令ls -a -R -l -h -d
第一次執行的時候-a參數被執行,下一次執行ls的時候,-a參數再也不參加執行就須要將它偏移
即在程序中執行一次"shift"
2.編寫腳本,展現shift的用法
#!/bin/bash echo "total parameter number is==>$#"
echo "your whole parameter is==>$@" #shift one parameter shift
echo "total parameter number is==>$#"
echo "your whole parameter is==>$@" #shift three parameter shift 3
echo "total parameter number is==>$#"
echo "your whole parameter is==>$*
代碼執行結果:
1.if條件判斷語句語法格式
語法格式1:
if [ 條件判斷 ] then
//條件成立執行命令
fi
語法格式2:
if [ 條件判斷 ];then
//條件成立執行命令;
fi
2.編寫腳本,判斷兩個數的大小
將參數寫死在腳本中
#!/bin/bash #比較兩個數的大小 a=2 b=3
if [ $a -gt $b ] then eche "$a>$b"
fi
if[ $a -le $b ];
then
echo "$a<=$b"
fi
經過用戶輸入的值來判斷
#!/bin/bash read -p "請輸入兩個數,用於判斷他們的大小:" a b if[ $a -gt $b ];then
echo "$a>$b"
fi
if[ $a -le $b ];then
echo "$a<=$b"
fi
經過用戶傳參的方式來判斷
#!/bin/bash if[ $1 -gt $2 ];then
echo "$1>$2"
fi
if[ $1 -le $2 ];then
echo "$1<=$2"
fi
1.if else條件判斷語句語法格式
語法格式1:
if [ 條件1 ];then 條件1成立執行,指令集1 else 條件1不成執行指令集2; fi
語法格式2:
if [ 條件1 ];then 條件1成立,執行指令集1 elif [ 條件2 ];then 條件2成立,執行指令集2 else 條件都不成立,執行指令集3 fi
1.不定循環while循環的語法
語法格式1:
while [ condition ];do 命令 done
語法格式2:
while [ condition ] do 命令 done
1.for……do……done循環語法結構
語法格式:
for 變量名 in 變量取值列表 do 命令 done
2.for循環中,變量取值列表能夠多樣化,特殊的可使用命令的值來替代
1.腳本語法正確性的檢查
剛開始學腳本,常常會遇到語法問題,運行有錯誤的腳本有時候會對系統產生一些影響
能夠經過sh命令來檢查語法的正確性
語法格式:sh [選項]
2.注意點:
-n選項不執行script,僅僅是檢查語法的問題
-v選項在執行script以前,先將script的內容輸出到屏幕上
-x選項將使用到的script內容顯示到屏幕上