Я всегда смущен, когда устанавливаю версию программного обеспечения, установленную в Ubuntu. Чтобы не набирать полный текст, чтобы получить версию типа <software> --version
, я всегда использую что-то вроде <software> -V
.
Но проблема в том, что не для всех программ это работает. Для некоторых я должен использовать <software> -v
, а для некоторых - полный --version
, чтобы получить версию.
Например,
wget, gedit, nano, mysql и т. Д. Все работает с -V (Capital V)
, но Php , Skype и, возможно, другие никогда не работали с -V , вместо этого я должен использовать -v (small v), чтобы получить версию:
php -V
Usage: php [options] [-f] <file> [--] [args...]
php [options] -r <code> [--] [args...]
php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
...
php -v
PHP 5.3.10-1ubuntu3.9 with Suhosin-Patch (cli) (built: Dec 12 2013 04:27:25)
...
Некоторые из них работают как с -v , так и с -V , как firefox . А некоторые даже не работают с -v или -V , такими как totem , wine и google-chrome .
Правильный способ получить версию программного обеспечения, установленного в системе, - это использовать инструменты менеджера пакетов!
--version
не является надежным способом сделать это по нескольким причинам:
Не все программы имеют исполняемые файлы. Библиотеки являются хорошим примером. Вы не можете проверить версию своего ядра, используя linux --version
, так как такой команды нет. Или ваша версия видео драйвера.
Не все исполняемые файлы имеют аргументы командной строки. Большинство так и делают, но программы с графическим интерфейсом не нужны, а некоторые нет.
--version
, как и любой аргумент командной строки, зависит от приложения. Это зависит от разработчика, чтобы реализовать его, и не существует «стандартного» per se, просто соглашение. Как вы заметили с -v|-V
, это не согласуется. Даже --help
не универсален.
Вывод формата --version
также не согласован. Некоторые печатают одну строку, некоторые печатают несколько. Некоторые печатают только номер версии , некоторые печатают также название программы.
Тем не менее, является стандартным, последовательным способом получения установленной версии любого программного обеспечения в вашей системе: спросите систему , а не программное обеспечение!
Благодаря наследию Debian, Ubuntu имеет мощную систему управления пакетами под названием apt
(фактически, dpkg
). Он управляет установленными пакетами, их зависимостями, доступными репозиториями, и версиями .
Существует несколько инструментов управления пакетами и внешних интерфейсов, которые можно использовать для запроса установленных пакетов. Вот некоторые из них, которые отображают версию:
apt-cache policy <package>
dpkg --list <package>
(вы можете использовать подстановочные знаки!)
И если вы не знаете, к какому пакету относится данная команда, вы можете узнать несколькими способами:
apt-cache search '<name>'
apt-file search '<path>'
И результат всегда последовательный, надежный, стандартный, потому что вы не спрашиваете отдельное программное обеспечение, созданное разными разработчиками, вы запрашиваете ваша система о своем статусе.
Например, вот результат поиска всех команд, упомянутых вами в одномоментном выходе :
$ dpkg --list wget gedit nano mysql-server skype php? firefox totem wine google-chrome*
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 Description +++-==========================-==========================-==================================================================== ii firefox 42.0+build2-0ubuntu0.12.04 Safe and easy web browser from Mozilla ii gedit 3.4.1-0ubuntu1 official text editor of the GNOME desktop environment ii google-chrome-stable 46.0.2490.80-1 The web browser from Google ii mysql-server 5.5.46-0ubuntu0.12.04.2 MySQL database server (metapackage depending on the latest version) ii nano 2.2.6-1 small, friendly text editor inspired by Pico ii php5 5.3.10-1ubuntu3.21 server-side, HTML-embedded scripting language (metapackage) ii skype 4.3.0.37-0ubuntu0.12.04.1 client for Skype VOIP and instant messaging service ii totem 3.0.1-0ubuntu21.1 Simple media player for the GNOME desktop based on GStreamer ii wget 1.13.4-2ubuntu1.2 retrieves files from the web ii wine 1.4-0ubuntu4.1 Microsoft Windows Compatibility Layer (meta-package)
Это подробные параметры, связанные с каждым приложением, поэтому некоторые приложения используют -V, другие используют -v другие или просто --version. Нет общего правила для соглашения об именах.
Я хочу сказать, что эти опции не имеют стандарта, так что вы можете найти опцию -X в одном приложении, аналогичную -R в другом ...
Стандарт:
app --version
-v
или -V
является только (вообще говоря) сокращенной формой для --version
. Вы никогда не увидите на странице руководства что-то вроде:
-v
Print version...
или:
-V
Print version...
, но вы все время будете видеть эти два варианта, сокращенную форму (если она существует) и стандартная форма, вместе. Что-то вроде:
-v, --version
Print version...
или:
-V, --version
Print version...
Но это зависит только от разработчиков, как они хотят реализовать свои приложения . Например, -v
используется в некоторых случаях как сокращенная форма для --verbose
(см. man wget
), или для --invert-match
(см. man grep
) ao, или в других случаях как отдельная (см. man awk
). или man ps
). [+1121]
Это обычно заканчивается тем, что вызывается опцией, называемой «многословие». Verbosity запускает программу и печатает как можно больше информации в терминал, из которого она была вызвана.
Некоторые программы, однако, не поддерживают подробный режим или не запускаются так, чтобы требовать какой-либо формы многословия, поэтому они выкладывают строку справки. Другие будут относиться к -v и -V одинаково.