Я научился использовать tar без '-' для опций, например, tar cvfz dir.tar.gz Directory/
но недавно я столкнулся с немного другим tar -czvf
синтаксисом (я думаю, что 'f' должно быть последним вариантом в этом случае).
Оба работают на Linux и Mac OS. Есть ли рекомендуемый синтаксис с ou без '-', который является более переносимым по сравнению с Unix?
tar
options
portability
ascobol
источник
источник
-f
этот параметр должен быть последним, заключается в том, что он принимает аргумент, и этот аргумент может быть задан касанием этого параметра.tar -cvfz dir.tar.gz Directory
означает создать архив с именем,z
который содержит файлыdir.tar.gz
иDirectory
.Ответы:
tar
это одна из тех древних команд со времен, когда синтаксис опций не был стандартизирован. Поскольку все полезные вызовыtar
требуют указания операции перед предоставлением какого-либо имени файла, большинствоtar
реализаций интерпретируют свой первый аргумент как параметр, даже если он не начинается с-
. Большинство текущих реализаций принимают a-
; единственное исключение, о котором я знаю, это Minix .Более ранние версии POSIX и Single Unix включали
tar
команду без-
спецификатора операции перед. Single Unix v2 были как традиционные архиваторыcpio
иtar
, но очень немногие флаги могут быть стандартизированы , потому что существующие реализации были слишком различны, поэтому стандарты ввели новую команду,pax
, которая является единственным стандартом архиватора в так Single Unix v3 . Если вам нужно стандартное соответствие, используйтеpax
, но имейте в виду, что многие дистрибутивы Linux не включают его в базовую установку, аpax
в Minix его нет . Если вы хотите мобильности на практике, используйтеtar cf filename.tar
.источник
pax
, он обычно поставляется с худшей из известных реализаций pax (GNU pax), которых следует избегать из-за множества ошибок.ps
команда имеет такое же поведение, вы можете опустить-
для параметров.ps
не позволяют вам опустить-
. Версия для Linux имеет опции с и без-
, но большинство из них имеют разные значения (совместимость BSD против System V).ps aux
... Таким образом, я могу (частично) ошибаться. Сожалею.Я могу быть динозавром, но я думаю, что привычное использование «cvf» вместо «-cvf», вероятно, более переносимо. Я полагаю, что большинство дистрибутивов Linux используют GNU tar, и я предполагаю, что * BSD также делают, но вы найдете проприетарные Unix, которые по-прежнему используют старый SysV tar, который раньше требовал от вас не использовать '-' в опциях ,
Я не использую "-cvf" (или "-xf" или что-то еще), и у меня нет проблем даже с передовой версией Arch linux.
И, как примечание, я думаю, что вы можете использовать стандартные параметры команды jar для Sun с или без знака «-».
источник
В UNIX было немного программ, которые не соответствуют текущему стандарту опций.
Один из них
dd
, но dd был получен из программы мэйнфрейма IBMDDR
(Disk Dump and Restore).Один есть,
ar
а другой естьtar
. По моей информации, tar хотел быть похожим на ar.Все реализации tar работают без - и ни одна полезная реализация не требует -. Поэтому, если вам нравится писать переносимые сценарии, проверьте стандарт SUSv2 и используйте только командную строку, совместимую с SUSv2.
источник