1,在 vim 中设置 tab 缩进为 4 个字符
vim /etc/vimrc
set tabstop=4
2,复制 / etc/rc.d/init.d/functions 文件至 / tmp 目录,替换 / tmp/functions 文件中的 / etc/sysconfig/init 为 / var/log
:%s,/etc/sysconfig/init,/var/log,g
3,删除 / tmp/functions 文件中所有以 #开头,且#后面至少有一个空白字符的行的行首的# 号
%s@^#\([[:space:]]\+.*\)@\1@g
4,编写脚本 / root/bin/systeminfo.sh, 显示当前主机系统信息,包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型号,内存大小,硬盘大小
主机名 hostname
IP ifconfig
系统版本 cat /etc/redhat-release
内核版本 uname -r
CPU 型号 cat /proc/cpuinfo
内存大小 cat /proc/meminfo 或 free -m
硬盘大小 fdisk -l
#!/bin/bash
echo 主机名 "$(hostname)"
ipddr=$(ifconfig ens33 |grep broad |tr -s" "|cut -d" "-f3)
echo ip 地址 "$ipddr"
version1=$(cat /etc/redhat-release)
echo 系统版本 "$version1"
version2=$(uname -r)
echo 内核版本 "$version2"
cpu=$(cat /proc/cpuinfo |egrep"model name"|uniq |cut -d: -f2)
echo cpu 型号 "$cpu"
mem=$(echo $[$(cat /proc/meminfo |egrep MemTotal |tr -s" ":|cut -d: -f2)/1024])
echo 内存大小 "$mem MB"
sda=$(fdisk -l |egrep"Disk /"|cut -d, -f1 |cut -d: -f2|cut -d" "-f2,3)
echo 硬盘大小 "$sda"
5,编写脚本 / root/bin/backup.sh,可实现将 / etc / 目录备份到 / root/etcYYYY-mm-dd 中
date +%F 以年 - 月 - 日显示日期
#!/bin/bash
#备份 / etc / 到 / root/etcYYYY-mm-dd 中
cp -r /etc/ /root/etc$(date +%F)
6,编写脚本 / root/bin/disk.sh, 显示当前硬盘分区中空间利用率最大的值
#!/bin/bash
max=$(df |grep"/dev/sd"|tr -s" "":"|cut -d ":" -f5|egrep -o "[[:digit:]]*"|sort -nr|head -n1)
echo "当前硬盘分区中空间利用率最大的值为: $max"
7,编写脚本 / root/bin/links.sh, 显示正连接本主机的每个远程主机的 IPv4 地址和连接数,并按连接数从大到小排序
netstat -tan | tr -s """:"|cut -d":"-f6|uniq -c|sort -nr |egrep"\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"|grep -v 0.0.0.0
netstat -tan |grep ESTABLISHED |tr -s " " : |cut -d: -f6 |sort -nr |uniq -c
8,编写脚本 / root/bin/sumid.sh,计算 / etc/passwd 文件中的第 10 个用户和第 20 用户的 ID 之和
#!/bin/bash
A=$(cat /etc/passwd |head -n 10 |tail -1 |cut -d: -f3)
B=$(cat /etc/passwd |head -n 20 |tail -1 |cut -d: -f3)
echo "$[$A+$B]"
9,编写脚本 / root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
#!/bin/bash
path_a=$1
path_b=$2
file1_space_num=$(cat $path_a|egrep -c"^[[:blank:]]*$")
file2_space_num=$(cat $path_b|egrep -c"^[[:blank:]]*$")
echo sum_num=$[$file1_space_num+$file2_space_num]
10,编写脚本 / root/bin/sumfile.sh, 统计 / etc, /var, /usr 目录中共有多少个一级子目录和文件
#!/bin/bash
u1=$(ls /etc |wc -l)
u2=$(ls /var |wc -l)
u3=$(ls /usr |wc -l)
echo $[$u1+$u2+$u3]
11:写一个生成脚本的脚本,/root/bin/createsh.sh 当执行如 / root/bin/createsh.sh test.sh 时,会自动在 / root/bin 下新建一个名为 test.sh 的新文件,该文件会自动给上执行权限,同时自动在文件头加上 shabang 及注释信息,注释信息如下:
#!/bin/bash
# ------------------------------------------
# Filename: test.sh(此处会根据文件名自动更换)
# Revision: 1.0
# Date: 2017-01-22(此处会自动变换为当前日期)
# Author: Nanyibo
# Email: nanyibo@gmail.com
# ------------------------------------------
# Copyright: 2017 nanyibo
# License: GPL
之后,自动使用 vim 打开,等待用户开始编写脚本正文.
#!/bin/bash
touch /root/bin/$1
chmod +x /root/bin/$1
echo "#!/bin/bash
# ------------------------------------------
# Filename: $1
# Revision: 1.0
# Date: $(date +%F)
# Author: xiaoyu
# Email: 851812316@qq.com
# ------------------------------------------
# Copyright: 2018 xiaoyu
# License: GPL" > /root/bin/$1
vim /root/bin/$1
习题整理
来源: http://www.bubuko.com/infodetail-2473648.html