¿Cómo verifico la versión de virtualbox desde la CLI?

65

Estoy escribiendo un script Bash para almacenar el número de versión de Virtualbox , pero no puedo tener éxito.

Mi guión es:

#!/bin/bash
installed_virtualbox=$(virtualbox --version) # --version this is what I want to change

Lo intenté

virtualbox --version
virtualbox -v
virtualbox -V
virtualbox --Version

Todo parece abrir el virtualbox en lugar de la salida.
virtualbox --helpda el número de versión, pero la salida es demasiado larga para almacenarla en variable y usarla más tarde.

Braiam
fuente

Respuestas:

107

Para imprimir o ver la versión actual de VirtualBox , debe usar el siguiente comando:

vboxmanage --version

que luego imprimirá la versión actual como se ve a continuación;

ingrese la descripción de la imagen aquí

Consulte 8.2. Descripción general de los comandos en el sitio oficial de VirtualBox para obtener más información.


Para imprimir la versión con el script, vea a continuación:

#!/bin/bash
echo $(vboxmanage --version)

Espero eso ayude.

AzkerM
fuente
1
echo $(vboxmanage --version | head -n 1 | awk '{print $NF}')y echo $(vboxmanage --version)cual es la diferencia no son lo mismo?
souravc
@souravc: en su comentario aquí, utiliza --version, que genera solo una línea y un campo; por lo tanto, usar heady awkpara recortar es redundante, y sí, generan el mismo resultado. En su respuesta a continuación, se utiliza --helpen lugar de --version, en cuyo caso, heady awkes de hecho necesario el recorte ... pero aún así obtener información menos precisa, ya que la versión que se encuentra a través de --helpsólo #. #. # Y --versionque produce #. #. # r # (versión con información de revisión).
DreadPirateShawn
@DreadPirateShawn tienes razón ahora es innecesario. En ese momento vboxmanagesolía venir con otra información, por eso lo propuse. Puedes ver la edición , OP aceptó mi sugerencia. ¿Por qué haría las cosas complejas :)
souravc
@souravc - Ahhh ... es curioso cómo el contexto aclara las cosas. :-P Entonces ... excelente consejo. :-)
DreadPirateShawn
Desde VBox 5.0, también vbox-img --versionpuede imprimir la versión.
kenorb
7

Puedes probar esto,

virtualbox --help | head -n 1 | awk '{print $NF}'

o

$ echo $(virtualbox --help | head -n 1 | awk '{print $NF}')
4.3.6

Cómo funciona

Paso 1

virtualbox --help

le da una salida larga que dice muchas opciones, etc. Pero sus primeras líneas son como,

Oracle VM VirtualBox Manager 4.3.6
(C) 2005-2013 Oracle Corporation
Todos los derechos reservados.
...

Paso 2

| head -n 1

|se llama pipa. Tiene una gran aplicación en la línea de comandos. Pasa toda la expresión al siguiente comando head. head -n 1imprime solo la primera línea. ver man headpara más. En esta etapa, la salida es solo

Oracle VM VirtualBox Manager 4.3.6

Paso 3

| awk '{print $NF}'

Nuevamente, las cosas restantes se pasan a awk. En esta etapa, awkve la línea completa como combinaciones de pocos campos separados por espacio e imprime solo el último campo de la expresión anterior. Entonces solo obtienes la versión. Mira man awkpara más.

souravc
fuente
Sería genial si pudiera desglosar el comando y explicar qué hace cada parte.
jobin
@Jobin por favor vea mi edición.
souravc
2

puede conocer la versión del paquete instalado con dpkg y grep con tubería

dpkg -l | grep virtualbox | awk '{print $3}'
Mina Eid
fuente
¿Qué hace cada uno de estos comandos canalizados? Sea detallado.
jobin
1
avi @ avi-IdeaPad-Z500: ~ $ virtualbox --help
Oracle VM VirtualBox Manager 4.3.6

Entonces ejecute el siguiente comando,

virtualbox --help | awk '/Oracle/{ print $5 }'

Salida:

4.3.6

awk '/Oracle/{ print $5 }'

Busca la línea que consiste en la palabra Oracle. En caso afirmativo, el comando toma la quinta columna en esa línea y la redirige a la salida estándar. Si dicha palabra no estaba presente en ninguna línea, no muestra nada.

Avinash Raj
fuente