#!/bin/bash [ -d /home/increment/ ] || mkdir -p /home/increment/ mysql_path=/home/ mysql_increment_path=/home/increment/ #mysql全备 mysql_backup() { innobackupex --defaults-file=/etc/my.cnf --user=root --password='123456' --backup $mysql_path/mysql-`date +%Y%m%d`/ --no-timestamp exit 0 } #恢复 mysql_recovery() { systemctl stop mysqld mv /var/lib/mysql /var/lib/mysql2 innobackupex --apply-log $mysql_path/mysql-`date +%Y%m%d`/ innobackupex --defaults-file=/etc/my.cnf --copy-back $mysql_path/mysql-`
awk 'NR==3{print}' a.txt 输出第三行 awk 'NR%==1{print}' a.txt 输出奇数行 awk 'NR<=3{print}' a.txt 输出前3行 awk 'NR>=3{print}' a.txt 输出第3行到末尾行 awk '$1=="sy"{print}' a.txt 输出第1列是sy awk -F: '$1==ENVIRON["USER"]{print $1,$6,$7}' /etc/passwd 输出当前用户的用户名、宿主目录、登录shell信息 awk 'NR>=3&&NR<=5{print}' a.txt 输出第3-5行 awk 'NR==3||NR==5{print}' a.txt 输出第3行和第5行 awk '$7!~/nologin$/||$1~/^[a-d]/{print}' a.txt 匹配第7列输出不以nologin结尾,或在第1列匹配以a-d开头 awk 'BEGIN{X=0}{x
sed -n '2,4p' /etc/passwd 输出第2-4行 sed -n '1,4d' /etc/passwd 删除第1-4行 sed -n 'p;n' /etc/passwd 输出基数行 sed -n 'n;p' /etc/passwd 输出偶数行 sed -n '2,$p' /etc/passwd 输出第2到最后一行 sed -n '$=' /etc/passwd 输出文本的行数 sed -n '/root/!p' /etc/passwd 删除不包括root的行 sed -n '$d' /etc/passwd 删除文件最后一行 sed -n 's/root/abc' /etc/passwd 替换所有行中的第一个root sed -n 's/root/abc/g' /etc/passwd 替换所有行中的root sed -n '3s/root/abc/2' /etc/passwd
^匹配行首 例:grep '^r' /etc/passwd root:x:0:0:root:/root:/bin/bash $匹配行未 例:grep 'localhost$' /etc/hosts 127.0.0 localhost.localdomain localhost []集合,匹配集合中的任意单个字符 例:grep '[A-Z]' brace.txt abcab CD-ROM [^]对集合取反 例:grep '[^ab]' brace.txt sdcgfkill .匹配任意单个字符 例:grep '.grop' brace.txt agrop *匹配前一个字符任意次数 例:egrep 'stuf*' /etc/rc.local want to do the full Sys V style init stuff.
判断172.40.51.0网段有多少是开关机状态 x=0 y=0 for i in `seq 100 200` do ping -c1 -i0.1 -W1 172.40.51.$i if [ $? -eq 0 ];then echo "172.40.51.$i is up" let x++ else echo "172.40.51.$i is down" let y++ fi done echo "开机的有$x个,关机的有$y个。" 棋盘 for i in {1..10} do for j in {1..10} do he=$[i+j] if [ $[$he%2] -eq 0 ];then echo -en "\033[45m \033[0m" else echo -en "\033[47m \033[0m" fi done done
定义/赋值数组 x=(www ftp mail cluv) 0 1 2 3 (变量的编号从0开始,空格代表分隔) set |grep "x" 查看数组定义结果 x=([0]="www" [1]="ftp" [2]="mail" [3]="cluv") echo ${x[0]} 输出结果:www 给y赋值: y[0]="www" y[1]="ftp" y[2]="abc" y[3]="hjd" y=(www ftp adc hjd)
字符串的替换 格式:${变量名/源值/新值} 例:y="Tarena Grop" echo ${y/r/qqq} (将第一个r替换为qqq,/替换第一个匹配结果) 输出结果:Taqqqena Grop 例:y="Tarena Grop" echo ${y//r/qqq} (将全部r替换为qqq,//替换全部匹配结果) 输出结果:Taqqqena Gqqqop
if判断 格式: if [ ];then (中括号里写判断,然后要两边加空格, 条件满足执行命令序列,不满足执行else的命令序列) 命令序列 elif [ ];then (同上) 命令序列 else 命令序列 fi 例:if [ $1=="natasha" ];then echo "chiheirou" elif [ $1=="chiheirou" ];then echo "natasha" else echo "请在natasha和chiheirou中二选一" fi
重定向出输出: >:只收集前面命令的正确输出 <:重定向输入 >:覆盖 >>:追加 2>:只收集前面命令的错误输出 &>:收集前面命令的错误与正确的输出 >2&:将错误的变成正确的输出 >&2:将正确的变为错误的输出 $$:当前运行进程的PID号 $#:已加载的位置变量的个数 $*:所有位置变量的值 $?:命令执行后的判断,0正常,非0异常 $0:当前所在的进程或脚本名 $!:查询最后一个进程的PID 常用的测试项 检测文件状态: -e:文档存在为真 -d:目录存在为真 -f: 文件存在为真 -r:文档有读权限为真 -w:文档有写权限为真 -x:文档有执行权限为真
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号