在 Debian 系统中,“extract 脚本”通常有两种理解:
下面我分别给你示例,你可以按需选用。
dpkg-deb(推荐)#!/bin/bash
if [ $# -ne 1 ]; then
echo "用法: $0 package.deb"
exit 1
fi
DEB=$1
DIR=${DEB%.deb}
mkdir -p "$DIR"
dpkg-deb -x "$DEB" "$DIR" # 解压文件
dpkg-deb -e "$DEB" "$DIR/DEBIAN" # 解压控制信息
echo "已解包到 $DIR"
用法:
chmod +x extract_deb.sh
./extract_deb.sh xxx.deb
ar + tar(底层方式)#!/bin/bash
DEB=$1
DIR=${DEB%.deb}
mkdir -p "$DIR"
cd "$DIR" || exit
ar x ../"$DEB"
mkdir control data
tar -xf control.tar.* -C control
tar -xf data.tar.* -C data
echo "解包完成"
如果你想要一个 自动识别格式 的 extract 脚本:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "用法: $0 file"
exit 1
fi
FILE=$1
case "$FILE" in
*.tar.bz2) tar xjf "$FILE" ;;
*.tar.gz) tar xzf "$FILE" ;;
*.tar.xz) tar xJf "$FILE" ;;
*.tgz) tar xzf "$FILE" ;;
*.bz2) bunzip2 "$FILE" ;;
*.rar) unrar x "$FILE" ;;
*.gz) gunzip "$FILE" ;;
*.tar) tar xf "$FILE" ;;
*.zip) unzip "$FILE" ;;
*.deb) dpkg-deb -x "$FILE" "${FILE%.deb}" ;;
*.7z) 7z x "$FILE" ;;
*) echo "不支持的格式: $FILE" ;;
esac
保存为 extract.sh 即可使用。
#!/bin/bashset -e(出错即停)dpkg-deb, ar)如果你能说清楚:
我可以直接帮你写一个完整可用的脚本。