linux下的bash shell记录

更新时间 🔔🕙 2024年10月25日

删除指定开头文件名的文件

# 删除变量A开头的文件
A=123
B=/path/to/directory
# 删除以变量A的值开头的所有文件
rm -f "${B}/${A}"*
# ⚠️注意,rm -f "${B}/${A}*"只会删除【/path/to/directory/123*】这一个文件

判断文件、文件夹是否存在

# 判断文件夹是否存在
if [ -d "/tmp/a" ]; then
    echo "folder exist"
else
    echo "folder not exist"
fi
# 判断文件是否存在
if [ -f "/tmp/a/1.txt" ]; then
    echo "file exist"
else
    echo "file not exist"
fi
# 检查文件夹是否存在(否定)
if [ ! -d "$folder" ]; then
    echo "The folder does not exist."
fi

变量是否相等,是否为true

# 判断字符串是否相等
string1="hello"
string2="world"
 
if [ "$string1" == "$string2" ]; then
  echo "字符串相等"
else
  echo "字符串不相等"
fi

# 判断变量是否为true(这是因为bash里面没有boolean变量,都是数字或者字符串)
if [ "${my_var}" = "true" ]; then
    echo "Variable is true"
else
    echo "Variable is false"
fi
# 使用 while 循环逐行读取文件内容并打印
while IFS= read -r line; do
  echo "Original: $line"
  # 删除行首的空格和Tab
  line=$(echo "$line" | sed "s/^[ \t]*//")
  # 判断是否为shell的注释行
  if [ "${#line}" -gt 1 ] && [ "${line:0:1}" != "#" ]; then
    echo "Trimmed: $line"
  else
    echo "这一行以#开头,忽略,跳过执行"
  fi
done < "./tts-text.txt"

换行书写

# bash shell命令有时候太长,这个时候可以换行书写
python3 ./xxx.py --url "xxx" \
  -text "你好啊"

读取数据,一次赋值给多个变量

# 将一行内容分别赋值给不同变量
output="1 # 2 #  # 4"
IFS=" # " read -r v1 v2 v3 v4 <<< "$output"

压缩解压文件

# tar命令的选项含义如下:
# -c:创建新的tar文件
# -v:显示详细信息
# -f:指定打包后的文件名
# -z:使用gzip压缩格式
# -j:使用bzip2压缩格式
# --include:只包含某些文件类型
# --exclude:排除某些文件类型

# 打包为gzip格式
tar -cvzf archive.tar.gz /path/to/directory
# 只包含txt文件
tar -cvzf archive.tar.gz --include '*.txt' /path/to/directory
# 排除log文件
tar -cvzf archive.tar.gz --exclude '*.log' /path/to/directory

# 解压到指定目录(相对路径、绝对路径均可)
tar -zxvf /path/to/archive.tar.gz -C /path/to/destination
# 解压到当前目录
tar -zxvf /path/to/archive.tar.gz
转载请备注引用地址:编程记忆 » linux下的bash shell记录