$ lsb_release -c
Codename: trusty
$ cat /etc/issue
Ubuntu 14.04 LTS \n \l
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
Выходные данные вышеупомянутых команд показывают только частичное кодовое имя (то есть, trusty
). Как получить полное кодовое имя ( trusty tahr ) моей установленной системы Ubuntu?
command-line
release-management
Авинаш Радж
источник
источник
/etc/os-release
. Может быть, вы должны указать, что вы подразумеваете под Как получить полное кодовое имя (trusty tahr) моей установленной системы Ubuntu? , Вы хотите, чтобы он отображался только на терминале, или вам нужно, чтобы он был назначен переменной? Будет ли это использоваться на некоторых не-Ubuntu, Debian} системах?Ответы:
Не используя никаких внешних инструментов:
Вы можете просто использовать источник (команда source является точкой
.
),/etc/os-release
и у вас будет доступ ко всем переменным, определенным там:Редактировать. Если вы хотите удалить
14.04,
деталь (как попросил тердон), вы можете:Обратите внимание, что это немного неуклюже, так как в других дистрибутивах
VERSION
поле может иметь другой формат. Например, на моем Debian,Затем вы можете представить что-то вроде этого (в сценарии):
источник
. /etc/os-release && echo ${VERSION//[0-9,. ]/ }
?;D
.Мой вариант того, что уже предложено:
Самый короткий, самый быстрый ответ на сегодняшний день.
Если вам не нужно загружать
/etc/os-release
содержимое в текущую среду, вы можете подделать bash, думая, что он загружает скрипт довольно легко:источник
:D
.( . /etc/os-release && echo ${VERSION/*, /} )
.Grep:
Объяснение:
lsb_release -rs
-> Печатает установленную версию Ubuntu.grep $(lsb_release -rs) /usr/share/python-apt/templates/Ubuntu.info
-> Возьмите все строки, которые содержат вашу версию выпуска, в моем случае это 14.04.grep -m 1 "Description: Ubuntu "
-> Снова получает только соответствующую первую строку (из-за-m
флага), которая содержит строкуDescription: Ubuntu
.cut -d "'" -f2
-> печатает поле № 2 в соответствии с одинарной кавычкой разделителя'
Awk:
Объяснение:
Объявление и присвоение переменной в awk осуществляется через
-v
параметр. Так что значениеlsb_release -rs
команды присваивается переменной,var
которая inturn помогает печатать поле 4, поле 5 из строк содержит строку14.04
и существует, если она найдена. Наконец,cut
команда помогает удалить одинарные кавычки.источник
Команда, которую вы ищете:
Это очень некрасиво и не оптимизировано. Я уверен, что должен быть более простой метод, и это имеет некоторые проблемы.
источник
источник
Вот еще несколько вариантов. Все они анализируют
/etc/os-release
файл, который на моем 13.10 выглядит следующим образом:Все приведенные ниже решения будут анализировать вторую строку для производства
Saucy Salamander
.grep
Это
-o
означает «печатать только соответствующую часть строки» и-P
включает Perl-совместимые регулярные выражения. Это позволяет нам использовать ,\K
который отбрасывает все , что было подобрано до той точки, которая в сочетании с-o
помощью «печатать только то , что соответствует после\K
. Таким образом, фактическое регулярное выражение , используемое будет соответствовать два последних слова в строке , которая содержитVERSION=
.awk
Установка разделителя полей в
"
иspace
означает, что 3-е и 4-е поля строки, содержащей,VERSION=
являются строкой, за которой мы следуем .sed
В
-n
переключателе подавляет нормальный выход, никаких линий не будут напечатаны.-r
Позволяет расширенные регулярные выражения. Затем в совпадающих строкахVERSION=
мы удалим все, кроме двух последних слов. Вp
конце означает печать.perl
-n
Процесс означает»каждый линейный вход со сценарием , заданным-e
».-l
Добавляет символ новой строки к каждому печати вызову (и некоторым другим вещам , которые не являются relevevant здесь). Регулярное выражение соответствует последнему два слова (\b
граничное слово) и печатает их, если строка содержитVERSION=
.Coreutils
Здесь мы просто берем
grep
соответствующую строку и используемcut
установку разделителя полей наspace
(-d ' '
) и выводим все, начиная со 2-го поля и до конца строки. Командаtr -d
удалит"
с конца.Чистая оболочка (бесстыдно крадет умную
source
идею @ gniourf_gniourf ):Исходный
.
код - файл, который делает переменные доступными для оболочки, и я использую возможности манипулирования строками в bash для удаления номеров версий.источник
Используя регулярные выражения, вы можете сделать это:
Объяснение:
Это ищет строку с
VERSION
в файле/etc/os-release
. Затем он находит 2 последовательных слова, разделенных пробелом (регулярное выражение Perl). Флаг -o содержит только то, что соответствует поиску.Вы должны использовать
[a-zA-Z]
вместо `w`, чтобы не включать цифры.источник