J'essayais la command tar
pour faire des archives avec l'extension .tar
.
s'il vous plaît jeter un oeil à la série de commands suivantes, j'ai essayé:
$ ls abc.jpg hello.jpg xjf.jpg $ tar -cfv test.tar *.jpg tar: test.tar: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors $ ls abc.jpg hello.jpg v xjf.jpg $ rm v $ ls abc.jpg hello.jpg xjf.jpg $ tar -cvf test.tar *.jpg abc.jpg hello.jpg xjf.jpg $ ls abc.jpg hello.jpg test.tar xjf.jpg
pourquoi il donne une réponse différente avec différentes séquences d'options? à savoir -cfv
vs cvf
.
d'après ce que j'ai appris dans le script bash, cette séquence d'options n'a pas d'importance.
Comme l'a dit @jcbermu, pour la plupart des programmes et dans la plupart des cas, l'ordre des drapeaux de command line n'est pas important. Cependant, certains drapeaux attendent une valeur. Plus précisément, le drapeau -f
de tar est:
-f, --file ARCHIVE use archive file or device ARCHIVE
Donc, tar
attend -f
d'avoir une valeur et cette valeur sera le nom du file tar qu'il crée. Par exemple, pour append tous les files .jpg
à une archive appelée foo.tar
, vous exécuterez
tar -f foo.tar *jpg
Ce que tu courais était
tar -cfv test.tar *.jpg
tar
comprend que "créer ( -c
) une archive appelée v
( -fv
), contenant les files test.tar
et toute fin en .jpg
.
Lorsque vous exécutez tar -cvf test.tar *.jpg
d'autre part, il prend test.tar
comme nom de l'archive et *jpg
comme list de files.
La command n'a pas d'importance tant que l'option n'a pas besoin d'une valeur. Dans votre cas, -f doit spécifier un nom de file.
Dans le premier cas ( tar -cfv ), la command considère que les noms de files de sortie sont v car c'est après -f .
Alors que d'autres ont fait remarquer que cela le traitait comme -c -fv
, je pense que je devrais noter que cela n'est fait que parce que le tiret a été utilisé, et ce comportement ne s'applique pas à toutes les versions de goudron. En mode legacy (pas de tiret), tar traite le premier argument spécialement, et un "f" ou "b" à l'intérieur consumra les mots pleins suivants après les options ( tar cbf 20 file.tar
ou tar cbf 20 file.tar
). Pour GNU tar, vous pouvez find plus de détails dans la documentation complète de Texinfo en exécutant des info tar styles
.
En général, vous ne devez pas countr sur l'un ou l'autre comportement, et spécifiez toujours f comme dernière option et placez un espace entre celui-ci et le nom de file. ( -b
n'est important que dans certaines situations lors de l'écriture sur des lecteurs de bandes physiques, de sorte qu'il peut être ignoré pour cette discussion).