1、vim快捷方式

2、脚本实现创建脚本,自动生成事先定义的文件

3、脚本中实现修改文本文件。

4、/etc/rc.d/rc3.d目录下分别有多个以K开头和S开头的文件;分别读取每个文件, 以K开头的文件输出为以文件名加stop,以S开头的文件输出为以文件名加start.而输出:

"K34filename stop"

"S66filename start"

1、两个循环

2、单个循环

5、写一个脚本探测172.16.250.0/24网络内的在线状态

6、颜色函数库统一调用


ping命令

ping [OPTIONS...] IP-ADDR
    -c #  ## ping的次数
    -w  #    ##  ping命令执行的时间
    -W #  ## 每Ping一次IP-ADDR的超时时间

使用示例

root@izpo45bh60h6bsz ~]# ping -c 1 -w 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.050 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.050/0.050/0.050/0.000 ms
[root@izpo45bh60h6bsz ~]#


1、vim快捷方式

   如 果 你 要 重 复 键 入 一 个 短 语 或 一 个 句 子 , 也 有 一 种 快 捷 的 方法。Vim有一种记录宏的机制。

   你键入"qa"开始把一段宏记录入寄存器变量'a'中。按下来你可以象平常一样键入你要的操作,只是这些操作都会被Vim记录进它命名为'a'的宏中,再次再下"q"键,就结束了宏'a'的录制。

   当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。

   使用宏你可以重复多个不同的操作。而不仅仅是插入文本。如果你要进行某种重复的操作,记着要用这一招呀。

   使用宏要注意宏只是机械地重复你刚才键入的动作,当你在文件里移动时要小心。你用宏重复时和你当初录制时要操作的文本对象可能不一样。你录制宏时向右移4 个字符可能对它当前的环境来说是正常工作。但当你回放这些宏时,它工作的文本环境可能需要移动5个字符。当你要录制的操作比较复杂时,要想一次就全部通过也不是一件容易的事,此时你可以写一段宏或脚本。这对于使你的程序模板化非常有用。比如,一个函数头, 你可以把这项功能定制得如你所愿的智能化



2、脚本实现创建脚本,自动生成事先定义的文件

#!/bin/bash
# Version
# Author
# chkconfig: - 12 88
# description:

DEBUG=0

if [ $# -lt 1 ]; then
  echo "Usage: $0 <dir> or <file>"
  exit 1
fi

if [[ ! "$1" =~ ^/ ]]; then
  echo "Usage: $0 <dir> or <file>"
  exit 1
fi

if [ -d $1 ]; then 
  file=$(echo $1 | sed 's,/$,,')
  file=$(mktemp -u $file/test.XXXX)
elif [ -f $1 ]; then
  file=$1
else
  dir=$(dirname $1) 
  RETVAL=$?
  [ $RETVAL -eq 0 ] && [ ! -d $dir ] && install -d $dir
  file=$1
fi

cat > $file << EOF
#!/bin/bash
# Version: $(/bin/date +%F_%T)
# Author
# chkconfig: - 12 88
# description:
EOF

echo
echo -e "\033[32m$file\033[0m"
echo
附加:
1、判断脚本的语法问题
# bash -n touchsc
2、给予执行权限
# chmod +x touchsc
3、重命名为touchsc,放入PATH定义的路径中
# mv touchsc /bin
4、生成配置文件
echo "NUMBER=0" > /root/.config_release_number


3、脚本中实现修改文本文件

1、创建临时文件
2、将修改的结果保存至临时文件
3、非交互将临时文件的内容覆盖至原文件
4、非交互将原文件删除
5、销毁变量
if [ -f /etc/shells ]; then   ## 判断文件是否存在,存在则修改。不存在,则不修改。
  tempFile=$(mktemp -u --tmpdir=/tmp .zshrpmXXXXX)  ## 生成临时文件名
  ##先将修改的结果保存至临时文件中
  sed 's@^/bin/zsh$@@g' /etc/shells > $tempFile 或 grep -v '^/bin/zsh$' /etc/shells > $tempFile
  ##非交互,cp在centos中有别名
  \cp $tempFile /etc/shells
  ##rm有别名,但可以强制删除
  rm -f $tempFile
fi


4、/etc/rc.d/rc3.d目录下分别有多个以K开头和S开头的文件;分别读取每个文件, 以K开头的文件输出为以文件名加stop,以S开头的文件输出为以文件名加start.而输出:

"K34filename stop"

"S66filename start"

1、两个循环

[root@izpo45bh60h6bsz scripts]# cd /scripts
[root@izpo45bh60h6bsz scripts]# pwd
/scripts
[root@izpo45bh60h6bsz scripts]# touchsc
Enter a script pathname[default: working directory]: how

script pathname: /scripts/how.sh
[root@izpo45bh60h6bsz scripts]# cat how.sh
#!/bin/bash
# Version: 0.0.10
# Author: Lcc.org
# Description:..

for i in /etc/rc.d/rc3.d/K*; do
  
  echo "$(basename $i) stop"
done


for i in /etc/rc.d/rc3.d/S*; do
  echo "$(basename $i) start"
done


2、单个循环

#!/bin/bash
# Version: 0.0.11
# Author: Lcc.org
# Description:	small toys

for i in /etc/rc.d/rc3.d/*; do
  i=$(basename $i)
  if [[ "$i" =~ S ]]; then
  	echo "$i start"
  elif [[ "$i" =~ K ]]; then
    echo "$i stop"
  else
    echo "...."
  fi
done


5、写一个脚本探测172.16.250.0/24网络内的在线状态

#!/bin/bash
# Version: 0.0.12
# Author: Lcc.org
# Description: Small toys

IP=172.16.250.
uphosts=0
downhosts=0
declare -i IP uphosts downhosts

for i in $(seq 254); do
  ping -c 1 -w 1 ${IP}$i &> /dev/null 2>&1
  retval=$?
  [ $retval -eq 0 ] && echo "${IP}$i online" && let uphosts=$uphosts+1 
  [ $retval -ne 0 ] && echo "${IP}$i is down" && let downhosts=$downhosts+1
done

echo "uphosts: $uphosts"
echo "downhosts: $downhosts"


6、颜色函数库统一调用

#!/bin/bash
Blank='\033[1;30m'
Red='\033[1;31m'
Green='\033[1;32m'
Yellow='\033[1;33m'
Blue='\033[1;34m'
Fen='\033[1;35m'
Qin='\033[1;36m'
Comm='\033[0m'
_general_Blank() {
  echo -e "${Blank}${1}${Comm}"
}
_general_Red() {
  echo -e "${Red}${1}${Comm}"
}
_general_Green() {
  echo -e "${Green}${1}${Comm}"
}
_general_Yellow() {
  echo -e "${Yellow}${1}${Comm}"
}
_general_Blue() {
  echo -e "${Blue}${1}${Comm}"
}
_general_Fen() {
  echo -e "${Fen}${1}${Comm}"
}
_general_Qin() {
  echo -e "${Qin}${1}${Comm}"
}