Bashスクリプトからコマンドバージョンを取得する方法

Bashスクリプトからコマンドバージョンを取得する方法

したがって、質問が示すように、端末を使用するのではなく、bashスクリプトからコマンドバージョンを取得したいと思います。

利用可能なすべてのコマンドがディレクトリにファイルとして存在することを知っています。/usr/bin。しかし、バージョンは提供しておらず、catを(コマンド)ファイルの1つとして使用するときにいくつかの興味深い情報を提供します。

たとえばcat /usr/bin/man-与えられた -

興味深い結果

これは何で、バージョンを取得するには?

Ubuntu 20.04を使用しています。

ここに尋ねるのは愚かな質問であることを知っていますが、何も見つかりません。 :/

おそらく最終編集 - 許可された答えは私にとって効果的であり、この機能を使用しています。

後で、私は同様のことがうまくいくことにfoo --version気づきました。

ただし、バージョンを保存するために変数を使用する場合は、構文に注意する必要があります。私がしたことは間違っていました。これがうまくいくことを指摘した@Romeo Ninovに感謝します
foo --version

こんな愚かなミスをしてすみません。

ベストアンサー1

Debianベースのディストリビューションを使用している場合は、パッケージマネージャを使用してこの問題を解決できます。

$ dpkg -S '*bin/man'
man-db: /usr/bin/man

これは私たちman-dbがそれを持っていることを教えてくれます/usr/bin/man

$ dpkg -l man-db
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  man-db         2.10.2-1     amd64        tools for reading manual pages

man-dbそれからどのバージョンがインストールされたのか尋ねました。これは、展開の完了を示す追加のパッチを含むman-db展開リリースのアップストリームバージョンです。これにはビルドルールのみを含めることができますが、将来のバージョンで移植された修正も含めることができます。2.10.2-1-12.10.2

dpkg-query抽出バージョンで利用可能:

$ dpkg-query -W -f '${Version}\n' man-db
2.10.2-1

これらすべてを総合すると、次のようになります。

$ dpkg-query -W -f '${Version}\n' $(dpkg -S '*bin/man' | cut -d: -f1)
2.10.2-1

または入力できる機能.bashrc

ver() {
  package=$(dpkg -S "*bin/$1" | cut -d: -f1)
  version=$(dpkg-query -W -f '${Version}' "$package")
  printf "%s\n" "$version"
}

ver man
2.10.2-1

(後はですがdpkg -Sdpkg-query -Sdpkg-query -S合わせることはできません-W -f。)

おすすめ記事