Aprendí a usar tar sin '-' para las opciones, tar cvfz dir.tar.gz Directory/
pero recientemente encontré una tar -czvf
sintaxis ligeramente diferente (creo que 'f' debe ser la última opción en este caso).
Ambos funcionan en Linux y Mac OS. ¿Existe una sintaxis recomendada, con ou sin '-', que es más portátil en todos los sabores de Unix?
tar
options
portability
ascobol
fuente
fuente
-f
debe ser la última opción es porque toma un argumento y ese argumento puede darse tocando la opción.tar -cvfz dir.tar.gz Directory
significa crear un archivo llamadoz
que contiene los archivosdir.tar.gz
yDirectory
.Respuestas:
tar
es uno de esos comandos antiguos de los días en que la sintaxis de la opción no se había estandarizado. Debido a que todas las invocaciones útilestar
requieren la especificación de una operación antes de proporcionar cualquier nombre de archivo, la mayoría de lastar
implementaciones interpretan su primer argumento como una opción, incluso si no comienza con a-
. La mayoría de las implementaciones actuales aceptan a-
; La única excepción que conozco es Minix .Las versiones anteriores de POSIX y Single Unix incluían un
tar
comando sin-
antes del especificador de operación. Single Unix v2 tenía archivadores tradicionalescpio
ytar
, pero muy pocos indicadores podían estandarizarse porque las implementaciones existentes eran demasiado diferentes, por lo que los estándares introdujeron un nuevo comandopax
, que es el único archivador estándar desde Single Unix v3 . Si desea el cumplimiento estándar, usepax
, pero tenga en cuenta que muchas distribuciones de Linux no lo incluyen en su instalación base, y no hay ningunapax
en Minix . Si desea portabilidad en la práctica, usetar cf filename.tar
.fuente
pax
, generalmente viene con la implementación de pax peor conocida (GNU pax) que debe evitarse debido a muchos errores.ps
comando tiene el mismo comportamiento, puede omitir-
para las opciones.ps
no te permiten omitir el-
. La versión de Linux tiene opciones con y sin-
, pero la mayoría tiene diferentes significados (compatibilidad BSD vs sistema V).ps aux
... Entonces, podría estar (en parte) equivocado. Lo siento.Puedo ser un dinosaurio, pero creo que usar habitualmente "cvf" en lugar de "-cvf" es probablemente más portátil. Me imagino que la mayoría de las distribuciones de Linux usan tar GNU, y supongo que los * BSD también lo hacen, pero encontrará Unixes patentados que todavía usan el viejo tar SysV, que solía requerir que no use un '-' en las opciones .
No uso "-cvf" (o "-xf" o lo que sea) y no tengo problemas ni siquiera con Arch Linux.
Y solo como nota al margen, creo que también puede usar las opciones de comando "jar" estándar de Sun con o sin un '-'.
fuente
Ha habido pocos programas en UNIX que no siguen el estándar de opción actual.
Una es
dd
, pero dd se derivó del programa mainframe de IBMDDR
(Disk Dump and Restore).Uno es
ar
y el otro estar
. Según mi información, tar quería ser similar a ar.Todas las implementaciones de tar funcionan sin el - y ninguna implementación útil requiere el -. Entonces, si desea escribir scripts portátiles, verifique el estándar SUSv2 y solo use una línea de comandos que sea compatible con SUSv2.
fuente