$ 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-releasey 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
VERSIONcampo 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-releaseel 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-mbandera) 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
-vparámetro. Por lo tanto, el valor dellsb_release -rscomando se asigna a la variablevarque ayuda a imprimir el campo 4, el campo 5 de las líneas contiene la cadena14.04y existe si se encuentra uno. Finalmente, elcutcomando 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-releasearchivo que, en mi 13.10, se ve así:Todas las soluciones a continuación analizarán la segunda línea para producir
Saucy Salamander.grepEl
-omedio "imprime solo la parte correspondiente de la línea" y-Phabilita las expresiones regulares compatibles con Perl. Esto nos permite utilizar\Klo que descarta lo fue igualada hasta ese momento, lo que combinado con-olos 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=.awkEstablecer el separador de campos en
"yspacesignifica que los campos 3d y cuarto de la línea que contieneVERSION=son la cadena que buscamos.sedEl
-ninterruptor suprime la salida normal, no se imprimirán líneas. El-rpermite que las expresiones regulares extendidas. Luego, en las líneas que coincidenVERSION=, eliminaremos todo excepto las dos últimas palabras. Elpfinal significa imprimir.perlLos
-nmedios 'procesan cada línea de entrada con el script dado por-e".-lAgrega 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 (\bes un límite de palabra) y los imprime si la línea contieneVERSION=.coreutils
Aquí, solo utilizamos
grepla línea relevante y utilizamos lacutconfiguración del separador de campo enspace(-d ' ') e imprimimos todo, desde el segundo campo hasta el final de la línea. Eltr -dcomando eliminará"desde el final.Concha pura (robando descaradamente la
sourceidea 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
VERSIONen 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