$ 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"
As saídas dos comandos acima mostram apenas o nome do código parcial (ou seja, trusty
). Como obtenho o nome de código completo ( trusty tahr ) do meu sistema Ubuntu instalado?
command-line
release-management
Avinash Raj
fonte
fonte
/etc/os-release
. Talvez você deva especificar o que você quer dizer com Como obtenho o nome de código completo (trusty tahr) do meu sistema Ubuntu instalado? . Você deseja repetir isso no terminal ou precisa que ele seja atribuído a uma variável? Isso será usado em alguns sistemas que não são o {Ubuntu, Debian}?Respostas:
Usando nenhuma ferramenta externa:
Você pode apenas fonte (o comando fonte é um ponto
.
)/etc/os-release
e terá acesso a todas as variáveis definidas lá:Editar. Se você deseja remover a
14.04,
peça (conforme solicitado por terdon), você pode:Observe que isso é um pouco desajeitado, pois em outras distribuições, o
VERSION
campo pode ter um formato diferente. Por exemplo, no meu debian,Então, você pode imaginar algo assim (em um script):
fonte
. /etc/os-release && echo ${VERSION//[0-9,. ]/ }
:?;D
.Minha variante do que já é oferecido:
A resposta mais curta e descarada até o momento.
Se você não se importa em carregar
/etc/os-release
o conteúdo do seu ambiente atual, você pode fingir que está carregando um script com bastante facilidade:fonte
:D
.( . /etc/os-release && echo ${VERSION/*, /} )
.Grep:
Explicação:
lsb_release -rs
-> Imprime sua versão do Ubuntu instalada.grep $(lsb_release -rs) /usr/share/python-apt/templates/Ubuntu.info
-> Pegue todas as linhas que contêm a sua versão de lançamento, no meu caso é 14.04.grep -m 1 "Description: Ubuntu "
-> Novamente pega apenas a primeira linha correspondente (por causa de-m
bandeira) que contém a stringDescription: Ubuntu
.cut -d "'" -f2
-> imprime o número do campo 2 de acordo com a aspas simples do delimitador'
Awk:
Explicação:
Declarar e atribuir variável no awk é feito através do
-v
parâmetro. Assim, o valor dolsb_release -rs
comando é atribuído à variávelvar
que inturn ajuda a imprimir o campo 4, o campo 5 das linhas contém a string14.04
e existe se for encontrado um.Finalmente, ocut
comando ajuda a remova as aspas simples.fonte
O comando que você está procurando é:
Isso é muito feio e não otimizado. Tenho certeza de que deve haver um método mais fácil e isso tem alguns problemas.
fonte
fonte
Aqui estão mais algumas opções. Todos eles analisam o
/etc/os-release
arquivo que, no meu 13.10, fica assim:Todas as soluções abaixo analisarão a segunda linha a ser produzida
Saucy Salamander
.grep
O
-o
meio "imprime apenas a parte correspondente da linha" e-P
habilita expressões regulares compatíveis com Perl. Isso nos permite usar\K
quais descarta o que foi correspondido até esse ponto, que combinado com os-o
meios "imprime apenas o que corresponde após o\K
. Portanto, a expressão regular real usada corresponderá às duas últimas palavras de uma linha que contémVERSION=
.awk
Definir o separador de campos como
"
espace
significa que os campos 3d e 4º da linha que contémVERSION=
são a string que buscamos.sed
O
-n
interruptor suprime a saída normal, nenhuma linha será impressa. O-r
permite expressões regulares estendidas. Em seguida, nas linhas correspondentesVERSION=
, excluiremos tudo, exceto as duas últimas palavras. Op
final significa imprimir.perl
O
-n
meio 'processa cada linha de entrada com o script fornecido por-e
". Ele-l
adiciona um caractere de nova linha a cada chamada impressa (e algumas outras coisas que não são relevantes aqui). A expressão regular corresponde às duas últimas palavras (\b
é um limite de palavra) e imprime-os se a linha contiverVERSION=
.coreutils
Aqui, usamos apenas
grep
a linha relevante e usamos acut
configuração do separador de campo paraspace
(-d ' '
) e a impressão de tudo, desde o 2º campo até o final da linha. Otr -d
comando excluirá o"
do final.Casca pura (roubar descaradamente a
source
idéia inteligente de @ gniourf_gniourf ):As
.
fontes do arquivo que disponibiliza as variáveis para o shell e eu uso os recursos de manipulação de string do bash para remover os números de versão.fonte
Usando regex, você pode fazer isso:
Explicação:
Isso pesquisa a linha com
VERSION
no arquivo/etc/os-release
. Em seguida, ele encontra duas palavras sucessivas separadas por um espaço (Perl regex). O sinalizador -o mantém apenas o que corresponde à pesquisa.Você precisa usar em
[a-zA-Z]
vez de `w 'para evitar a inclusão de dígitos.fonte