File: unpack-sh#!/bin/sh # Fri Jan 5 14:57:59 EST 2001 # /usr/local/bin/unpack # Copyright 2001, 2002, Chris F.A. Johnson # Released under the terms of the GNU General Public License for file in "$@" do case $file in *.zip|*.ZIP) unzip "$file" ;; *.tar) tar xvpf "$file" ;; Files with .tar.gz and .tgz suffixes are the same format: a tar archive compressed with gzip. The .Z suffix is used by compress. Gunzip can uncompress such files. I use "gunzip -c" explicitly, because the z command is not included in all versions of tar. *.tgz|*tar.gz|*.tar.Z) gunzip -c "$file" | tar xvp ;; *.tar.bz2|*.tbz2) bunzip2 -c "$file" | tar xvp ;; ## gzipped and bzip2ed files are uncompressed to the current ## directory, leaving the original files in place *.gz) gunzip -c "$file" > `basename "$file" .gz` ;; *.Z) gunzip -c "$file" > `basename "$file" .Z` ;; *.bz2) bunzip2 -c "$file" > `basename "$file" .bz2` ;; *.rpm) dir="`basename "$file" .rpm`" mkdir -p "$dir" || die "Could not create $dir" ( cd "$dir" || die "Could not cd to $dir" rpm2cpio "$file" | cpio -dim ) ;; *.deb) dir="`basename "$file" .deb`" mkdir -p "$dir" || die "Could not create $dir" ( cd "$dir" || die "Could not cd to $dir" ar -x "$file" [ -f control.tar.gz ] && gunzip -c control.tar.gz | tar xvp [ -f data.tar.gz ] && gunzip -c data.tar.gz | tar xvp ) ;; esac done This script appeared in the December 2003 issue of SysAdmin magazine and online at UnixReview.com. Download: unpack |