Как передать файл в качестве входных данных команде tar

Как передать файл в качестве входных данных команде tar

При попытке распаковать переданный по конвейеру файл tar с помощью следующей команды возникает следующая ошибка:

$ git archive --format=tar 0af62b1 | tar -xf -C /the/path/here/
tar: -C: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

Первая часть git archive --format=tar 0af62b1выводит файл tar, распечатанный на экране. Этот вывод можно записать в файл, используя параметр --output file_name.

Во второй части я пытаюсь извлечь содержимое файла в указанный путь. При запуске по отдельности оба работают отлично, git archive 0af62b1 --output file_nameза ними следует tar -xf file_name -C /the/path/here/.

Почему в этом случае конвейеризация невозможна и как узнать, принимает ли определенная команда конвейерный ввод?

решение1

Я бы попробовал перенаправить ваш файл gitв tar -xf - -C /the/path/here/то, что -является синонимом стандартного ввода. Или проще tar -xC /the/path/here( -это файл по умолчанию).

решение2

Проблема указана в вашем сообщении об ошибке:

$ git архив --format=tar 0af62b1 | tar-xf -C/путь/здесь/
tar:-C: Невозможно открыть:Нет такого файла или каталога
tar: Ошибка неустранима: выход сейчас

Вы указываете tar использовать файл с именем -C, который не существует, и поэтому получаете ошибку.

В рабочем случае вы указываете файл с именем file_name, который существует, и все работает.

Возможное исправление: удалить «-f -C» в команде.

Связанный контент