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

相关推荐

  • Vim编辑工具用法的总结

    描述:    Vim是一款强大的命令行界面的文本编辑器,是vi的高级版本,先说下学习它的原因:  1,所有的UNIX Like 系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在;  2,很多软件的编辑接口都会主动调用vi  3,vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设…

    Linux干货 2016-08-11
  • Lvs+keepalived+httpd+NFS搭建高可用

    自己捯饬的模型图 NAT模型图 注意事项:RealServer需要把网关指向Director,并且Director要打开转发功能命令如下:     echo "1" > /proc/sys/net/ipv4/ip_foreward DR模型图 注意事项:需要在RealServer配置…

    Linux干货 2016-10-25
  • 软件包管理之yum

    本节主要是对linux软件包管理中的yum的浅解 1、冒泡法对数组内数据排序 2、博客:        yum命令浅解    yum [options] [command] [package …]      …

    Linux干货 2016-08-25
  • Linux之进程和计划任务

    进程的概念     内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等     Process: 运行中的程序的一个副本,是被载入内存的一个指令集合进程ID(Process ID,PID)号码被用来标记各个进程    &nbs…

    Linux干货 2016-10-09
  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp [root@localhost tmp]# vim rc.sysin…

    Linux干货 2016-08-02
  • centos 7 修改sshd服务默认端口号

    由于最近sshd服务默认端口号22被匿名进行试探性的进行登入,为防止匿名用户再次进行试探性的登入,将sshd服务的默认端口号进行修改。 环境:centos 7.3  xshell 思路:先将sshd的被指文件进行修改,把sshd服务的默认端口号修改为所需要的端口号,然后重启sshd服务,发现重启报错。找其原因是应为selinux不允许自定义sshd…

    Linux干货 2017-04-06

评论列表(1条)

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

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