擷取列用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/* >/home/darren/source.log 生成源檔案
md5sum –c /home/darren/source.log 檢查檔案是否被篡改。
腳本實作:
#!/bin/sh
[ ! –f /home/Darren/source.log ] && md5sum/tmp/*>source.log
md5sum -c /home/darren/source.log | grep -i FAILED >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 {} >/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`" ] &&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<${#darren[@]};i++))
do
echo $i${darren[$i]}
done
本文轉自 王家東哥 51CTO部落格,原文連結:http://blog.51cto.com/xiaodongge/1901342