在 CentOS(以及大多数 Linux 发行版)中,“extract” 通常指解压文件(如 .tar.gz、.zip、.tar.xz 等)。下面我从脚本化思路和常见示例两方面说明,如何在 CentOS 上用脚本自动解压文件。
| 文件类型 | 命令 |
|---|---|
.tar |
tar -xvf file.tar |
.tar.gz / .tgz |
tar -xzvf file.tar.gz |
.tar.xz |
tar -xJvf file.tar.xz |
.tar.bz2 |
tar -xjvf file.tar.bz2 |
.zip |
unzip file.zip |
.rar |
unrar x file.rar |
CentOS 默认通常已安装
tar,但unzip/unrar可能需要安装:
yum install -y unzip
#!/bin/bash
FILE="$1"
if [ -z "$FILE" ]; then
echo "用法: $0 文件名"
exit 1
fi
if [ ! -f "$FILE" ]; then
echo "文件不存在: $FILE"
exit 1
fi
case "$FILE" in
*.tar)
tar -xvf "$FILE"
;;
*.tar.gz|*.tgz)
tar -xzvf "$FILE"
;;
*.tar.xz)
tar -xJvf "$FILE"
;;
*.tar.bz2)
tar -xjvf "$FILE"
;;
*.zip)
unzip "$FILE"
;;
*.rar)
unrar x "$FILE"
;;
*)
echo "不支持的文件类型: $FILE"
exit 1
;;
esac
使用:
chmod +x extract.sh
./extract.sh test.tar.gz
#!/bin/bash
for f in *.tar.gz *.zip; do
[ -e "$f" ] || continue
echo "解压: $f"
case "$f" in
*.tar.gz) tar -xzvf "$f" ;;
*.zip) unzip "$f" ;;
esac
done
#!/bin/bash
FILE="$1"
DEST="$2"
mkdir -p "$DEST"
case "$FILE" in
*.tar.gz)
tar -xzvf "$FILE" -C "$DEST"
;;
*.zip)
unzip "$FILE" -d "$DEST"
;;
esac
如果你说的 CentOS extract 是指 自动化运维,例如:
- name: Extract tar.gz
unarchive:
src: /tmp/app.tar.gz
dest: /opt/app
remote_src: yes
例如:
rpm2cpio package.rpm | cpio -idmv
✅ 脚本化 extract 的核心步骤:
如果你能补充:
我可以给你更精准的脚本。