Вы можете использовать опцию -C
(или, --directory
если вы предпочитаете длинные опции), чтобы указать целевой каталог по вашему выбору, если вы используете версию Gnu tar
. Каталог должен существовать:
mkdir foo
tar -xzf bar.tar.gz -C foo
Если вы не используете tar
возможность извлечения в определенный каталог, вы можете просто cd
в целевой каталог перед вызовом tar
; тогда вам, конечно, придется указать полный путь к вашему архиву. Вы можете сделать это в подоболочке, чтобы не влиять на окружающий скрипт:
mkdir foo
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well
Или, если не подходит ни абсолютный путь, ни относительный путь к архивному файлу, вы также можете использовать его для присвоения имени архиву за пределами подобласти оболочки:
TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz