Я, например, пользуюсь такой функцией:
function unpack()
{
#Usage: unpack archive destination_dir
case $1 in
*tar.gz) tar xvzf $1 -C $2;;
*tar.bz2) tar xjvf $1 -C $2;;
esac
}
Еще есть стек каталогов(popt) но я с ним еще толком не разобрался. Буду дальше маны читать...