xshell編程小結

初步學完shell腳本編程,經過這篇博客對其小結一下python

shell定義:shell實際上是一個命令解釋器,它的做用是解釋用戶輸入的命令和程序shell

shell腳本:咱們能夠在文本中輸入一系列的命令、控制語句和變量,這一切有機的結合起來就造成了功能強大的shell腳本。編程

一.基礎語法

1.查看系統腳本解釋器

經常使用的是bash解釋器bash

2.使用bash解釋器執行腳本的三種方式:

bash xx.sh編輯器

sh xx.sh函數

./xx.sh(注意是否有權限,沒有經過chmod 755 xx.sh 或chmod u+x xx.sh 添加權限)工具

3.shell中的變量

系統變量

$HOME 家目錄字體

$PWD 當前目錄 spa

$SHELL 解釋器路徑命令行

$USER 用戶

自定義變量

變量名=變量值  注意等號兩邊沒有空格

撤銷變量 unset 變量名

靜態變量

readonly 變量名=變量值(declare -r 變量名=變量值) 

靜態變量不能撤銷,關機或運行完腳本自動失效

全局變量

變量名=變量值

export 變量名

特殊變量$

$n

n爲數字,$0表明該腳本名稱,$1-$9表明第一到第九個命令行參數,第十個及之後的參數須要用大括號包含,如${10}

$#

獲取全部輸入參數的個數

$@ 和$*

$@和$*都表示命令行中全部的參數,通常看來沒有區別,for循環打印時都是一個個打印,但當用雙引號分別將他們括起來,"$@"是分裂的,不是一個總體(for i in "$@"),而「$*」是一個總體

$?

最後一次執行命令的返回狀態,若是值爲0,證實命令執行正確,非0命令執行不正確

注意:函數中,函數的返回值只能有$?獲取,且返回值小於等於255。單獨比較大小時,結果也是由$?獲取

4.運算符

乘除加減

第一種方式:$((運算式))和$[運算式],運算符之間有沒有空格無所謂

第二種方式:`expr 變量1  +-*/% 變量2` 運算符之間有空格 ,要加反引號

條件判斷

[ condition ] 條件與兩端括號之間有空格

大小判斷

 -lt 小於

-le 小於等於

-ge 大於等於

-gt  大於

-eq  等於

-ne  不等於

文件類型判斷

-f  文件存在且是一個常規文件

-e 文件存在

-d 文件存在是一個目錄

文件權限

-r 有讀的權限

-w 有寫的權限

-x 有執行的權限

多條件判斷

&& 與

|| 或

!邏輯否

5.流程控制

if語句

if [ 條件判斷式 ];then

fi

if [ 條件判斷式 ]

then

fi

if [ 條件判斷式 ]

then

else

fi

if [ 條件判斷式 ]

then

elif [ 條件判斷式 ]  

then 

fi

case語句

case $變量名 in 

「值1」)

            程序

;;

「值2」)

            程序

;;

*)

            都不是

;;

esac

 

for 循環

for ((初始值;條件;;變量變化))

 do

    程序

done

for 變量 in 值1 值2 值3

do

    程序

done

while 循環

while  [ 條件判斷式 ]

do

程序

done

讀取控制檯輸入

read(選項)(參數) 變量

讀取輸入賦值給變量

-p  指示讀取值時的提示符

-t  指定讀取值時等待的時間

read至關於python中的input

read -t 7 -p 「enter your choice」 NAME

6.函數

系統函數

basename函數截取文件名稱

basename [string/pathname] 

basename [string/pathname]  [suffix]

basename 會只保存路徑的最後一項,只剩文件名

dirname 函數

dirname函數與basename做用相反,截取內容相反

獲取執行腳本的路徑

pw=$(cd `dirname $0`;pwd)

自定義函數

[function] funcname[()]      function ,()可寫可不寫

{

   程序

 [return xx]

}

返回值由$?獲取,返回值(0-255)

注意:必須在調用函數地方以前,先聲明函數

一個腳本使用另外一個腳本的函數

.  腳本名

函數名

二.shell工具

1.cut命令

cut 命令從文件的每一行剪切字節,字符等數據,並將符合的數據輸出

cut [選項參數] filename

默認分隔符是製表符

參數 -f 提取第幾列

        -d 分隔符 按照指定分割符分割列

2.sed

sed是一種流編輯器,它一次處理一行內容把當前處理的行存儲在臨時緩衝區中,稱爲模式空間,接着用sed 命令處理緩衝區中的內容,處理完成後,把緩衝區中的內容送往屏幕

