1、编写一个脚本,名为/root/bin/createscripts.sh ,当执行该脚本时,输入 createscripts.sh /path/newsh.sh 则会在指定路径生成脚本文件,并涵盖注释信息如下:
#!/bin/bash
# ------------------------------------------
# Filename:    hello.sh
# Revision:    1.0
# Date:        2020/01/01
# Author:      ty
# Email:       ty@gmail.com
# Website:     www.ty.com
# Description:
# ------------------------------------------
# Copyright:   2020ty
# License:     GPL

并自动打开该 文件,开始编辑,在编辑结束后,自动给该脚本加上执行权限。

方法一:

#!/bin/bash
#
A=`basename $1 |grep -o "\.sh$"`
#echo $A
if [ -n "$A" ];thenecho -e "#!/bin/bash \n#" >> $1echo  "#---------------------------------------" >> $1echo  "# Filename:    `basename $1`" >> $1echo  "# Revision:    1.0" >> $1echo  "# Date:        `date +"%F %T"`">> $1echo  "# Author:      `id -nu`" >> $1echo  "# Email:       sezina_f@163.com" >> $1echo  "# Description:" >> $1echo  "#---------------------------------------" >> $1echo  "# Copyright:   2020 tzx" >> $1echo  "# License:     GPL" >> $1echo  >> $1vim +13 $1chmod +x $1elseecho "Usage: Please end file with .sh."

方法二:

#!/bin/bash
touch  /app/root/bin$1
chmod +x /app/root/bin$1
echo "#!/bin/bash
# ---------------------------------------
# Filename:   $1
# Revision:   1.0
# Date:       $(date +%F)
# Author:     $(whoami)
# Email:      ty@163.com
# Website:    www.100.com
# Description:
# ---------------------------------------
# Copyright:
#License:
" >$1
vim $1
chmod +x $1

2、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
当前主机系统信息如下:
主机名: hostname
IPV4地址: ifconfig
操作系统版本: cat /etc/redhat-release
内核版本: uname -r
CPU型号:lscpu
内存型号: free -m  格式为:xxxx MB
硬盘大小: fdisk -l /dev/sda  格式为:xxx GB

#!/bin/bash# -------------------------------------------------echo "当前主机系统如下:"echo "主机名: $(hostname)"echo "IPV4地址: "  "$(ifconfig|grep "inet "|grep -o "\([0-9]\{1,3\}\.\)\{3\}[1-9]\{1,3\}")"echo "操作系统版本:" "$(cat /etc/redhat-release)"echo "内核版本:" "$(uname -r)"echo "CPU型号:" "$(lscpu|grep -i "model name")"echo "内存大小" $(free -hm|head -2|tr -s " "  |tail -1|cut -d" " -f2)echo "磁盘容量" $(fdisk -l /dev/sda|head -2|tail -1|cut -d " " -f3,4)

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

cp -a /etc/ /root/etc`date +%Y-%m-%d`

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

echo "当前硬盘分区中空间利用率最大的值:$( df |grep -o "[0-9]\{1,3\}%" |sort -rn |head -1)"

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

cat /var/log/httpd/access_log |cut -d" " -f1|sort -r

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

id1=$(cat /etc/passwd |cut -d: -f3 |head -$1 | tail -1)
id2=$(cat /etc/passwd |cut -d: -f3 |head -$2 | tail -1)
echo "$[$id1+$id2]"

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

space1=`cat $1 |grep "^[[:space:]]*$"|wc -l`
space2=`cat $2 |grep "^[[:space:]]*$"|wc -l`
echo $space1+$space2 |bc

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

etc=$[$(ls -l /etc/ |wc -l)-1]
var=$[$(ls -l /var/ |wc -l)-1]
usr=$[$(ls -l /usr/ |wc -l)-1]
echo $[$etc+$var+$usr]

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

