$ lsb_release -c
Codename: trusty
$ cat /etc/issue
Ubuntu 14.04 LTS \n \l
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
La salida de los comandos anteriores muestra solo el nombre del código parcial (es decir, trusty
). ¿Cómo obtengo el nombre en código completo ( trusty tahr ) de mi sistema Ubuntu instalado?
command-line
release-management
Avinash Raj
fuente
fuente
/etc/os-release
. Tal vez debería especificar qué quiere decir con ¿Cómo obtengo el nombre en código completo (trusty tahr) de mi sistema Ubuntu instalado? . ¿Solo desea repetirlo en el terminal o necesita asignarlo a una variable? ¿Se utilizará en algunos sistemas que no sean {Ubuntu, Debian}?Respuestas:
Sin usar herramientas externas:
Puede simplemente fuente (el comando fuente es un punto
.
)/etc/os-release
y tendrá acceso a todas las variables definidas allí:Editar. Si desea eliminar la
14.04,
pieza (según lo solicitado por terdon), puede:Tenga en cuenta que esto es un poco torpe, ya que en otras distribuciones, el
VERSION
campo puede tener un formato diferente. Por ejemplo, en mi debian,Entonces, podrías imaginar algo como esto (en un script):
fuente
. /etc/os-release && echo ${VERSION//[0-9,. ]/ }
?;D
.Mi variante sobre lo que ya se ofrece:
La respuesta más corta y bastarda hasta la fecha.
Si no le importa cargar
/etc/os-release
el contenido en su entorno actual, puede fingir que Bash cree que está cargando un script con bastante facilidad:fuente
:D
.( . /etc/os-release && echo ${VERSION/*, /} )
.Grep:
Explicación:
lsb_release -rs
-> Imprime tu versión de Ubuntu instalada.grep $(lsb_release -rs) /usr/share/python-apt/templates/Ubuntu.info
-> Toma todas las líneas que contienen tu versión de lanzamiento, en mi caso es 14.04.grep -m 1 "Description: Ubuntu "
-> De nuevo, solo toma la primera línea coincidente (debido a la-m
bandera) que contiene la cadenaDescription: Ubuntu
.cut -d "'" -f2
-> imprime el campo número 2 de acuerdo con la comilla simple del delimitador'
Awk:
Explicación:
La declaración y asignación de Variable en awk se realiza a través del
-v
parámetro. Por lo tanto, el valor dellsb_release -rs
comando se asigna a la variablevar
que ayuda a imprimir el campo 4, el campo 5 de las líneas contiene la cadena14.04
y existe si se encuentra uno. Finalmente, elcut
comando ayuda a eliminar las comillas simples.fuente
El comando que estás buscando es:
Esto es muy feo y no está optimizado. Estoy seguro de que debería haber un método más fácil y esto tiene algunos problemas.
fuente
fuente
Aquí hay algunas opciones más. Todos analizan el
/etc/os-release
archivo que, en mi 13.10, se ve así:Todas las soluciones a continuación analizarán la segunda línea para producir
Saucy Salamander
.grep
El
-o
medio "imprime solo la parte correspondiente de la línea" y-P
habilita las expresiones regulares compatibles con Perl. Esto nos permite utilizar\K
lo que descarta lo fue igualada hasta ese momento, lo que combinado con-o
los medios "imprimir sólo lo que coincide después de la\K
. Por lo tanto, la expresión regular efectivamente usado coincida con las dos últimas palabras de una línea que contieneVERSION=
.awk
Establecer el separador de campos en
"
yspace
significa que los campos 3d y cuarto de la línea que contieneVERSION=
son la cadena que buscamos.sed
El
-n
interruptor suprime la salida normal, no se imprimirán líneas. El-r
permite que las expresiones regulares extendidas. Luego, en las líneas que coincidenVERSION=
, eliminaremos todo excepto las dos últimas palabras. Elp
final significa imprimir.perl
Los
-n
medios 'procesan cada línea de entrada con el script dado por-e
".-l
Agrega un carácter de nueva línea a cada llamada impresa (y algunas otras cosas que no son relevantes aquí). La expresión regular coincide con las dos últimas palabras (\b
es un límite de palabra) y los imprime si la línea contieneVERSION=
.coreutils
Aquí, solo utilizamos
grep
la línea relevante y utilizamos lacut
configuración del separador de campo enspace
(-d ' '
) e imprimimos todo, desde el segundo campo hasta el final de la línea. Eltr -d
comando eliminará"
desde el final.Concha pura (robando descaradamente la
source
idea inteligente de @ gniourf_gniourf ):Las
.
fuentes del archivo que hace que las variables estén disponibles para el shell y yo uso las capacidades de manipulación de cadenas de bash para eliminar los números de versión.fuente
Usando regex podrías hacer esto:
Explicación:
Esto busca la línea con
VERSION
en el archivo/etc/os-release
. Luego encuentra 2 palabras sucesivas separadas por un espacio (Perl regex). La bandera -o mantiene solo lo que coincide con la búsqueda.[a-zA-Z]
Debe usar en lugar de 'w' para evitar incluir dígitos.fuente