Linux Bash Shell练习

Linux Bash Shell练习

1、写一个脚本,完成以下功能:

假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干

显示所有以K开头的文件的文件名,并且给其附加一个stop字符串

显示所有以S开头的文件的文件名,并且给其附加一个start字符串

分别统计S开头和K开头的文件各有多少

#!/bin/bash
#
for i in $(ls /etc/rc.d/rc3.d/ | grep  "\<K");do
    echo $i.stop
    let sum1+=1
done

for j in $(ls /etc/rc.d/rc3.d/ | grep "\<S");do
    echo $j.start
    let sum2+=1
done

echo "There are $sum1 file names start with "K"."
echo "There are $sum2 file names start with "S"."

执行效果:

shell-2205.jpg

2、写一个脚本,完成以下功能:

脚本能接受用户名作为参数

计算这些用户的ID之和

#!/bin/bash
#
[ $# -eq 0 ] && echo "Please give one user name or more." && exit 1

for i in $*;do
    for j in $(id -u $i);do
        let sum+=$j
    done
done

echo "Sum:$sum."

运行效果:

shell-2237.jpg

 

3、写一个脚本:

传递一些目录给此脚本

逐个显示每个目录的所有一级文件或子目录的内容类型

统计一共有多少个目录;且一共显示了多少个文件的内容类型

#!/bin/bash
#
[ $# -eq 0 ] && echo "At least give one file path." && exit 1

for j in  $*/*;do
    if [ -b $j ];then
        echo "$j is block file."
        let sum1+=1
    elif [ -c $j ];then
        echo "$j is character file."
        let sum1+=1
    elif [ -d $j ];then
        echo "$j is a directory."
        let sum+=1
    elif [ -f $j ];then
        echo "$j is a common file."
        let sum1+=1
    elif [ -L $j ];then
        echo "$j is a symbolic link."
        let sum1+=1
    elif [ -p $j ];then
        echo "$j is a pipe file."
        let sum1+=1
    elif [ -S $j ];then
        echo "$j is a socket file."
        let sum1+=1
    else
        echo "$j is unknown file."
        let sum1+=1
    fi
done

let sum2=$sum+$sum1

echo "There are $sum directories."
echo "There are $sum2 files and directories."

运行效果:

shell-1439.jpg

 

4、写一个脚本

通过命令行传递一个参数给脚本,参数为用户名

如果用户的id号大于等于500,则显示此用户为普通用户

#!/bin/bash
#
[ $# -eq 0 ] && echo "At least one user name needed." && exit 1

for i in $*;do
    if ! id $i &>/dev/null ;then
        echo "No such user:$i" 
    elif [ $(id -u $i) -ge 500 ];then
        echo "$i is a common user."
    fi
done

运行效果:

shell-1629.jpg

5、写一个脚本

添加10用户user1-user10,密码同用户名

用户不存在时才添加,存在时则跳过

最后显示本次共添加了多少用户

 

#!/bin/bash
#
declare -i sum=0

for i in {1..10};do
    if id user$i &>/dev/null;then
        echo "User user$i is exist."
    else
        useradd user$i &>/dev/null
        echo "user$i" | passwd --stdin "user$i" &>/dev/null
        echo "User user$i add finished."
        let sum+=1
    fi
done 

echo "There are $sum users added."

shell-1707.jpg

原创文章,作者:N24_lantian,如若转载,请注明出处:http://www.178linux.com/63944

(1)
N24_lantianN24_lantian
上一篇 2016-12-17
下一篇 2016-12-17

相关推荐

  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 //使用who命令列出列出当明显登录的所有用户,使用cut命令取出用户名,使用sort命令去重即可// [root@localhost ~]# who | cut -d' ' -f1…

    Linux干货 2016-08-08
  • Linux keepalived高可用集群

                       Linux keepalived高可用集群 keepalived简介:    keepalived是为了高可用ipvs集群而设计的,主要用作realserver的健康状态检测,如果有一台web…

    系统运维 2016-11-18
  • LVS

    LVS概述 1.LVS:Linux Virtual Server全称叫做linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。四层路由器(交换),根据请求报文的目标IP和目标协议及端口将其调度转发至后端主机集群中的某台RealServer(真实服务器),根据调度算法来挑选RS; 主要有…

    Linux干货 2016-11-07
  • 计算机组成与Linux基础

    一 计算机组成 冯诺依曼体系 计算机处理数据和指令一律用二进制表示 指令和数据不加混合存储在同一存储器中 顺序执行程序每一条指令 计算机硬件由运算器、控制器、存储器、输入设备以及输出设备组成 计算机组成部分 CPU:含有指令集,对程序进行运算和判断并分为两个主要单元分别为算术逻辑单元和控制单元。其中算术逻辑单元主要负责程序运算与判断,控制单元负责协调组件与个…

    Linux干货 2017-07-30
  • 马哥教育网络班21期+第七周博客作业

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至datamydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 [root@ns1 ~]# m…

    Linux干货 2016-08-24

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 00:45

    赞,几个脚本完成的不错~能注意下整体风格会更好~~继续加油~