shell 下linux命令的基础应用

本文介绍了Shell脚本中获取当前脚本路径、主机IP地址的方法,解析JSON数据的函数,以及如何进行文件内容的追加、替换和删除操作。此外,还涵盖了修改MySQL和PostgreSQL数据库的root密码流程。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值