# grep
格式:grep [选项] 关键词 文件
-i 不区分大小写
-n 显示行号
--color 高亮显示关键字
# 删除两个文件的交集:
cat a.txt b.txt |sort |uniq -u
# 取两个文件的交集:
cat a.txt b.txt |sort |uniq -d
# 取两个文件的并集:
cat a.txt b.txt |sort |uniq
# 非交互crontab
清空定时任务列表:
crontab -r
删除一条定时任务:
crontab -l|grep -v "/a.sh"|crontab
新增一条定时任务:
(crontab -l;echo "0 */6 * * * /data/bin/a.sh > /dev/null 2>&1")|crontab
新增多条定时任务:
crontab -l;echo "0 */6 * * * /data/bin/a.sh >/dev/null 2>&1
> 0 */6 * * * /data/bin/b.sh.sh >/dev/null 2>&1"|crontab
# echo字体颜色
echo -e "\033[x;y;zm 输出内容 \033[0m"
x显示方式: 终端默认设置=0 高亮显示=1 带下划线=4 字体闪烁=5 反白显示=7 隐藏=8
y字体颜色: 重置=0,黑色=30,红色=31,绿色=32,×××=33,蓝色=34,洋红=35,青色=36,白色=37
z字体背景色: 重置=0,黑色=40,红色=41,绿色=42,×××=43,蓝色=44,洋红=45,青色=46,白色=47
# sed
# Sed 参考 https://blog.csdn.net/wdz306ling/article/details/80087889
# 选项
-r 启用扩展的正则表达式,若与其他选项一起使用,应作为首个选项
-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项
# 编辑命令
a: 在匹配行后面追加 sed "/^$/a 123" 1.txt
i: 在匹配行前面追加 sed "/^$/i 123" 1.txt
c: 更改匹配行的内容 sed "/^$/c 123" 1.txt
=: 打印匹配行号 sed "/123/=" 1.txt
r: 将文件内容追加到匹配行后面 sed "/^$/r /data/2.txt" 1.txt
w: 将匹配行写入指定文件(覆盖原文件,慎用) sed -i "/^$/w /data/2.txt" 1.txt
打印匹配123的行及其后面一行 sed -n "/123/,+1p" 1.txt
打印最后一行 sed -n "\$p" 1.txt
删除1~2之外的所有行(必须使用‘‘) sed ‘1,2!d‘ 1.txt
删除不匹配123或abc的行(必须使用‘‘) sed ‘/123\|abc/!d‘ 1.txt
删除1~3行中,匹配有123的行 sed "1,3{/123/d}" 1.txt
在第7行替换第2个123为hello sed "7s#123#hello#2" 1.txt
替换第1行中的最后1个字符为空 sed "1s/.$//g" 1.txt
# awk
引用${a}变量 awk ‘{print $1"‘${a}‘"}‘ 1.txt
# 域名访问次数最多的前十条
cat xxx.log| awk -F‘,‘ ‘{print $7}‘ |sort|uniq -c |sort -nr -k1 |head -10
# 过滤IP
for i in $(cat 1);do sed "s/\"//g" 1.csv |grep ${i} |awk -F ‘,‘ ‘{print $3}‘; done
# 删除3天以上的文件
find /data/bak -mtime +3 -name "${HOSTNAME}-*.zip" -exec rm -f {} \;
# 测试域名是否可访问 显示域名解析IP地址
#!/bin/bash
a=(
)
for i in ${a[@]}
do
echo -e "\033[1;36m ${i}\t$(echo $(dig ${i} |sed -n "/;; ANSWER/,/;/p" \
|sed -n "2,3p" |awk ‘{print $NF}‘ |sed "1s/\.$//"))\t\t$(curl https://${i} \
>/dev/null 2>&1 && echo successfully || echo failure) \033[0m"
done
# zip
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
zip -q -r html.zip /home/html、
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
从压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c
# Xshell
属性》终端》VT模式》初始数字键盘模式(DECNKM)》设置为普通(S)
Alt+o 快速打开新会话
vim 普通模式
d+上/下 删除选中的两行
d+左/右
命令行下
Ctrl + a 可以快速切换到命令行开始处
Ctrl + e 切换到命令行末尾
Ctrl + r 在历史命令中查找
Ctrl + u 删除光标所在位置之前的所有字符
Ctrl + k 删除光标所在位置之后的所有字符
ctrl + w 删除光标之前的一个单词
ctrl + d 删除当前字符
# nignx 的 rewrite和return
参考:https://blog.51cto.com/chenx1242/2059740
nginx配置location [=|~|~*|^~] /uri/ { … }用法
= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~ 为区分大小写匹配(可用正则表达式)
!~为区分大小写不匹配
~* 为不区分大小写匹配(可用正则表达式)
!~*为不区分大小写不匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。
# make && make install 后显示 离开目录 则 安装成功
./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--conf-path=/data/soft/nginx/conf/nginx.conf \
--with-cc-opt=-O3 \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-http_slice_module
# ossutil 配置 ------------------------------------------------------
ossutil64 config -e 阿里云桶地址 -i 阿里云oss的ID -k 阿里云oss的Key
# sshpass 批量传ssh公钥:
制作密钥对:ssh-keygen -b 2048 -t rsa
传送公钥:ssh-copy-id
#第一次连接不提示"yes/no": -o StrictHostKeyChecking=no
#sshpass -p ‘123456‘ ssh-copy-id -o StrictHostKeyChecking=no www@192.168.25.20
# ssh-agent 免私钥密码验证
ssh-agent bash
ssh-add ~/.ssh/id_rsa
ssh-add -l # 查看已添加私钥
-d 私钥 :删除指定的私钥
# expect 批量传ssh公钥
#!/bin/bash
pass_wd=‘‘
ssh_ip=(
)
for i in ${ssh_ip[*]}
do
expect <<-EOF
set time 30
spawn ssh-copy-id -p 12525 www@${i}
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "${pass_wd}\r" }
}
send "exit\r"
interact
expect eof
EOF
done
# inotify ---------------------------------------------------------------
inotifywait [选项] 目标文件夹
-m 持续监控(捕获一个事务后不退出)
-r 递归监控、包括子目录及文件
-q 减少屏幕输出信息
-e 指定监视的 modify move create delete attrib 等事件类别
# 监控并同步
a="/dir/"
b="rsync -a --delete $a root@192.168.4.207:/opt/"
while /myrpm/bin/inotifywait -rqq $a
do
$b
done
# 计算备份文件的总大小
du -sh ${HOSTNAME}-*.zip |awk ‘{print $1}‘|sed ‘s#M##g‘|awk ‘{sum+=$1}END{print sum}‘
# tar
-z:有gzip属性的 -czf tar.gz
-j:有bz2属性的 -cjf tar.bz2
-Z:有compress属性的 -cZf tar.bz2
-t:查看内容
-v:显示所有过程
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# 解压
*.tar 用 tar –xvf 解压
*.gz 用 gzip -d或者gunzip 解压
*.tar.gz 和 *.tgz 用 tar –xzf 解压
*.bz2 用 bzip2 -d或者用bunzip2 解压
*.tar.bz2 用 tar –xjf 解压
*.Z 用 uncompress 解压
*.tar.Z 用 tar –xZf 解压
*.rar 用 unrar e解压
*.zip 用 unzip 解压