tar cvf ou tar -cvf?

24

Eu aprendi a usar o tar sem '-' para opções, como tar cvfz dir.tar.gz Directory/ , mas recentemente encontrei a sintaxe tar -czvf ligeiramente diferente (acho que a 'f' deve ser a última opção neste caso). / p>

Ambos trabalham no linux e no Mac OS. Existe uma sintaxe recomendada, com ou sem '-', que é mais portátil em relação aos sabores unix?

    
por ascobol 06.01.2012 / 00:08

3 respostas

27

tar é um daqueles comandos antigos dos dias em que a sintaxe da opção não tinha sido padronizada. Como todas as chamadas úteis de tar exigem a especificação de uma operação antes de fornecer qualquer nome de arquivo, a maioria das implementações tar interpreta seu primeiro argumento como uma opção, mesmo que não comece com - . A maioria das implementações atuais aceitam - ; a única exceção que eu conheço é Minix .

Versões mais antigas de POSIX e Unix Unix incluíam um comando tar sem - antes do especificador de operação. O único Unix v2 tinha os dois arquivadores tradicionais cpio e tar , mas muito poucos sinalizadores poderiam ser padronizados porque as implementações existentes eram muito diferentes, então os padrões introduziram um novo comando, pax , que é o único arquivador padrão desde Somente Unix v3 . Se você quiser conformidade padrão, use pax , mas cuidado com o fato de que muitas distribuições Linux não o incluem em sua instalação base, e não há pax em Minix . Se você quiser portabilidade na prática, use tar cf filename.tar .

    
por 06.01.2012 / 01:22
13

Eu 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 usa o GNU tar, e eu acho que os * BSDs também, mas você vai encontrar Unixes proprietários que ainda usam o antigo SysV tar, que costumava exigir que você não usasse a '-' nas opções.

Eu não uso "-cvf" (ou "-xf" ou qualquer outra coisa) e não tenho problemas mesmo com o Arch linux de ponta.

E como uma nota lateral, acho que você pode usar as opções de comando "jar" padrão Sun com ou sem '-' também.

    
por 06.01.2012 / 00:23
3

Existem poucos programas no UNIX que não seguem o padrão de opções atual.

Um é dd , mas dd foi derivado do programa de mainframe IBM DDR (Disk Dump and Restore).

Um é ar e o outro é tar . De minhas informações, o tar queria ser semelhante ao ar.

Todas as implementações de alcatrão funcionam sem o - e nenhuma implementação útil requer o -. Portanto, se você gosta de escrever scripts portáveis, verifique o padrão SUSv2 e use apenas uma linha de comando compatível com SUSv2.

    
por 09.09.2015 / 22:35