1. 获取当前shell脚本所在路径
# 当前所在路径
CURR_DIR=$(
cd "$(dirname "$0")"/. || exit
pwd
)
2. 获取当前主机的ip地址
# 获取所有主机所有网卡ip,剔除回环地址
CURR_IP=$(ip addr | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d 'addr:' | grep -v 172 | cut -f1 -d '/')
# 获取所有主机其中一个可用ip,剔除回环地址
CURR_IP=$(ip addr | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d 'addr:' | grep -v 172 | cut -f1 -d '/' | tail -1)
3. 解析json格式的数据
# 解析JSON
function parseJson() {
local STR=${1//\"/}
echo "$STR" | sed "s/.*$2:\([^,}]*\).*/\1/"
}
JSON='{"name":"小明","age":15,"sex":"男"}'
# 使用
JSON_NAME=$(parseJson "$JSON" "name")
# 输出
echo "name= $JSON_NAME"
4. 多行输出到文件
a. 使用echo ( >> 追加 > 覆盖)
{
echo "第一行。。。。。。"
echo "第二行。。。。。。 "
echo "第三行。。。。。。"
echo "1111111111111"
} >>b.txt
b. 使用cat ( >> 追加 > 覆盖)
cat >>b.txt <<EOF
111111111111......
222222222222.....sssssss
"333333333333......"
444444444444sfsdfsdsdfsdfsd
EOF
5. 修改文件内容
a. 新增内容
# 格式:sed -i "行数a 新增的内容" 文件路径
# 在第一行的下一行新增一行数据
sed -i "1a 我是新增内容。。。。。" b.txt
b. 替换
# 格式:sed -i 's/原字符串/新字符串/' 文件路径
# sed -i 's/原字符串/新字符串/' ./b.txt 每行替换一次
# sed -i 's/原字符串/新字符串/g' ./b.txt 全局匹配替换
# 替换 ‘小明’ 为 ‘张三’
sed -i "s/小明/张三/g" b.txt
c. 删除
# 格式:sed -i '/字符串/d' file
# 删除文件中的 ‘小明’
sed -i "/小明/d" b.txt
6. 打印输出
# 打印列(域)
# 例:打印第二列
ps -ef | awk '{print $2}'
# 例:打印前两列
ps -ef | awk '{print $1,$2}'
# 例:打印完第一列,然后打印第二列
ps -ef | awk '{print $1 $2}'
#-----------------------------------------------------
# 打印行
# 例:打印文本文件的总行数
ps -ef | awk 'END{print NR}'
# 例:打印第一行
ps -ef | awk 'NR==1{print}'
# 文件的打印
#1、打印文件的第一列(域) : awk '{print $1}' filename
#2、打印文件的前两列(域) : awk '{print $1,$2}' filename
#3、打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename
#4、打印文本文件的总行数 : awk 'END{print NR}' filename
#5、打印文本第一行 :awk 'NR==1{print}' filename
#6、打印文本第二行第一列 :sed -n "2, 1p" filename | awk '{print $1}'
# 例:打印文件的第二行第一列
sed -n "2, 1p" b.txt | awk '{print $1}'
7. 修改mysql 的root密码
# 设置mysql的密码,密码稍微设置复杂些,不然会不符合mysql密码规则而修改失败
LOCAL_MYSQL_PASS="你的mysql密码"
# 获取安装时生成的随机的密码
MYSQL_PASSWD=$(tail /var/log/mysqld.log | grep password | head -1 | rev | cut -d ' ' -f 1 | rev)
echo "mysql的随机密码:$MYSQL_PASSWD"
echo "mysql修改后的密码:$LOCAL_MYSQL_PASS"
mysqladmin -uroot -p"$MYSQL_PASSWD" password $LOCAL_MYSQL_PASS
8. 修改postgresql密码
# 设置你的postgresql密码
POSTGRES_PASS="你的密码"
echo "ALTER USER postgres WITH PASSWORD '$POSTGRES_PASS';" | sudo -u postgres psql