Не так сложно написать такой сценарий, но нужно быть немного осторожнее.  Проблема в том, что zip файлы похожи на сжатые tar-файлы, и их разархивирование извлекает файлы.  Не все файлы, сжатые с помощью gzip , bzip2 или xz , обязательно являются tar файлами внизу (конечно, файл .tar.bz2 есть; так же как и файл .tgz ).  Таким образом, вы должны определить, что вы хотите сделать с простым файлом .gz , и хотите ли вы, чтобы файл tar всегда оставался без изменений.
Учитывая эту преамбулу, вы можете написать такой скрипт:
#!/bin/sh
# Optionally override the default commands
: ${GZIP:=gzip}
: ${TAR:=tar}
: ${BZIP2:=bzip2}
: ${XZ:=xz}
: ${UNZIP:=unzip}
for file in "$@"
do
    case "$file" in
    (*.tar.gz|*.tgz|*.tar)
        $TAR -xf "$file";;
    (*.tar.xz)
        $XZ -cd "$file" | $TAR -xf -;;
    (*.xz)
        $XZ -d "$file";;
    (*.gz)
        $GZIP -d "$file";;
    (*.tar.bz2)
        $TAR -xf "$file";;
    (*.bz2)
        $BZIP2 -d "$file";;
    (*.zip)
        $UNZIP "$file";;
    (*) echo "$0: unrecognized file type $file" >&2;;
    esac
done
Там не так много ракетостроения.  Я предполагаю, что ваша версия tar распознает файлы gzip и bzip2 автоматически; если нет, то вам нужно сделать более или менее, как я сделал для xz .  Также есть --use-compress-program=XXX для tar GNU, но не все варианты tar распознают ее.  Понятно, что вы можете добавить больше моделей и (де) компрессоров, как считаете нужным.  Распознать файлы CPIO и shar не так сложно.  Список можно продолжить.
Большинство людей не заботятся о таком сценарии.  Например, я обычно проверяю содержимое файла перед его извлечением.  Вы можете добавить обработку аргументов в скрипт, чтобы обеспечить подробный вывод, или список вместо извлечения (-t для tar ; -l для unzip) и, возможно, многословия.
Один шаг сложнее будет определить тип файла, когда суффикс не распознается.  Вы можете запустить file на файл и проанализировать, что он говорит.  Другая возможность - проанализировать, будет ли содержимое файла помещено в подкаталог или нет; если нет, вы можете создать подкаталог и затем извлечь содержимое в подкаталог.  Возможности легион.