Я очень новый пользователь Linux, и я распаковываю tarball в каталог, скажем так, не улыбаясь.

Я хочу создать временный каталог с помощью команды mktemp -d и использовать команду tar чтобы распаковать архив во временный каталог, затем я хочу удалить каталог (я уверен, что у меня есть представление о том, как собираюсь сделать это).

Что у меня так далеко, это ...

tar -xvzf UW_archive_example.tgz home/common/4000_UW_spreadsheets/example.ods

Это работает и успешно распаковывает файл, как мне реализовать mktemp -d с помощью команды tar чтобы он распаковывал файл во временный каталог?

Предположим, я не могу ничего скачать и имею доступ только для чтения в каталоге, в котором я хочу создать временную папку.

2 ответа2

2

Вы могли бы сделать это:

tar -C `mktemp -d` -xvf foo.tar

Который извлекает foo.tar во временный каталог, но это только технически правильно, потому что он не говорит вам, где находится каталог.

двухсторонний подход будет:

NEW_TMP_DIR=`mktemp -d`
tar -C $NEW_TMP_DIR -xvf foo.tar

и если вы хотите связать их в цепочку, вы можете использовать &&, чтобы сделать его одним вкладышем и убедиться, что каталог создан:

NEW_TMP_DIR=`mktemp -d` && tar -C $NEW_TMP_DIR -xvf foo.tar
1

mktmp -d --tmpdir =/path/to/untar/dir && tar -C /path/to/untar/dir -xvzf UW_archive_example.tar home /common /4000_UW_spreadsheets /example.ods

mktmp создаст ваш временный каталог по вашему выбору. tar -C дает каталог для распаковки. '&&' гарантирует, что tar будет работать только в том случае, если команда mktmp была успешной. Вы можете проверить это с помощью каталога, к которому у вас есть доступ для записи, прежде чем передать его тем, кто получит доступ к конечному каталогу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .