したがって、質問が示すように、端末を使用するのではなく、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
-1
2.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 -S
、dpkg-query -S
とdpkg-query -S
合わせることはできません-W -f
。)