Linux的shell脚本常用命令

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、前提

使用shell脚本可以将所要执行的命令行进行汇总统一执行制作为脚本工具简化重复性工作

1.1、常用命令

1.1.1、启动命令

假设我们拥有一个halloWord.sh的脚本通过cd 命令进入相对应的目录下

./halloWord.sh

1.1.2、记录日志

将脚本执行的内容以及输出记录在log.txt文件中同时也控制台显示器也要输出一份可以在脚本开始处添加以下代码

# -a 后的$(date +%Y-%m-%d_%H:%M:%S)_log.txt为log.txt名称
# (date +%Y-%m-%d_%H:%M:%S)为当前时间 防止log文件重名
exec &> >(tee -a $(date +%Y-%m-%d_%H:%M:%S)_log.txt)

1.1.3、设置变量以及输出内容

#控制台将输出内容为 "127.0.0.1"的字符串
DB_HOST="127.0.0.1"
echo $DB_HOST

1.1.4、创建文件夹

#在/opt下创建Back文件夹
mkdir /opt/Back

1.1.5、拷贝文件夹、文件

选项
-r递归复制目录及其内容。与-R选项相同。
-p保持源文件的权限、所有者和时间戳等属性。
-i在复制时进行交互式确认如果目标文件已经存在则提示是否覆盖。
-f强制复制不进行任何提示或警告。
-u只复制源文件比目标文件更新的文件。
-v显示详细的复制过程信息。

#cp [选项] 源文件 目标文件
#将opt目录下的log.txt文件拷贝至opt的Back目录下
#相同原理也可以拷贝文件夹
cp -R /opt/log.txt /opt/Back

1.1.6、校验目录或文件夹是否存在

if [ -f "/opt" ]; then
   echo "opt目录存在"
else
   echo "opt目录不存在"
fi

1.1.7、输入英语字符并转换为小写字符

echo "是否要校验opt目录是否存在(y/n)"
read answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ "$answer" = "y" ]; then
   echo "opt目录存在"
else
   echo "opt目录不存在"
fi

1.1.8、中途停止脚本的执行

#使用 exit 1进行停止
#exit 1 是一个Shell命令用于在脚本中退出并返回一个非零的退出状态。
#它通常用于指示脚本或命令在执行过程中发生了错误或异常。
#当执行exit 1时脚本将立即终止
echo "是否要校验opt目录是否存在(y/n)"
read answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ "$answer" = "y" ]; then
   echo "opt目录存在"
else
   echo "opt目录不存在"
   echo "操作已取消"
   exit 1
fi

1.1.9、将文本内容更换为UTF-8格式

定义两个变量分别为需要源文件路径以及目标文件路径

#将opt目录下的log.txt更换为UTF-8格式
TXT_FILE="/opt/log.txt"
TXT_FILE_UTF="/opt/log_UTF-8.txt"
iconv -f GBK -t UTF-8 $TXT_FILE > $TXT_FILE_UTF

也可以不使用变量的方式

#将opt目录下的log.txt更换为UTF-8格式
iconv -f GBK -t UTF-8 "/opt/log.txt" > "/opt/log_UTF-8.txt"

2、注意事项

2.1、书写格式

.sh文件的第一行必须为#!/bin/bash
例如在这里插入图片描述

2.2、权限问题

第一次调用.sh脚本是时可能会出现权限不足的问题

#脚本赋予可执行权限
chmod u+x /opt/XXX.sh

2.3、编写的格式问题

winodw编写可以使用编辑器(如NotePad++)保存格式为unix否则会出现不可见的符号导致命令行报错脚本无法使用
在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux