При попытке распаковать переданный по конвейеру файл 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» в команде.