conkyに入るためにディストリビューション名とバージョン番号を取得しようとしています。現在、以下を使用しています
rpm --query centos-release
~につながる
centos-release 7-4.1708.e17.centos.x86_64
どのように減らすことができますかcentos 7-4.1708.e17
?
すべての提案を試した後、ついにこれを私の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"}
この結果、
centos-release-7-4.1708.e17
答え1
カスタム形式でRPMパッケージの名前と詳細を印刷するより一般的な方法は、コマンドまたは--qf
オプション--queryformat
を使用することですrpm
。
man rpm
部分引用:
クエリ形式は、標準の printf(3) 形式の修正バージョンです。形式は、静的文字列(改行、タブ、およびその他の特殊文字の標準C文字エスケープを含めることができます)とprintf(3)型フォーマッタで構成されます。 rpmは印刷するタイプを既に知っているので、タイプ指定子を省略し、{}文字で囲まれた印刷するヘッダータグの名前に置き換える必要があります。タグ名は大文字と小文字を区別しません。
rpm
を実行すると、既知のタグ名のリストを表示できますrpm --querytags
。これは長いリストなので、ここでは内容全体を再現しません。しかし、いくつかの興味深いタグは次のとおりです。
name
n
version
v
release
r
arch
nvra
nvr
description
残念ながらあなたには精密ユースケースでは、name
関連パッケージはであり、期待を満たしていcentos-release
ません。centos
release
4.1708.el7.centos
したがって、純粋なクエリ形式を使用して必要なものに最も近い出力は次rpm
のようになります。
rpm -q centos-release --qf 'centos %{v}-%{r}\n'
("centos" は "centos-release" で拡張されたラベルの代わりに静的文字列を使用します%{n}
。また、タイプミスかもしれませんが、必要な出力の空白も記録してください。)
[マイテスト]ボックスで、このコマンドは次のように生成します。
$ rpm -q centos-release --qf 'centos %{v}-%{r}\n'
centos 7-2.1511.el7.centos.2.10
$
答え2
sedを使用してください:
$ rpm --query centos-release | sed 's/^centos-release//;s/\.centos.*//'
7-4.1708.e17
ケースのみを含む:
#!/bin/sh
a=$(rpm --query centos-release)
a=${a#centos-release }
a=${a%%\.centos.*}
echo "$a"
答え3
centos-release
バージョンと番号の間にダッシュ(またはスペース)がある場合は、次のことができます。
sed
s/^centos-release.//
()を使用して "centos-release-"を ""に置き換えます。- ".centos.*" を ""(
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