com sed:
$ rpm --query centos-release | sed 's/^centos-release//;s/\.centos.*//'
7-4.1708.e17
Com apenas shell:
#!/bin/sh
a=$(rpm --query centos-release)
a=${a#centos-release }
a=${a%%\.centos.*}
echo "$a"
Estou tentando fazer com que o nome da distribuição e o número da versão entrem em conky. Atualmente, estou usando o seguinte
rpm --query centos-release
resultando em
centos-release 7-4.1708.e17.centos.x86_64
Como reduzo isso para apenas centos 7-4.1708.e17
?
Depois de tentar todas as sugestões acabei inserindo isso no meu conky
${font Roboto:bold:size=8}${goto 95}${color1}Distribution $alignr ${execi > 60 a=$(rpm --query centos-release)
a=${a#centos-release }
a=${a%%\.centos.*}
echo "$a"}
com esse resultado
centos-release-7-4.1708.e17
Uma abordagem mais geral para imprimir os nomes e detalhes dos pacotes RPM em formatos personalizados é a opção --qf
ou --queryformat
para o comando rpm
.
Para citar man rpm
em parte:
Query formats are modified versions of the standard printf(3) formatting. The format is made up of static strings (which may include standard C character escapes for newlines, tabs, and other special characters) and printf(3) type formatters. As rpm already knows the type to print, the type specifier must be omitted however, and replaced by the name of the header tag to be printed, enclosed by {} characters. Tag names are case insensitive....
Você pode ver a lista de nomes de tags que o rpm
conhece executando rpm --querytags
. É uma longa lista, então não vou reproduzi-la aqui na íntegra. No entanto, algumas tags de interesse incluem:
name
n
version
v
release
r
arch
nvra
nvr
description
Infelizmente, para o seu caso de uso exato , o name
do pacote em questão é centos-release
, não centos
conforme desejado e o release
é 4.1708.el7.centos
.
Assim, o mais próximo que você pode chegar da saída desejada com formatação de consulta rpm
pura é:
rpm -q centos-release --qf 'centos %{v}-%{r}\n'
(Note o uso de uma string estática para "centos" ao invés da tag %{n}
, que se expandiria para "centos-release". Observe também o espaço que você tem em sua saída desejada, embora possa ser um erro de digitação.)
Na minha caixa de teste, este comando produz:
$ rpm -q centos-release --qf 'centos %{v}-%{r}\n'
centos 7-2.1511.el7.centos.2.10
$
Se sua versão tiver um traço (ou espaço) entre centos-release
e o número que você pode ...
sed
( s/^centos-release.//
) e s/\.centos.*//
) $ rpm --query centos-release
centos-release-7-4.1708.el7.centos.x86_64
$ rpm --query centos-release | sed 's/^centos-release.//;s/\.centos.*//'
7-4.1708.el7
Tags command-line conky version centos