天天看點

shell學習筆記

擷取列用awk,cut。

擷取行用sed。

檢視某一行:

<code>sed</code> <code>-n </code><code>'1,1p'</code> <code>test</code><code>.txt</code>

檢視檔案a.txt的第190行到196行:

<code>sed</code> <code>-n </code><code>'190,196p'</code> <code>test</code><code>.txt</code>

前幾年學習shell留下來的,可惜的是不全了。

判斷網站目錄檔案或者linux系統重要檔案是否被篡改,被黑客攻擊。

首先記錄檔案原dm5

建立10個測試檔案

touch{1..10}.log

md5sum/tmp/* &gt;/home/darren/source.log  生成源檔案

md5sum –c /home/darren/source.log  檢查檔案是否被篡改。

腳本實作:

#!/bin/sh

[ ! –f /home/Darren/source.log ] &amp;&amp; md5sum/tmp/*&gt;source.log

md5sum -c /home/darren/source.log | grep -i FAILED &gt;error.log

if [cat error.log | wc –l –ge 1 ] ;then

 echo “cat error.log”

fi

---------------------------------------------------------------

#!/bin/sh

find /etc/ -type f –name “*” –exec md5sum {} &gt;/home/darren/source.log\;

echo –e “\n”避免互動的用法

-z

檢測字元串長度是否為0,為0傳回 true。

-n

檢測字元串長度是否為0,不為0傳回 true。

str

檢測字元串是否為空,不為空傳回 true

列印hosts ip位址對應的域名。

read  -p "please in putip address:" ip

[ -n "`grep "$ip" /etc/hosts`" ] &amp;&amp;echo "the ip address:`grep "$ip"

 /etc/hosts | awk '{print$2}'`"

black="\033[30m

red=\033[31m

green=\033[32m

yellow=\033[33m

blue=\033[34m

zi=\033[35m

tianlan=\033[36m

whit=\033[37m

res=\033[0m

列子:echo -e "\033[33m 黃色字 \033[0m"

輸入名字和顔色,輸出名字對應的顔色:            

red="\033[31m"

green="\033[32m"

yellow="\033[33m"

blue="\033[34m"

zi="\033[35m"

res="\033[0m"

if [ $#-ne 2 ];then

   echo "usg red|yellow|green|blue"

#read-p "please input name and color:" name color

case $2in

yellow)

echo -e"$yellow $1 $res"

;;

green)

echo -e"$green $1 $res"

*)

echo -e"$zi $1 $res"

esac

函數:

例一:

darren() {

echo “Iam linux engineer!”

}

darren

例二:定義一個函數庫,然後用另一個腳本執行函數庫。

vi /darren/scripts/fucktions.sh

#/bin/sh

------------------------------------------

. /darren/scripts/fucktions.sh

jobs檢視背景正在運作的程式。

fg 1 把背景運作的程式在CRT中執行,如果關閉CRT或者斷網,則程式執行失敗。

bg   放到背景執行。

生成随機數密碼的方式:

echo $RANDOM

$random| md5sum | cut -c 10-15

$(date+%N%t)

$random$(date+%N%t) | md5sum     #常用方法

opensslrand -base64 8

echotest:123456 | chpasswd

echo'123456'| passwd --stdin test

break、continue、exit

設定腳本開機啟動:chkconfig –list

腳本檔案開頭需要加上以下兩行,- 代表運作級别、85代表開機執行順序、15代表關機執行順序。

#chkconfig: - 85 15

# description: description for the service

把腳本名字複制到/etc/init.d/xxx

chmod755 /etc/init.d/xxx

chkconfig–add xxx

chkconfig–list | grep xxx

chkconfigxxx on 或者chkconfig –leve 35 xxx on

echo –n 不換行

\n 換行

echo –e 執行有特殊含義的指令。

鎖定檔案 chattr +i /etc/passwd

解鎖檔案 chattr –i /etc/passwd

數組:

darren=(12 3)      建立數組名

echo${#darren[@]} 檢視數組的長度,或echo {#darren[*]}

echo ${darren[0]}   取數組的第一個元素。

echo ${darren[1]}   取數組的第二個元素。 

echo ${darren[2]}   取數組的第三個元素。

echo ${darren[*]}   取整個數組的元素。

echo ${darren[@]}   取整個數組的元素。

給數組指派:

darren[0]=5把第一個元素指派為5

echo${darren[0]}

unset darren   删除整個數組。

unset darren[0]删除單個數組。

echo${darren[@]:3:2}  從3個元素開始取2個

echo ${darren[@]/3/5}把3換成5

echo ${darren[@]/oldboy/new}把oldboy換成new

Darren1=(${darren[@]/oldboy/new})改變數組使生效

定義數組的第二種方式:

darren=([1]=one[2]=two [3]=three)

定義數組的第三種方式:

darren[1]=adarren[2]=b darren[3]=c

工作中常用方法:

darren=($(ls /tmp))

echo${darren[@]}

數組的腳本:

darren=(

darren1

darren2

darren3

darren4

darren5

)

for((i=0 ;i&lt;${#darren[@]};i++))

do

echo $i${darren[$i]}

done

本文轉自 王家東哥 51CTO部落格,原文連結:http://blog.51cto.com/xiaodongge/1901342

繼續閱讀