Как найти имя своего дистрибутива через командную строку?

Вы можете использовать find для создания своих аргументов - хотя и немного длинновато:

 find -mindepth 1 ! -wholename './config' ! -wholename './config/*'

mindepth 1 , чтобы исключить ]. и два исключения полное имя для самого каталога, а также его содержимого.

tar -xzf deploy/deploy.gz --exclude="deploy" \
$( find -mindepth 1 ! -wholename './config' ! -wholename './config/*' )
3
19.04.2016, 13:24
3 ответа

Вот фрагмент сценария оболочки, который выполняет задание:

# try various methods, in order of preference, to detect distro
# store result in variable '$distro'
if type lsb_release >/dev/null 2>&1 ; then
   distro=$(lsb_release -i -s)
elif [ -e /etc/os-release ] ; then
   distro=$(awk -F= '$1 == "ID" {print $2}' /etc/os-release)
elif [ -e /etc/some-other-release-file ] ; then
   distro=$(ihavenfihowtohandleotherhypotheticalreleasefiles)
fi

# convert to lowercase
distro=$(printf '%s\n' "$distro" | LC_ALL=C tr '[:upper:]' '[:lower:]')

# now do different things depending on distro
case "$distro" in
   debian*)  commands-for-debian ;;
   centos*)  commands-for-centos ;;
   ubuntu*)  commands-for-ubuntu ;;
   mint*)    commands-for-mint ;;
   *)        echo "unknown distro: '$distro'" ; exit 1 ;;
esac

Вам может потребоваться более полезное действие по умолчанию ( * ) в операторе case , чем печать сообщения об ошибке и прерывание .

1
27.01.2020, 21:30

Вы можете использовать :

  • cat /etc/os-release или lsb_release -aдля Debian
  • cat /etc/*-release или lsb_release -a для CentOS/Ubuntu.
0
27.01.2020, 21:30

Попробуйте следующую команду :

cat /etc/*-release

или

lsb_release -a

Найдя только имя дистрибутива и версию:

cat /etc/issue
0
27.01.2020, 21:30

Теги

Похожие вопросы