shell综合练习(一)

shell综合练习

1.打印九九乘法表

#!/bin/bash
for(( a=1; a<10; a++))
dofor(( b=1; b<=$a; b++))doecho -en "$a*$b=$(($a*$b))\t"doneecho -e  "\n"
done

注意在echo中如果要用到转义符号,那么echo就必须加上参数-e。

2.批量生成随机字符文件名;在/tmp目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加
固定字符串tmp

#!/bin/bash
for (( i=1; i<=10; i++ ))
do name=`uuidgen|tr '0-9-' 'a-z'|cut -c 1-10`touch /temp/$name\_temp.html
done

3.批量修改名称,后缀修改为大写
1)

#!/bin/bash
find  /temp  -type f -name "*.html" -exec rename '.html' '.HTML' {} \;

2)

#!/bin/bash
for i in /tmp/*.html
dovar=`echo $i | awk -F. '{print $1}' ` mv $i $var.HTML
done

4.批量创建10个系统帐号user01-user10并设置密码(密码为随机数,要求字符和数字等混合)

#!/bin/bash
n=1
for (( i=0; i<+10; i++))
do pw=`mkpasswd -l 9`useradd -s /sbin/nologin -r user$n#echo '$pw'echo '$pw' |passwd --stdin user$nn=`expr $n + 1`
done 

5.判断自己的网络里,当前在线的IP有多少
1)

#!/bin/bash
#
PING() {
if ping -c 1 -w 1 $1 &> /dev/null; thenreturn 0
elsereturn 1
fi
}
for I in {1..200}; do
PING 192.168.88.$Iif [ $? -eq 0 ]; thenecho "192.168.88.$I is up"elseecho "192.168.88.$I is down"fi
done >/root/file1
more /root/file1 |grep ".* up" |wc -l

2)

#!/bin/bash
netstat -t |grep ES|uniq -c|wc -l

6.计算1-100的和
1)

		#!/bin/bashfor (( i=1; i <=100; i++ ))dosum=$[ $sum + $i ]doneecho $sum

2)

#!/bin/bash
seq 100|awk 'BEGIN{sum=0}{sum+=$1}END{print 'sum='sum}'

7.把/root/目录下的所有目录 拷贝到/tmp/目录下

#!/bin/bash 
for i in `ls /root/`
doif [ -d $i ]thencp -r $i /tmp/fi
done

8.判断输入的IP是否正确(x.x.x.x)

程序如下:

#!/bin/bash
echo -n "请输入IP地址 : "
read ipip1=`echo $ip|cut -d . -f 1`
ip2=`echo $ip|cut -d . -f 2`
ip3=`echo $ip|cut -d . -f 3`
ip4=`echo $ip|cut -d . -f 4`a=`echo $ip|grep "\."`
if [[ -z "$ip1" ]];thenecho "ip error"exit 8
fiif [[ ! -z "$ip1" ]] && [ $ip1 -lt 255 ];thenif [[ ! -z "$ip2" ]] && [ $ip2 -lt 255 ] ;thenif [[ ! -z "$ip3" ]] && [ $ip3 -lt 255 ] ;thenif [[ ! -z "$ip4" ]] && [ $ip4 -lt 255 ] && [ $ip4 -ne 0 ] && [ $ip4 -ne 255 ];thenecho "ip ok"elseecho "ip error"fielseecho "ip error"fielseecho "ip error"fi
elseecho "ip error"
fi
~

9.生成1-50内取随机数

#!/bin/bash
echo $(($RANDOM%50+1 ))

10.每日生成一个文件,格式为2018-05-25-diskinfo.log, 并且把磁盘的使用情况写到到这个文件中

df -h > `date +%F-diskinfo.log`

11.http的access.log中访问量最多的5个ip

 more /var/log/httpd/access_log-20180527 | grep ^192 | awk '{print $1}' | sort -g | tail -5

12.可以查看进程的内存占用大小,计算一下所有进程所占用内存大小的和

ps -l | awk -F' ' '{sum=sum+$10}END{print sum}'

13.查看/var/log目录下的文件数

more /var/log/* | grep '^-' | wc -l

14.查看Linux系统每个ip的连接数

#!/bin/bash
netstat -ntpl |grep 'ESTBLISH' |wc -l   estblite 是显示连接的

15.shell下生成32位随机密码

	openssl rand -base64 33 |cut -c 1-32

16.简述Linux系统的开机启动顺序

    1、加载BIOS设置,即检查硬件设备(CPU CD-ROM 主板 内存 键盘 硬盘)2、加载MBR (主要加载GRUB分区)用户的自定义配置等3、a、在内存中释放kernel使用的file systemb、执行根文件系统中的进程 4、加载配置文件。init程序启动后,读取/etc/inintab文件,决定系统的启动级别5、加载内核模块 6、根据运行级别 ,系统运行0-6中的相应程序    来初始化和启动相应的服务7、启动init.d下的系统进程

17.如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找

   复制:yy (行数yy)    粘贴:p       删除:dd  (行数dd)  删除全部:先跳到最后一行 然后:1,.d    查找:\+字母

18.如何手动安装grub

 a、如果grub文件破坏开机启动时会进入grub命令行模式grub>insmod xfs  grub>set root=(hd0,1)grub>linux16 /vmlinuz-xxxxx root=/dev/mapper/centos-rootgrub>initrd16 /initramfs-.xxxxx.img   grub>boot   mv /root/grub2/grub.cfg.bak /boot/grub2/grub.cfg init 6b、 如果/boot/目录破坏了在开机时使用光盘启动进入救援模式(F2)df -Th  #查看当前的系统环境chroot /mnt/sysimge/   #修改系统环境df -Thmount /dev/sr0 /mnt #挂载光盘rpm -ivh /mnt/Packages/kernel-3.10.0-693.e17.x86_64.rpm --force  #安装内核ls /bootgrub2-install /dev/sda    #安装grubgrub2-mkconfig -o /boot/grub2/grub.cfg exitreboot  #重新启动系统

19.显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符

 more /etc/inittab | grep -E '^#[[:space:]]\+ ' 

20.history命令显示具体时间

export HISTTIMEFORMAT="%F "
然后再执行history,注意这只是临时的

21.打印3天前的日期

    date +%F -d '3 days ago' 打印三天前的日期或 date +%F --date='-3day'date +%F -d '3 days now' 打印三天后的日期

22.一个目录中有很多文件,最快速度查看到最近更新的文件,如何看?

  ls -lt 

23.如何过滤出目录中的所有一级目录(不包含子目录,即只能是一级目录)

   #!/bin/bashls -la $1 | grep '^d' | wc -l  


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部