接着處理下一行,這樣不斷重複,知道文件末尾,注意文件的內容沒有被改變,除非你使用重定向存儲輸出

sed  [選項參數]   命令 filename

選項參數

-e  有多個命令時使用

-n 只顯示處理過的行

命令參數

a 新增 

d 刪除

s 查找並替換

sed -n '1,/內容/'p 文件    顯示第一行到包含匹配內容的那一行

 

sed -n 'num'p  文件     顯示第num行

sed 「na  內容」 文件名                           在n行後加上內容

sed  "s/舊 內容/新內容/g" 文件名          替換,g全局替換,不然只換一個

sed -e "nd" -e  "s/舊內容/新內容/g"  文件名          刪掉第n行並替換內容

3.awk

awk是一個強大的文本分析工具,把文件逐行的讀入,以空格爲默認分隔符,將每行切開,切開的部分再進行分析處理。

命令格式:

awk [選項參數] 'pattern{action1} pattern {action2}.....' 文件名

pattern 表示awk在數據中查找的內容,就是匹配模式 (/內容/  是匹配格式)

action在找到匹配內容時所執行的一系列命令

在開始和結束地方加上新的內容

BEGIN 在全部數據讀取前執行,END在讀取全部數據後執行

awk的內置變量

FILENAME 文件名

NR 已讀的記錄數(執行到第幾行)

NF瀏覽記錄的域的個數(切割後,列的個數)

顯示文本空行行數與具體行號

 

 提取特定文本

統計文本有幾行

查找文件空行所在的行號

$0表明一行全部內容,$1-$9表明第一列到第九列

sort 工具

將文件進行排序,並將排序結果標準輸出

sort(選項)(參數)

-n 依照數值大小排序

-r 以相反順序排序

-t 設置排序使用的分割字符

-k 指定須要排序的列

參數:指定須要排序的文件

求一列的和

三.shell中一些重要命令

重定向   

>>追加

>寫入(覆蓋寫)

2> 重定向標準錯誤

2>>重定向標準錯誤

&>重定向標準輸出和標準錯誤

管道操做符號|

前面的內容交給後面處理

wc -l

判斷輸出內容有幾行

輸出命令echo

echo  內容    輸出一行默認換行

單獨echo 至關於空行

echo -e 內容    能夠轉義字符  (\n,\t)

echo -n 內容     不轉義字符

echo  注意事項:

echo 「內容」  與 echo '內容'區別

 雙引號能夠包含變量,但單引號不能解析變量

反引號能夠解析命令

設置字體顏色

echo -e 「\033[x;ym 內容 \033[0m」

x 字體顏色 30~37

y 背景顏色 40~47

head

輸出文件前10行

 find

find 搜索區域 -name  文件名     以名字查詢文件(模糊查詢用*)

find 搜索區域 -perm   權限        根據權限查詢

find  搜索區域 -user    用戶        根據使用者查詢

find  搜索區域   -type  文件類型(d,f)   根據文件類型查找

find  搜索區域   -size    文件大小     根據文件大小查詢(+大於,-小於,c字節,k,M)

find  搜索區域   -mtime   時間          根據修改時間查找(+超過多少天,-在幾天內)

 shell正則

grep 「匹配內容」  文件名

grep -c ‘匹配內容’ 文件

grep -n  ‘匹配內容’ 文件

grep -i "匹配內容" 文件   忽略大小寫

grep -v 「內容xx」 文件  不包含內容xx的行(除去特定行)

grep -E 「^xx」/"xx$"   以xx開始和以xx結束(-E表明使用正則)

grep -E ".+xx.+"  內容xx 在行中間

grep -E "^$" 文件   匹配空行

grep  -E 「(xx)+」 文件 匹配屢次出現一次或屢次xx的行

grep  -E 「(xx){num}」  文件  匹配連續出現num次的xx行

uniq命令

uniq -c 文件  打印緊挨着的重複行次數與內容(重複但隔着的不打印)

uniq -d 文件 只打印重複的行

split

split -n 被分割文件  保存文件                   每n行分割,保存到文件中

查看 是否安裝服務

rpm -qa | grep  服務名

查看服務是否正常

nc -w num   ip   端口名        有正常的顯示,服務正常

製做菜單

cat   <<eof

內容

eof

cat <<eof 至關於echo,能一次輸出多行字符串,包括變量

相關文章
相關標籤/搜索