學習筆記(17)
2.seq 2 3 10(echo {2..10..3}) 3為步進值
3.for num in "/root/bin/*.sh"; do echo the filename is $num; done 支持通配符
4.seq -s + 100 |bc -s 指定連接符號為+
5.if cmd1 &> /dev/null; then if後面判斷接命令可以判斷命令的執行結果
6.腳本中使用wait,可以直接退出 { if ping -c1 -W1 .... fi ; } & done wait wait 單獨一行,補充
for i in {1..254}; do
{ if ping -c1 -W1 $net.$i &> /dev/null; then
echo $net.$i >> hostlist.txt
fi; } & & 表示把執行放到後臺
done
wait wait 不加的話需要輸入回車後才退出至命令提示符
7.let i++ 返回$? 為1 ,let ++i 返回$? 為 0 所以使用++i會更保險
8.n=10; for i in seq 1 $n
9.eval 可以先掃描後面是否有變量,若有可以替換成值,for i in `eval {1..$n}`; 沒有eval變量會有問題
1.colror=$[RANDOM%7+31] 隨機取顏色
11.openssl rand -base64 20 | tr -dc '[:alpha:]' |head -c 8
12.echo -e "\033[1;41m \033[0m\033[1;43m \033[0m" 打印背景顏色(象棋背景色)
13.while : ; do
echo task
sleep 420
done
while : 等價於 while true
14.kill(killall) -0 httpd 可以探測服務是否啟動成功 -0:表示信號探測,結合sleep 來指定多少秒探測
15.while read line; do ... done </path/to/file
while read -p "Input a number:" num; do echo $num ;sleep 1; done
df | while read disk;do
if $disk |grep "^/dev/sd" > /dev/null; then
usage=`echo $disk |sed -r 's@.* ([[:digit:]]+)%@\1@'`
...
fi
done
16.help for 可以查看for循環的使用方法,其他的都可以使用help 來查看幫助
17.for ((sum=0,i=1;i<=100;i++)); do
let sum+=i
done
echo sum=$sum
18.允許選擇的文本塊
v 面向字符
V 面向行
ctrl-v 面向塊
19.PS3="Please choose the menu(1-4):"
select menu in baoyu yanwo renshen jitang; do \
case $menu in
baoyu)
echo $menu price is 1000
break
;;
yanwo)
echo ...
break
;;
*)
esac
done
用戶輸入保存在$REPLY中
20.PS2 是多行重定向的提示符,PS1 是prompt 提示符, PS3是select 的提示符
PS3="Please choose a number:"
select num in `seq 3`; do
case $num in
1)
echo "Number 1"
;;
2)
echo "Number 2"
;;
3)
echo "Number 3"
;;
esac
done
21.kill -l 查看信號(trap -l)
22.trap 'echo press ctrl+c' int 可以使用2代替int信號
for ((i=0;i<10;i++)); do
echo $i
sleep 0.5
done
trap -p 打印自定義的-p
trap '' 2 忽略你的ctrl +c 操作
9信號不能被捕獲自定義 ,如 trap '' 9,定義後依舊可以使用kill -9 殺掉進程無效
23.壓縮文件是看後綴的,所以要先修改後綴才能解壓縮,/boot/initramfs... 內核文件要先改後綴,file 查看類型
cpio -tv < file(cpio文件類型)
cpio -idv
initramfs 是放輔助性的驅動模塊文件,模擬文件系統較模擬磁盤效率高 intrd(centos 5)
24./boot/grub/grub.conf 加載/boot文件系統的文件,要加載根文件系統使用initramfs,該文件正好在/boot下面
/文件系統需要驅動,而/驅動在 /lib下面
25.md5sum vmlinuz /boot/vmlinuz 比較hash值來判斷內容是否相同
26.vmlinuz文件是從光盤文件拷貝過去的,initramfs文件是系統安裝完之後生成的,使用mkinitrd來生成
#mkinitrd /boot/initramfs-`username -r`.img `uname -r`
chroot /mnt/sysimage 切換根目錄
再次執行 # mkinitrd /boot/initramfs-`username -r`.img `uname -r` 不切換根的話找不到mkinitrd 命令
sync
sync 同步到磁盤,以防萬一
實驗 破壞/boot/initramfs文件的修復方法
實驗 刪除/boot/vmlinuz文件的修復方法
刪除/boot所有的文件,不包括目錄,修復
rm -f /boot/*
學習筆記(17)