shell 基础练习题

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

#!/bin/bash
echo -e "\e[1;35mThis computer is hosted by: \e[0m"
hostname
echo " "
echo -e "\e[1;35mMy ip addr is:\e[0m"
ifconfig | sed -n '2p'|sed -r 's@.*inet (.*) net.*@\1@'
echo " "
#
echo -e "\e[1;35mMy OS version is:\e[0m"
cat /etc/centos-release echo " " echo -e "\e[1;35mMy CPU is: \e[0m"
lscpu echo " " echo -e "\e[1;35mMy memory is: \e[0m"
free -m
echo " " echo -e "\e[1;35mMy disk is: \e[0m"
lsblk | sed -n '2p'

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

#!/bin/bash
echo -e "\e[1;35mbackup ing.... \e[0m"
sleep 3
cp -av /etc/ /data/etc`date +%F`
echo -e "\e[1;35mbackup is done \e[0m"

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

#!/bin/bash
echo -e "\e[1;35mThe biggst ratio of your disk's space is \e[0m"
df | grep "/dev/sd" | tr -s " " % | cut -d% -f5 | sort -nr | head -n1

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序



5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和


#!/bin/bash
[ $# -ne 2 ] && echo "Args num must be 2" && exit
[[ ! "$1" =~ ^[0-9]+$ ]] && echo "$1 is not digital" && exit
[[ ! "$2" =~ ^[0-9]+$ ]] && echo "$2 is not digital" && exit
UID1="`head -n$1 /etc/passwd | cut -d: -f3 |tail -n1`"
UID2="`head -n$2 /etc/passwd | cut -d: -f3 |tail -n1`"
sumid=$[$UID1+$UID2]
echo $sumid

6、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

#!/bin/bash
echo -e "\e[1;35mThe files's blankline is : \e[0m"
grep ^$ $1 $2 | wc -l

7、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

#!/bin/bash
echo -e "\e[1;35mThe number of /etc /var /usr is : \e[0m"
a="`find /etc -maxdepth 1 |wc -l`"
b="`find /usr -maxdepth 1 |wc -l`"
c="`find /var -maxdepth 1 |wc -l`"
sum=$[a+b+c]
echo $sum


8、编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

#!/bin/bash
[ $# -lt 1 ] && echo -e "\e[1;33m至少应该有一个参数 \e[0m" && exit
[ $# -ge 1 ] && grep ^$ $1 $2 $3 |wc -l

9、编写脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

10、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满

#!/bin/bash
a="`df | grep "/dev/sd.*" | tr -s " " % |cut -d% -f5 | sort -nr | head -n1`"
b="`df -i | grep "/dev/sd.*" | tr -s " " % |cut -d% -f5 | sort -nr | head -n1`"
[ $a -ge 80 ] && echo -e "\e[1;35mYour disk space is warmming!! \e[0m"
[ $b -ge 80 ] && echo -e "\e[1;35mYour inode numbers is warmming!! \e[0m"


11、编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写

#!/bin/bash
[ -r $1 -a -w $1 ] || echo -e "\e[1;35m您对此文件无读写权限 \e[0m"

12、编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件

#!/bin/bash
[[ $1 =~ \.sh$ ]] && [[ -f $1 ]] || { echo -e "\e[1;35m该文件非脚本文件 \e[0m" ; exit; }
chmod +x $1
echo -e "\e[1;35m该文件已添加X权限 \e[0m"

13、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统

nologin.sh

#!/bin/bash
echo -e "\e[1;35mYOU WILL OPEN NOLOGIN,PLEASE WAIT \e[0m"
[ -a /etc/nologin ] && exit || touch /etc/nologin
echo -e "\e[1;35mdone!!!\e[0m"

login.sh

#!/bin/bash
[ -e /etc/nologin ] && `rm -f /etc/nologin` || echo -e "\e[1;35mnow,you can login \e[0m"


14、让所有用户的PATH环境变量的值多出一个路径,例如:/usr/local/apache/bin

在 /etc/profile.d/env. sh 文件,重新添加PATH变量。

PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\]"
PATH=/usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

15、用户root登录时,将命令指示符变成红色,并自动启用如下别名:

rm=‘rm –i’

cdnet=‘cd /etc/sysconfig/network-scripts/’

editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’

editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或 ifcfg-ens33 ’ (如果系统是CentOS7)

命令符红色:

在/etc/profile.d/env.sh中定义
PS1="\[\e[1;31m22\][\u@\h \W]\\$\[\e[0m\]"

定义别名:

在 ~/.bashrc中将放入以下命令:
alias rm=‘rm –i’
alias cdnet=‘cd /etc/sysconfig/network-scripts/’
alias editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’
alias editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或 ifcfg-ens33 ’

3、任意用户登录系统时,显示红色字体的警示提醒信息“Hi,dangerous !”

在/etc/profile.d/env.sh 中添加

echo -e "\e[1;31mHi,dangerous ! \e[0m"

16、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

17、编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等

vim  /root/reset.sh

shell基础练习题的更多相关文章

  1. shell基础练习题讲解

    1037774765 克隆 1.创建一个用户redhat,其ID号为1001,基本组为like(组ID为2002),附近租为linux. groupadd -g 2002 likegroupadd l ...

  2. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  3. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  4. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  5. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  6. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  7. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  8. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  9. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

随机推荐

  1. Linux下面MariaDB 管理命令基础使用

    MariaDB 是 MySQL 的一个分,由于某些原因,使之取代了Mysql成为了 RHEL/CentOS 7 的默认数据库.针对数据库的操作我们经常做的操作就是增删查改,接下来就介绍下 MariaD ...

  2. [转帖]SSH命令总结

    SSH命令总结 ssh-keygen ssh-copy-id 等命令自己用过 但是知道的不系统 也知道 转发命令 但是也只是知道一点点... ttps://www.cnblogs.com/chenfa ...

  3. oracle group by rollup实现小计、合计

    SQL合计汇总实现数据N+1条显示: 注意group by rollup((ename, job, empno))!!! select decode(grouping(ename) + groupin ...

  4. shiro三连斩之概念

    1, 什么是Shiro? Shiro是一个安全框架,用于解决系统的认证和授权问题,同时提供了会话管理,数据加密,与WEB集成,缓存等机制. Authentication:身份认证/登录,验证用户是不是 ...

  5. python 链接mysql 事务

    import mysql.connector try: con = mysql.connector.connect( host="localhost", port="33 ...

  6. js apply与call的用法与区别

    apply和call function Person(c, d) { return this.a + this.b + c + d } var  o = {a: 1, b: 2} Person.cal ...

  7. 81. Search in Rotated Sorted Array II (JAVA)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  8. shell脚本之删除内容相同的重复文件

    #!/bin/bash #!当前文件夹下,删除内容相同的重复文件,只保留重复文件中的一个. ls -lS --time-style=long-iso | awk 'BEGIN{ getline;get ...

  9. WPF C# 字符串读写文件

    WPF C# 字符串读写文件 public class 字符串读写文件 { /// <summary> /// Encoding.Unicode.GetString 如果使用Encodin ...

  10. 2019-2020-1 20199319《Linux内核原理与分析》第三周作业

    操作系统是如何工作的 基础知识 1.计算机的三个法宝:存储程序计算机.函数调用堆栈机制.中断. 2.堆栈的具体作用:记录函数调用框架.传输函数参数.保存返回值的地址.提供函数内部局部变量的存储空间. ...