#!/bin/bash
[ $# -eq 0 ] && echo "请输入一个合法的IPV4地址" && exit 1
ping -c1 -W1 $1 &> /dev/null  && echo "该IP地址可访问" || echo "该IP地址不可访问"

10、对以上对该脚本进行升级,可以判断ip地址的合法型,如果不合法,直接提示用户"IP地址不合法"并退出

a1=`echo $1|cut -d. -f1`
a2=`echo $1|cut -d. -f2`
a3=`echo $1|cut -d. -f3`
a4=`echo $1|cut -d. -f4`
[ $a1 -le 255 ] && [ $a2 -le 255 ] && [ $a3 -le 255 ] && [ $a4 -le 255 ] || echo "IP地址不合法" && exi
t 1
ping -c1 -W1 $1 &> /dev/null && echo "该IP可访问" || echo "该IP不可访问"

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

usagea=$(df |grep "^/.*sd" |egrep -o "[0-9]{1,3}%" |tr -d % |sort -n |tail -1)
usageb=$(df -i |grep "^/.*sd" |egrep -o "[0-9]{1,3}%" |tr -d % |sort -n |tail -1)
[ $usagea -ge 80 -o $usageb -ge 80 ] && wall warning || echo health

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

#!/bin/bash
#判断用户对指定的文件是否不可读写
[ ! -r $1 -a ! -w $1 ] && echo "该文件不可读写" 

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

#!/bin/bash
#判断用户对指定的文件是否不可读写[ ! -e $1 ] && echo 文件不存在 && exit 0
[ -f $1 -a $1{.sh$} ]  && chmod o+x $1 ||echo "非脚本文件"

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

uid=`cat /etc/passwd|cut -d: -f3`user=`egrep "^[[:alnum:]]+:x:[0-9]{4,5}.*bash$" /etc/passwd|cut -d: -f1`version=`cat /etc/redhat-release |cut -d" " -f4|cut -d"." -f1`[ $version -eq 6 ] && [ $uid -ge 500 ] &&
[ $version -eq 7 ] && [ $uid -ge 1000 ] && 

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

export PATH=$PATH:/usr/local/apache/bin

注意全局配置路径:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc

vim /etc/profile.d/env.sh
export PATH=/usr/local/apache/bin:$PATH
source /etc/profile.d/env.sh

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

vim /etc/profile.d/env.sh
echo -e '\033[31m hi,dangerous! \033[0m'

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

vim /root/bin/reset.sh#!/bin/bash# reset.shcat > /etc/profile.d/env.sh << EOFalias cdnet="cd /etc/sysconfig/network-scripts"alias editnet="vim /etc/sysconfig/network-scripts/ifcfg-ens33"export PATH=/app/bin:$PATHEOFcat > ~/.vimrc << EOFset nuEOF

先到这....

shell脚本基础日常练习相关推荐

  1. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  2. SHELL脚本 基础一

    SHELL脚本基础 基本都是干货,都是通过书和视频总结的一小部分,里面应该有一些错误: SHELL变量 1.变量:临时储存数据的,该数据是可以进行变化的数据 2.变量的使用:1.多次重复使用的数据,并 ...

  3. Shell 脚本基础学习 (四)

    现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...

  4. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  5. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  6. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  7. linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...

    Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...

  8. shell脚本基础 (一)

    shell脚本基础 (一) 如何编写shell脚本: shell脚本存放的路径举例:vi /root/first.sh 1.理清任务: 2.申明shell环境: 3.注释: 4.写粗糙的脚本: 5.完 ...

  9. 详细介绍Linux shell脚本基础学习(一)

    2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...

最新文章

  1. 模态框获取id一直不变,都是同一个id值
  2. 用html编写ASCII表,[html_css]ASCII编码表
  3. CString类的用法总结
  4. Spring泛型依赖注入
  5. NumPy 生成全0矩阵,全1矩阵,随机矩阵,求平均数,求方差的方法
  6. hotspot 垃圾收集器_HotSpot增量Java垃圾收集器
  7. 吃了一辈子大米,你还在相信水稻种水里是因为喜欢水?
  8. caffe,deeplab,对Interp(差值)层的理解
  9. Missing artifact com.sun tools.jar 1.5.0 system 解决方法
  10. 6. 添加权限管理模块
  11. word 文档 一次性设置多张图片大小
  12. python读取第一行设为字典_将csv读入字典,第一行成为名称
  13. CF1190E Tokitsukaze and Explosion 二分、贪心、倍增、ST表
  14. 生成验证码 大写、小写字母,数字 java
  15. 【DeepSORT系列之】Cosine Metric Learning训练与demo可视化
  16. 米哈游108薪年终奖,假的
  17. 扫雷• 规则: (1)随机产生 8*8 的雷分布图;• (2)用户“y”表示游戏,“q”退出游戏;• (3)让用户输入行列号,用键盘“m”标雷,“k”打开;• (4)打开区域为雷或者全部区
  18. Postgresql源码(60)事务系统总结
  19. 微信小程序: 计时功能
  20. 【ChatGPT案例】10大ChatGPT谷歌插件神器

热门文章

  1. 计算机科学前沿技术导论论文,计算机科学技术导论论文.doc
  2. 极客Go云监工 --- 开源前序
  3. CentOS 宝塔7.9.0 安装 onlyoffice
  4. 一层一层剥开背包问题
  5. 剥皮点焊机如何保养呢
  6. TED | 深度拖延症患者的自白(附视频演讲稿)
  7. 1121 Damn Single
  8. IHERB上待产包准备指南-妈妈篇
  9. 英勇的战士——斯巴达
  10. 组件绑定事件与源生事件