shell 官网:http://www.gnu.org/software/bash/
PostgreSQL Documentation:https://www.postgresql.org/docs/9.2/app-psql.html
linux jq ·【 json处理 】:https://stedolan.github.io/jq/manual/
shell 菜鸟教程:https://www.runoob.com/linux/linux-shell.html
Mysql (Linux)下载:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
jdk(Linux)下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
shell中的(),{}几种语法用法:
https://www.cnblogs.com/HKUI/p/6423918.html
----------------------------------------------------------------------------------------------
Shell中的${}、##和%%使用范例
假设定义了一个变量为:
代码如下:
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
${file##*.}:删掉最后一个 . 及其左边的字符串:txt
${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt
sed一些用法
-i 是直接操作文件,在原文件上修改
# 把 a.txt文件中的 TAB 字符置换成tab符号
sed -i "s/TAB/\t/g" a.txt
# filename.txt 文件中存放了要被删除的文件名,下面这条命令作用是:通过rm -f 命令删除文件【在每一行的文件名前加 rm -f (则变成了rm -f 文件名)】,并输出删除文件的消息【再在每一行后拼接想要输出的消息】
# 括号前面的 \ 是转义括号的, .* 则是匹配每一行数据,\1 用来获取括号中匹配的内容(就是 .* 匹配到的一行数据)
sed -i -e "s/\(.*\)/rm -f \1;echo 删除文件的名称是:\1/g" filename.txt
vim 查找与替换(带有特殊字符的)
#举例:
:s/aa/bb # 将光标所在行第一个 aa 替换为 bb
:s/aa/bb/g # 将光标所在行所有 aa 替换为 bb
:%s/aa/bb/g # 全文执行替换 aa 替换为 bb
:3,10s/aa/bb/g # 将第3行到第10行 aa 替换为 bb
:%s/\\/\//g # 全文\替换为/ (特殊字符:^、$、*、/、\和.都需要转义,前面加上\)
:%s,\\,/,g # 或用逗号分割(/可以不用转义)
:%s,aa,bb,gic # 全文 aa(忽略大小写) 替换为bb,每次替换提示是否替换
常用标记,gic可自由组合使用:
% 所有行
g 单行内所有匹配项(默认只匹配单行第一个)
i 忽略大小写
c 确认是否替换
判断 abc.mp4 文件如果超过30分钟无操作后,执行xxxxx操作
mp4="/data/abc.mp4"
min=30
if [ $(( $(date +%s) - $(stat -c %Y ${mp4}) )) -gt $(( 60 * ${min} )) ];then
xxxxx
fi
查找包含指定字符串的文件
# 查找 home 目录下,包含 abc 字符串的文件,输出到 abc.txt 文件
find /home -type f | xargs -I{} grep "abc" {} -l >> abc.txt
grep -r "abc" /home >> abc.txt
去除ids.txt文件最后一个符号,并且ids.txt文件的最开头加’(‘,最后面加’)'
cat ids.txt | set '/.$//' | sed '/./{s/^/(&/;s/$/&)/}'
linux下查看某关键词前后几行内容
# 查看filename中含有abc所在行后4行内容
cat filename | grep abc -A4
# 查看filename中含有abc所在行前4行内容
cat filename | grep abc -B4
# 前后4行都查出来
cat filename | grep abc -A4 -B4
# i自增
i=$(($i+1))
# 本地文件传到远端(-p:带文件属性;-r:目录的话递归)
scp -p 文件名 远端用户名@远端ip:远端存放路径
# 统计文件个数
ls -l | grep "^-" | wc -l
# 去除 str 字符串前后空格后,赋值给 aa
aa=`echo ${str} | sed '/^$/d'`
防火墙
# 查看firewalld状态,发现当前是dead状态,即防火墙未开启。
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
# 再次查看firewalld状态,显示running即已开启了
systemctl status firewalld
# 如果要关闭防火墙设置,通过这条指令来关闭该功能。
systemctl stop firewalld
① Linux开放指定端口
1,查看开放的端口:firewall-cmd --list-all
2,开放指定端口(例如8080) :firewall-cmd --add-port=8080/tcp --permanent
# 备注:今天开放80端口的时候报错(Error: INVALID_PORT: bad port (most likely missing protocol), correct syntax is portid[-portid]/protocol)
#然后解决:firewall-cmd --zone=public --add-port=80/tcp --permanent
3,重启防火墙:firewall-cmd --reload
# 根据服务查看监听端口。如下查看 ftp 的监听端口是21
[root@localhost user_conf]# netstat -antup | grep ftp
tcp6 0 0 :::21 :::* LISTEN 288540/vsftpd
★其他
查询端口号80 是否开启:firewall-cmd --query-port=80/tcp
永久开放80端口号:firewall-cmd --permanent --zone=public --add-port=80/tcp
移除80端口号:firewall-cmd --permanent --zone=public --remove-port=80/tcp
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
查看端口占用情况(80 为例)
lsof -i :80
② Linux查找并删除软件
查找(mysql):rpm -qa | grep mysql
执行删除:rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
③ Linux 添加 mysql 开机自启
# 先将MySQL安装目录 /usr/local/mysql/mysql/support-files/ 文件夹下的mysql.server文件复制到 /etc/rc.d/init.d/ 目录下mysqld
cp /usr/local/mysql/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# 赋予可执行权限:
chmod +x /etc/init.d/mysqld
# 添加为服务:
chkconfig --add mysqld
# 查看服务列表:
chkconfig --list
#看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:
chkconfig --level 345 mysqld on
# 重启计算机:
reboot
再次查看服务列表或者查看3306端口号