2007-02-28, 08:48 AM | #1 |
注册日期: 2007-01-19
帖子: 18
现金:34金币
资产:34金币
|
linux 学习笔记(系统管理篇)3
老师在讲shell中穿插讲了硬盘分区和格式化 磁盘的分区格式化 分区: fdisk -l 列出分区表 fdisk 磁盘而不是某分区 (/dev/had) command :p 看分区 n 新建分区 d 删除分区 q 不保存退出 w 保存退出 生成文件系统(格式化) mkfs (make file system) mkfs -t ext2 /dev/hda5 mkfs -t ext2 –j /dev/hda5 :格式化成ext3格式 挂接:mount /dev/hda5 shell 脚本本身就是程序,是用shell命令构成的,小规模、结构化、模块化、程序设计。 命令: echo 输出信息用 read 输入信息 read+ 变量名 sleep 休眠 sleep+ 秒数 在终端上算数表达式写法: echo $ ((1x2x3))这是整数运算不能带小数点。 / :除 % :余 shell脚本格式: 第一行必须是 #!/bin/sh 有三种结构 顺序结构 分支结构 循环结构 顺序结构 wait 命令 保证进程同步 等待一个子进程结束 多个并发就用多个wait 例如: #!/bin/sh echo “1” sleep 5& echo “3” echo “4” wait echo”5” 分支结构 if 判断 ; then T块 Else F块 fi 判断 test语句 test 表达式 = [表达式] 表达式进行文件判断 -f 文件名(检测该文件是否存在且为普通文件 -d 目录名 -r 可读 -w 可写 -x 可执行 这些例子由于年久失修(笔记上标注不完备,过后有忘了的地方)错误之处请多多包涵 例如: #!/bin/sh echo “file” read FileName if [-f $FileName]; then echo “yes” else echo “no” fi 字符串比较 相等 串A =串B 不等 串A!=串B -z 判断字符串是否为零 空为真 非空为假 数值比较: 大于 等于 小于 不等于 a > b $A –gt $B a≥b $A –ge $B a≤b $A –lt $B a=b $A –le $B a≠b $A –ne $B 逻辑比较: 条件A –a 条件B(与) 条件A-o 条件B (或) !条件 (非) 例如: #!/bin/sh read MARK < /proc/sys/net/ipv4/ip_forward echo $MARK if [ $MARK = “0” ]; then else echo “host” echo “GATEWAY” fi ‘ ‘ 反单引号: 如果反单引号后面有语句则将里面的语句运行完后将结果替换此处 例如: #!/bin/sh u=id –u if [$u = ‘0’] ; then echo “hello” else echo “permission denied” fi 再例如: #!/bin/sh echo “username” read userNAME MARK = ‘cat /etc/passwd | grep ‘$userNAME:’ 积极if [ -z $ MARE] ; then echo “NO” else echo “YES” fi 多分支结构 case 字符串 in 串1) 块1 ;; 串2) 块2 ;; . . . *) esac 例如: #!/bin/sh echo “command” read CMD case $CMD in start) /etc/rc.d/init.d/named start ;; stop) /etc/rc.d/init.d/named stop ;; estart) /etc/rc.d/init.d/named stop /etc/rc.d/init.d/named start ;; *) echo “usage : $0 {start|stop|restart} ;; esac *知识点: . 脚本 让shell不打开子进程,在当前shell进程中运行脚本 看脚本切忌一行一行的看,要一层一层的看,就像剥玉米 Shell脚本 循环 1)当形循环 2)条件循环 while 判断; do 循环体 done 例如: #!/bin/sh i = 0 while [ $i –lt $n] ; do j=0 while [ $j –lt $ (($i+1))] ; do echo “\*” j=$(($j+1)) done echo i=$(($i+1)) done 定时循环 00:00:00: 1970-01-01 utc 称之为unix元年 data +%s 是取从unix元年至少过了多少秒 date +%H:%M:%S 显示时分秒格式 例如: #!/bin/sh intime = ‘date +%S’ –le $ [ (intime+5)] ; do echo “.” ##echo后面加-n 输出就不回车了,横向输出 done 利用date命令可以方便的实现定时循环 shell风格的循环 for 循环 (枚举循环) 格式 for 变量名 in 值列表 ; do 循环体 done ##值列表:核心部分,一系列由空格分开的字符串 例如: #!/bin/sh for n in asd 4r3 56h er34 657 tr ger ; do echo $n done 要自动下载列表中的东西编shell的 #!/bin/sh cd /tmp/dl for url in cat /etc/urls ; do wget $url done >/etc/urls 补充知识: 参数传递 命令 参数1 参数2 ………… 例如: #!/bin/sh n=$1 i=0 while ($i-lt $n); do echo “xxxx” ii= $ (($$+1)) done $0 $0就是命令本身 最强的师资!最好的设备!我信赖:北大青鸟(五羊新城学校)网络工程师培训中心 |
|