Eu aprendi a usar tar sem '-' para opções, como, tar cvfz dir.tar.gz Directory/
recentemente, encontrei a tar -czvf
sintaxe um pouco diferente (acho que o 'f' deve ser a última opção nesse caso).
Ambos funcionam no Linux e no Mac OS. Existe uma sintaxe recomendada, com ou sem '-', que é mais portátil entre os sabores unix?
tar
options
portability
ascobol
fonte
fonte
-f
deve ser a última opção é porque ela requer um argumento e esse argumento pode ser dado tocando na opção.tar -cvfz dir.tar.gz Directory
significa criar um arquivo nomeadoz
que contém os arquivosdir.tar.gz
eDirectory
.Respostas:
tar
é um daqueles comandos antigos dos dias em que a sintaxe da opção não havia sido padronizada. Como todas as chamadas úteistar
exigem a especificação de uma operação antes de fornecer qualquer nome de arquivo, a maioria dastar
implementações interpreta seu primeiro argumento como uma opção, mesmo que não comece com a-
. As implementações mais atuais aceitam a-
; a única exceção que conheço é o Minix .As versões mais antigas do POSIX e Single Unix incluíam um
tar
comando sem-
antes do especificador de operação. O Single Unix v2 tinha arquivadores tradicionaiscpio
etar
, mas pouquíssimos sinalizadores puderam ser padronizados porque as implementações existentes eram muito diferentes; portanto, os padrões introduziram um novo comandopax
, que é o único arquivador padrão desde o Single Unix v3 . Se você deseja conformidade padrão, usepax
, mas tenha cuidado, pois muitas distribuições Linux não a incluem na instalação base e não hápax
no Minix . Se você deseja portabilidade na prática, usetar cf filename.tar
.fonte
pax
, ela geralmente vem com a implementação pax mais conhecida (pax GNU) que deve ser evitada devido a muitos bugs.ps
comando tem o mesmo comportamento, você pode omitir-
as opções.ps
do não permitem omitir o-
. A versão Linux possui opções com e sem-
, mas a maioria possui significados diferentes (compatibilidade entre BSD e System V).ps aux
... Então, posso estar (parcialmente) errado. Desculpe.Posso ser um dinossauro, mas acho que usar habitualmente "cvf" em vez de "-cvf" é provavelmente mais portátil. Eu imagino que a maioria das distribuições Linux use tar GNU, e eu acho que os * BSDs também, mas você encontrará Unixes proprietários que ainda usam o tar SysV antigo, que exigia que você não usasse '-' nas opções .
Eu não uso "-cvf" (ou "-xf" ou o que quer que seja) e não tenho problemas, mesmo com o último recurso do Arch linux.
E apenas como uma observação, acho que você pode usar as opções de comando "jar" padrão da Sun com ou sem um '-' também.
fonte
Existem poucos programas no UNIX que não seguem o padrão de opção atual.
Uma é
dd
, mas o dd foi derivado do programa de mainframe IBMDDR
(Disk Dump and Restore).Um é
ar
e o outro étar
. Pela minha informação, o tar queria ser semelhante ao ar.Todas as implementações de tar funcionam sem o - e nenhuma implementação útil requer o -. Portanto, se você gosta de escrever scripts portáteis, verifique o padrão SUSv2 e use apenas uma linha de comando compatível com o SUSv2.
fonte