2011-08-15 21 views

Respuesta

111
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF 
  • -q suprime la salida detallada del programa de descompresión
  • -c extraerá en stdout

Ejemplo:

$ unzip -q -c commons-lang-2.4.jar META-INF/MANIFEST.MF 

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.7.0 
Created-By: 1.5.0_13-119 (Apple Inc.) 
Package: org.apache.commons.lang 
Extension-Name: commons-lang 
Specification-Version: 2.4 
Specification-Vendor: Apache Software Foundation 
Specification-Title: Commons Lang 
Implementation-Version: 2.4 
Implementation-Vendor: Apache Software Foundation 
Implementation-Title: Commons Lang 
Implementation-Vendor-Id: org.apache 
X-Compile-Source-JDK: 1.3 
X-Compile-Target-JDK: 1.2 

Como alternativa, puede usar -p en lugar de -q -c.

-p extraer archivos a la tubería (stdout). Nada más que los datos del archivo se envían a stdout, y los archivos siempre se extraen en formato binario, tal como se almacenan (sin conversiones).

+1

Sé que este hilo es antiguo, pero para quien corresponda: A partir del manual, la extracción con -p o -c imprimirá la salida en formato binario. Si necesita analizar esta salida de alguna manera (por ejemplo, a una matriz asociativa), debe forzar la representación de texto con un argumento, para que sea correcto. – tcigler

12

uso unzip:

$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF 

que en silencio (-q) leer la ruta META-INF/MANIFEST.MF del jarfile (que se comprime utilizando el formato zip) a la salida estándar (-c). A continuación, puede canalizar la salida de otro comando para responder a preguntas como '¿cuál es la clase principal de este frasco:

$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2 

(esto elimina todas las líneas que no contienen la cadena Main-Class, luego se divide la línea en : , manteniendo solo el segundo campo, el nombre de la clase). Por supuesto, defina $JARFILE_PATH apropiadamente o reemplace $JARFILE_PATH con la ruta a un archivo jar que le interese.

4

Dependiendo de su distribución, instale el paquete unzip. Luego simplemente emita

unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF 

Esto arrojará el contenido a STDOUT.

HTH

0

$ tar xfO some.jar META-INF/MANIFEST.MF

x extractos y O redirige a stdout.

Nota: Parecen funcionar solo en bsdtar, no en GNU tar.

0

Otros han estado publicando sobre el uso de unzip -p y tuberías para grep o awk o lo que sea que necesite. Si bien eso funciona en la mayoría de los casos, vale la pena señalar que, debido al límite de 72 caracteres por línea de MANIFEST.MF, es posible que esté reemplazando las claves cuyos valores están divididos en varias líneas y, por lo tanto, será muy difícil de analizar. Me encantaría ver una herramienta CLI que realmente pueda extraer un valor representado del archivo.

http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html

Cuestiones relacionadas