RHEL系のサーバ設定で結構重要になってくる「サーバがどのレポジトリを使っているか?
これを簡単に調べるワンライナーです。
環境
Rocky Linux 9.10
ワンライナー
echo -e "|Repo-id|Repo-name|\n|---|---|" && dnf repolist -q | awk '$1 != "repo" && NF > 1 {id=$1; $1=""; sub(/^[ \t]+/, ""); print "|" id "|" $0 "|"}'
出力結果
| Repo-id | Repo-name |
|---|---|
| appstream | Rocky Linux 9 - AppStream |
| baseos | Rocky Linux 9 - BaseOS |
| epel | Extra Packages for Enterprise Linux 9 - x86_64 |
| epel-cisco-openh264 | Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64 |
| extras | Rocky Linux 9 - Extras |
| remi-modular | Remi's Modular repository for Enterprise Linux 9 - x86_64 |
| remi-safe | Safe Remi's RPM repository for Enterprise Linux 9 - x86_64 |
| zabbix | Zabbix Official Repository - x86_64 |
| zabbix-non-supported | Zabbix Official Repository (non-supported) - x86_64 |
| zabbix-tools | Zabbix Official Repository (tools) - x86_64 |
と、このままマークダウン記事として貼り付けられるようになっています。
仕組み
1. echo -e "|Repo-id|Repo-name|\n|---|---|"
Markdown形式の表の「見出し」を無理やり作っている部分です。
echo -e: 「バックスラッシュ記法」を有効にするオプションです。\n: これがあることで、1行目の見出しと2行目の区切り線(|---|---|)の間で改行されます。
2. dnf repolist -q
システムのレポジトリ一覧を取得するコマンドです。
repolist: 有効なレポジトリの ID と名前を表示します。-q(quiet): 「メタデータの期限切れ確認」などの余計なメッセージを非表示にし、純粋なリストの結果だけを出力します。
3. awk '$1 != "repo" && NF > 1 { ... }'
受け取ったテキストを1行ずつ加工しています。
| 要素 | 意味 |
|---|---|
$1 != "repo" | 1番目の項目(Repo-id)が "repo" という文字列ではない行だけを処理する(見出し除外)。 |
NF > 1 | 項目の数(Number of Fields)が1つより多い行=空行などを除外。 |
id=$1 | 1番目の項目(Repo-id)を変数 id にキープ。 |
$1="" | 1番目の項目をデータから消去。これで残りの $0(行全体)が Repo-name だけになります。 |
sub(/^[ \t]+/, "") | 1列目を消した後に残ってしまう「先頭の空白」を削除して綺麗にします。 |
print "|"... | 最後に、Markdownの枠組み | で囲って出力します。 |
まとめ
- echo で表の見た目を作り、
- dnf でデータを静かに(-q)呼び出し、
- awk で「いらない行(repo)」を捨てつつ、1列目(ID)とそれ以降(Name)をバラバラにして
|で挟み直す。
という流れになっています。
コメントを残す