J'ai appris à utiliser tar sans '-' pour les options, tar cvfz dir.tar.gz Directory/
mais j'ai récemment rencontré la tar -czvf
syntaxe légèrement différente (je pense que le 'f' doit être la dernière option dans ce cas).
Les deux fonctionnent sous Linux et Mac OS. Existe-t-il une syntaxe recommandée, avec ou sans '-' qui est plus portable entre les saveurs Unix?
tar
options
portability
ascobol
la source
la source
-f
doit être la dernière option est qu'elle prend un argument et que cet argument peut être donné en touchant l'option.tar -cvfz dir.tar.gz Directory
signifie créer une archive nomméez
contenant les fichiersdir.tar.gz
etDirectory
.Réponses:
tar
est l'une de ces anciennes commandes du temps où la syntaxe des options n'avait pas été normalisée. Étant donné que toutes les invocations utiles detar
nécessitent de spécifier une opération avant de fournir un nom de fichier, la plupart destar
implémentations interprètent leur premier argument comme une option même s'il ne commence pas par un-
. La plupart des implémentations actuelles acceptent un-
; la seule exception que je connaisse est Minix .Les anciennes versions de POSIX et Single Unix incluaient une
tar
commande sans no-
avant le spécificateur d'opération. Single Unix v2 avait les deux archiveurs traditionnelscpio
ettar
, mais très peu de drapeaux pouvaient être standardisés car les implémentations existantes étaient trop différentes, donc les normes ont introduit une nouvelle commandepax
, qui est le seul archiveur standard depuis Single Unix v3 . Si vous voulez une conformité standard, utilisezpax
, mais sachez que de nombreuses distributions Linux ne l'incluent pas dans leur installation de base, et il n'ypax
en a pas dans Minix . Si vous voulez la portabilité dans la pratique, utiliseztar cf filename.tar
.la source
pax
, elle est généralement livrée avec la pire implémentation connue de pax (GNU pax) qui devrait être évitée en raison de nombreux bogues.ps
commande a le même comportement, vous pouvez omettre-
les options.ps
ne vous permettent pas d'omettre le-
. La version Linux a des options avec et sans-
, mais la plupart ont des significations différentes (compatibilité BSD vs System V).ps aux
... Alors, je peux (en partie) me tromper. Désolé.Je suis peut-être un dinosaure, mais je pense que l'utilisation habituelle de "cvf" au lieu de "-cvf" est probablement plus portable. J'imagine que la plupart des distributions Linux utilisent GNU tar, et je suppose que les * BSD font aussi, mais vous trouverez Unixes propriétaires qui utilisent encore l'ancien goudron de SysV, qui a utilisé pour exiger que vous de ne pas utiliser un « - » dans les options .
Je n'utilise pas "-cvf" (ou "-xf" ou quoi que ce soit) et je n'ai aucun problème même avec le dernier cri Arch linux.
Et juste comme note latérale, je pense que vous pouvez également utiliser les options de commande "jar" standard de Sun avec ou sans '-'.
la source
Il y a eu peu de programmes sous UNIX qui ne suivent pas la norme d'option actuelle.
La première est
dd
, mais dd a été dérivé du programme IBM mainframeDDR
(vidage et restauration de disque).L'un est
ar
et l'autre l'esttar
. D'après mes informations, tar voulait être similaire à ar.Toutes les implémentations tar fonctionnent sans le - et aucune implémentation utile ne nécessite le -. Donc, si vous aimez écrire des scripts portables, vérifiez la norme SUSv2 et utilisez uniquement une ligne de commande compatible avec SUSv2.
la source