බෙදාහැරීමේ නම සහ අනුවාද අංකය සරල ෂෙල් පිටපතකින් ලබා ගන්නේ කෙසේද?


204

මම උබුන්ටු සහ සෙන්ටෝස් බෙදාහැරීම් මත ධාවනය කළ හැකි සරල බාෂ් ස්ක්‍රිප්ට් එකක වැඩ කරමින් සිටිමි (ඩෙබියන් සහ ෆෙඩෝරා / ආර්එච්එල් සඳහා සහය වැඩි වනු ඇත) සහ පිටපත ක්‍රියාත්මක වන බෙදාහැරීමේ නම සහ අනුවාදය දැන ගැනීමට මට අවශ්‍යය ( නිශ්චිත ක්‍රියාවන් අවුලුවාලීම සඳහා, උදාහරණයක් ලෙස නිධි නිර්මාණය කිරීම). මෙතෙක් මා සතුව ඇත්තේ මෙයයි:

OS=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./')

if [ -z "$OS" ]; then
    OS=$(awk '{print $1}' /etc/*-release | tr '[:upper:]' '[:lower:]')
fi

if [ -z "$VERSION" ]; then
    VERSION=$(awk '{print $3}' /etc/*-release)
fi

echo $OS
echo $ARCH
echo $VERSION

මෙය වැඩ කරන බවක් පෙනේ , නැවත පැමිණීම ubuntuහෝ centos(මම අන් අය උත්සාහ කර නැත) මුදා හැරීමේ නම ලෙස. කෙසේ වෙතත්, මෙය සොයා ගැනීමට පහසු, විශ්වාසදායක ක්‍රමයක් තිබිය යුතු යැයි මට හැඟේ - එය සත්‍යයක් ද?

එය RedHat සඳහා ක්‍රියා නොකරයි. / etc / redhat-release අඩංගු වේ: Redhat Linux Enterreprise release 5.5

එබැවින්, අනුවාදය තෙවන වචනය නොවේ, ඔබ භාවිතා කිරීම වඩා හොඳය:

OS_MAJOR_VERSION=`sed -rn 's/.*([0-9])\.[0-9].*/\1/p' /etc/redhat-release`
OS_MINOR_VERSION=`sed -rn 's/.*[0-9].([0-9]).*/\1/p' /etc/redhat-release`
echo "RedHat/CentOS $OS_MAJOR_VERSION.$OS_MINOR_VERSION"

ඔබට විශ්වාසද +-release? You ලදායී ලෙස ඔබ එය එසේ වනු ඇතැයි උපකල්පනය කරයි /etc/lsb-release, එබැවින් සමහර විට එය එසේ අමතන්න.
මයිකල්

@Mikel: මම වෙනුවට *සමග +එම ප්රකාශය formating වළක්වා ගැනීමට කළ යුත්තේ එය etc/*-release, එය වැඩ කටයුතු පෙනේ.
ඇලික්ස් ඇක්සෙල්

8
ආකෘතිකරණය නිවැරදිව ලබා ගැනීම සඳහා කිසි විටෙක සින්ටැක්ස් දෝෂයක් හඳුන්වා නොදෙන්න. හැරුණු විට, ආකෘතිකරණය වැරදි වන්නේ පෙරදසුනෙහි පමණි, අවසාන දර්ශනය ටැග් වලින් වාක්‍ය ඛණ්ඩය ලබා ගනී.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

කිසිවෙකු මෙම fe ගැන සඳහන් කර uname -rv | grep -i "name_of_distro"පිටවීමේ කේතය භාවිතා නොකරන්නේ ඇයි ?
පලාගිය

Answers:


196

ලබා ගැනීමට OSසහ VER, නවතම ප්‍රමිතිය පෙනේ /etc/os-release. ඊට පෙර, lsb_releaseසහ /etc/lsb-release. ඊට පෙර, එක් එක් බෙදාහැරීම සඳහා ඔබට විවිධ ගොනු සෙවීමට සිදු විය.

මෙන්න මම යෝජනා කරන දේ

if [ -f /etc/os-release ]; then
    # freedesktop.org and systemd
    . /etc/os-release
    OS=$NAME
    VER=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
    # linuxbase.org
    OS=$(lsb_release -si)
    VER=$(lsb_release -sr)
elif [ -f /etc/lsb-release ]; then
    # For some versions of Debian/Ubuntu without lsb_release command
    . /etc/lsb-release
    OS=$DISTRIB_ID
    VER=$DISTRIB_RELEASE
elif [ -f /etc/debian_version ]; then
    # Older Debian/Ubuntu/etc.
    OS=Debian
    VER=$(cat /etc/debian_version)
elif [ -f /etc/SuSe-release ]; then
    # Older SuSE/etc.
    ...
elif [ -f /etc/redhat-release ]; then
    # Older Red Hat, CentOS, etc.
    ...
else
    # Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
    OS=$(uname -s)
    VER=$(uname -r)
fi

මම හිතන්නේ unameලබා ගැනීමට ARCHතවමත් හොඳම ක්‍රමයයි. නමුත් ඔබ දුන් උදාහරණය පැහැදිලිවම හසුරුවන්නේ ඉන්ටෙල් පද්ධති පමණි. එක්කෝ මම BITSමේ වගේ දෙයක් කියන්නම් :

case $(uname -m) in
x86_64)
    BITS=64
    ;;
i*86)
    BITS=32
    ;;
*)
    BITS=?
    ;;
esac

නැතහොත් ARCHවඩාත් සුලභ, නමුත් සැක සහිත අනුවාදයන් ලෙස වෙනස් කරන්න: x86සහ x64හෝ ඊට සමාන:

case $(uname -m) in
x86_64)
    ARCH=x64  # or AMD64 or Intel64 or whatever
    ;;
i*86)
    ARCH=x86  # or IA32 or Intel32 or whatever
    ;;
*)
    # leave ARCH as-is
    ;;
esac

නමුත් ඇත්ත වශයෙන්ම එය ඔබට භාරයි.


2
මම lsb_release සඳහා පරීක්ෂා කර ලබා ගත හැකි නම් එය භාවිතා කරමි, නමුත් එය සෑම තැනකම ලබාගත නොහැක. උදාහරණයක් ලෙස, එය ෆෙඩෝරා 14 හි පෙරනිමි ස්ථාපනයෙහි නොමැත.
ස්ටීවන් ඩී

ඇත්තටම? ඔබ සමග එය අක්ෂර වින්යාස උත්සාහ කළාද -හා _? සමහර විට එය එවැනි /lib/lsbහෝ වෙනත් තැනක විය හැකිය. rpm -qa "lsb*"මුද්‍රණය කරන්නේ කුමක්ද?
මයිකල්

1
rpm -qa "lsb*කිසිවක් මුද්‍රණය නොකරයි. එයට අනුව yum provides */lsb_releaseredhat-lsb නම් පැකේජයක අඩංගු වන අතර එය පෙරනිමියෙන් ස්ථාපනය කර නොමැති බව මම අනුමාන කරමි. කෙසේ වෙතත්, මම ෆෙඩෝරා විශේෂ expert යෙක් නොවෙමි, මේවා මා සතුව ඇති අහඹු ෆෙඩෝරා වීඑම් හි ප්‍රති results ල පමණක් වන අතර එය ඉතා වැරදිය.
ස්ටීවන් ඩී

3
ෆෙඩෝරා 14 වීඑම් එකක ස්ථාපනය කර ඇති අතර lsb-releaseඔබ කී පරිදි කිසිවක් නොමැත .
මයිකල්

5
භාවිතා කරන්නේ නැත $OS, $VERSIONආදිය - සමුළුව විසින්, අපි පරිසරය විචල්යයන් (පේජර්, සංස්කාරක, ෙෂල්, ...) හා අභ්යන්තර ෂෙල් විචල්යයන් (BASH_VERSION, අහඹු, ...) නෙලා. අනෙක් සියලුම විචල්‍ය නම් වල අවම වශයෙන් එක් කුඩා අකුරක්වත් තිබිය යුතුය. මෙම සම්මුතිය පාරිසරික හා අභ්‍යන්තර විචල්‍යයන් අහම්බෙන් අභිබවා යාම වළක්වයි.
ක්‍රිස් ඩවුන්

59

මම පළමු පියවර ලෙස මෙය සමඟ යමි:

ls /etc/*release

Gentoo, RedHat, Arch & SuSE යන ලිපිගොනු උදා /etc/gentoo-release. ජනප්‍රිය බව පෙනේ, මුදා හැරීමේ ලිපිගොනු ගැන මෙම වෙබ් අඩවිය පරීක්ෂා කරන්න .

ඩේබියන් සහ උබුන්ටු වල /etc/lsb-releaseමුදා හැරීමේ තොරතුරු අඩංගු විය යුතු අතර එය පෙර විධානය සමඟ පෙන්වනු ඇත.

තවත් ඉක්මන් එකක් uname -rv. ස්ථාපනය කර ඇති කර්නලය කොටස් ඩිස්ට්‍රෝ කර්නලය නම්, ඔබ සාමාන්‍යයෙන් සමහර විට එහි නම සොයා ගනු ඇත.


ඩේබියන් මත, එය uname -a.
tshepang

2
නැත uname -rvනමුත් තොරතුරු අඩංගු? uname -aමෙහි අදාල නොවන ආකාරයේ ප්‍රොසෙසරයක් සහ ධාරක නාමයක් මුද්‍රණය කරනු ඇත. (නමුත්, කර්නලය නිදහස් දෙකම ( -r) සහ අනුවාදය ( -v) නැති සියලු distros එය එසේ අවශ්ය වේ)
මැට්

uname -r දෙන 2.6.32-5-686-bigmemහා uname -v දෙන #1 SMP Tue Mar 8 22:14:55 UTC 2011ඩේබියන් 6. මත uname -a OTOH දෙන Linux debian 2.6.32-5-686-bigmem #1 SMP Tue Mar 8 22:14:55 UTC 2011 i686 GNU/Linux.
tshepang

දෙවන කොටස uname -aඑනම් -n, එනම්, nodename == ධාරක නාමයක්. ඉතින් මම කියන්නේ unameඩෙබියන් ගැන රසවත් වෙන්නේ නැහැ. ඒ ගැන සිතා බලන්න, එය රෙඩ්හැට්හි ද එතරම් ප්‍රයෝජනවත් යැයි මට විශ්වාස නැත.
මැට්

ඔහ්, හරි. ඉතින් මගේ සත්කාරක නාමය පෙරනිමියෙන් සැකසීම වාසනාවකි debian.
tshepang

37

lsb_release -a. ඩෙබියන් මත වැඩ කරන අතර මම අනුමාන කරන්නේ උබුන්ටු, නමුත් අනෙක් ඒවා ගැන මට විශ්වාස නැත. සාමාන්‍යයෙන් එය සියලුම ග්නූ / ලිනක්ස් බෙදාහැරීම් වල පැවතිය යුතුය. එය එල්එස්බී (ලිනක්ස් ස්ටෑන්ඩර්ඩ් බේස්) හා සම්බන්ධ බැවින්.


3
එය පෙරනිමියෙන් ජෙන්ටූ හි ස්ථාපනය කර නැත. එය පෙරනිමියෙන් ෆෙඩෝරා හි කිසියම් අවස්ථාවක නොවේ (බොහෝ විට දැන් එසේ විය හැකිය)
මැට්

2
මෙය ඩෙබියන් මිරිකීම, ෆෙඩෝරා 14 සහ ඕපන්සුස් 11.3 මත ක්‍රියා කළේය. ඩේබියන් සහ SUSE හි lsb_release අඩංගු පැකේජය lsb-release, ෆෙඩෝරා හි එය redhat-lsb විය. එය දැනටමත් ඩෙබියන් සහ SUSE මත ස්ථාපනය කර ඇති නමුත් ෆෙඩෝරා මත නොවේ. මම හිතන්නේ මේ දක්වා ඇති හොඳම පිළිතුර මෙයයි. +1.
ෆහීම් මිත

3
lsb_release CentOS 6 අවම ස්ථාපනයෙහි කොටසක් නොවේ.
කෝඩරයක්

1
-a lsb_release ප්රතිලාභ සමග ජෙලි නිෂ්පාදන අතුරින් රතු පැහැති ජෙලි මත "-bash: lsb_release විධානය සොයාගත නොහැකි" Raspbian ( ඩේබියන් 7.1 ව්යුත්පන්න).
පීටර් මෝර්ටෙන්සන්

lsb_release -a Red Hat Enterprise Linux Server නිකුතුව 6.6 (සන්තියාගෝ) මත ක්‍රියා කරයි
jwilleke

24

එක් ලයිනර්, ෆෝල්බැක්, එක් නිමැවුම් පේළියක්, දෝෂ නොමැත.

( lsb_release -ds || cat /etc/*release || uname -om ) 2>/dev/null | head -n1

ලස්සනයි, ස්තූතියි. මෙය තවමත් මැක් ඕඑස් එක්ස් හි ක්‍රියා නොකරන බව සලකන්න, නමුත් එය උබුන්ටු සහ සෙන්ටෝස් මත හොඳින් ක්‍රියාත්මක වේ (ඒවා මා සතුව ඇති තුනයි).
වයිල්ඩ්කාඩ්

2
දීප්තිමත්! එවැනි බිය උපදවන පිළිතුරක් ඉහළින් නොවන්නේ ඇයි?
නියෝ

13
python -m platform

නියැදි ප්‍රතිදාන:

උබුන්ටු:

Linux-4.9.184-linuxkit-x86_64-with-Ubuntu-18.04-bionic

ඩේබියන්:

Linux-4.14.117-grsec-grsec+-x86_64-with-debian-buster-sid

සෙන්ටෝස්:

Linux-3.10.0-957.1.3.el7.x86_64-x86_64-with-centos-7.6.1810-Core

මැක් ඕඑස් එක්ස්:

Darwin-17.7.0-x86_64-i386-64bit

ඔබට එම රේඛාවෙන් නිශ්චිත අගයක් අවශ්‍ය නම් වේදිකා මොඩියුල ලියකියවිලි බලන්න . උදාහරණයක් ලෙස, ඔබට ලිනක්ස් ඩිස්ට්‍රෝ නම පමණක් අවශ්‍ය නම් භාවිතා කරන්න

python -c "import platform;print(platform.linux_distribution()[0])"

HThiefMaster විධානයේ නියැදි ප්‍රතිදානයන් කිහිපයක් මෙන්න: * Linux-3.10.0-957.1.3.el7.x86_64-x86_64-with-centos-7.6.1810-Core * Linux-4.14.117-grsec-grsec + -x86_64 -with-debian-buster-sid මෙහි ලිනක්ස් බෙදා හැරීම පිළිබඳව පැහැදිලි නැති යමක් තිබේද?
ඉල්යා කර්ලාමොව්

හරි, එම ඩිස්ට්‍රෝස් වල එහි යම් තොරතුරු අඩංගු වේ. කෙසේ වෙතත්, එය අත්තනෝමතික පා and inux-4.19.86-gentoo-x86_64-Intel-R-_Core-TM-_i5-8259U_CPU_@_2.30GHz-with-glibc2.4
යක් වන

HThiefMaster අත්තනෝමතික පෙළ වෙනුවට නිශ්චිත අගය ලබා ගන්නේ කෙසේද යන්න පිළිබඳ මුල් පිළිතුර යාවත්කාලීන කළේය.
ඉල්යා කර්ලමොව්

9
  1. මූලික සෙන්ටෝස් හෝ ඩේබියන් පද්ධති මත lsb- * ස්ථාපනය කර නැත / නොපවතී
  2. / proc / * OSX හි නොපවතී

ජාවාස්ක්‍රිප්ට් සංවර්ධකයින්ගෙන් තොරතුරක් ගන්න. අනුවාදය සඳහා පරීක්ෂා නොකරන්න, හැකියාව පරීක්ෂා කරන්න. එය ලස්සන නැත, නමුත් එය ක්රියා කරයි. අවශ්‍ය පරිදි පුළුල් කරන්න.

function os_type
{
case `uname` in
  Linux )
     LINUX=1
     which yum && { echo centos; return; }
     which zypper && { echo opensuse; return; }
     which apt-get && { echo debian; return; }
     ;;
  Darwin )
     DARWIN=1
     ;;
  * )
     # Handle AmgiaOS, CPM, and modified cable modems here.
     ;;
esac
}  

6
Yum ඉතා හොඳින් Red Hat, Scientific Linux හෝ Fedora විය හැකිය. ෆෙඩෝරා ඩෙබියන් අනුකරණය කිරීම සඳහා උචිත විධානයක් තිබුණි. සහ යනාදි. සෙන්ටොස් ලෙස යූම් සමඟ ඕනෑම දෙයක් ගැටීමෙන් ඔබට Red Hat 4 සිට Fedora 18 දක්වා ආධාරක පද්ධති රාශියක් ලබා ගත හැකිය, එය වසර 8 ක පමණ ලිනක්ස් ඉතිහාසයකි. <foo> සහය දක්වන්නේ දැයි ඔබට දැන ගැනීමට අවශ්‍ය නම්, (විශ්වාස කළ නොහැකි) බෙදා හැරීමේ හඳුනා ගැනීම මත පදනම්ව අනුමාන කිරීම වෙනුවට <foo> සඳහා විශේෂයෙන් පරීක්ෂා කරන්න! ඇත්ත වශයෙන්ම, එය ස්වයංක්‍රීය යතුරුපැදියක යම් දෙයකට මග පාදයි, නමුත් එයට උදව් කළ නොහැක (යුනික්ස් යුද්ධ අවසන් වීම ගැන ස්තූතියි $ DEITY).
වොන්බ්‍රෑන්ඩ්

on වොන්බ්‍රෑන්ඩ් ඇත්ත වශයෙන්ම, ඔබ පවසන පරිදි ය. මම උප රස අතර වෙනස හඳුනා ගැනීමට උත්සාහ නොකරමි. මම බොහෝ පර්යේෂණ සිදු නොකළද, මම පරීක්ෂා කර බලන අනුපිළිවෙල බොහෝ උපක්‍රමශීලී තත්වයන් (යෝග්‍ය ලෙස ස්ථාපනය කර ඇති RHEL) ඉවත් කරයි. RHEL හට apt-get ස්ථාපනය කළ හැකි නම් සහ උබුන්ටු භාවිතා කරන්නන්ට yum තිබේ නම් ... හොඳයි, ඔබ වාසනාවන්ත නොවී සිටියි.
ඕවල්ලොෆිල්

6

බොහෝ දුරට සාර්ථක විය හැකි පිළිවෙලින්, මේවා:

cat /etc/*version
cat /proc/version #linprocfs/version for FreeBSD when "linux" enabled
cat /etc/*release
uname -rv

බොහෝ අවස්ථාවන් ආවරණය කරන්න (AFAIK): ඩේබියන්, උබුන්ටු, ස්ලැක්වෙයාර්, සූස්, රෙඩ්හැට්, ජෙන්ටූ, * බීඑස්ඩී සහ සමහර විට වෙනත් අය.


cat /etc/*versionCentOS හි ක්‍රියා නොකරයි (එවැනි ගොනුවක් නොමැත) (අවම වශයෙන් 6.4 ට)
om-nom-nom

ඔබ විධානය බහාලුමක් තුළ ක්‍රියාත්මක කරන්නේ නම්, / proc / version හි HOST බෙදාහැරීමේ අනුවාදය අඩංගු වනු ඇත, නමුත් බහාලුම් බෙදා හැරීම නොවේ.
ඩෙරෙක්සන්

6

බොහෝ නවීන ලිනක්ස් මෙහෙයුම් පද්ධති සඳහා, ගොනුව /etc/os-releaseසැබවින්ම සම්මත වෙමින් පවතින අතර බොහෝ මෙහෙයුම් පද්ධති වලට ඇතුළත් වෙමින් පවතී. එබැවින් ඔබේ බෑෂ් ස්ක්‍රිප්ට් එක තුළ ඔබට ගොනුව ඇතුළත් කළ හැකි අතර, මෙහි විස්තර කර ඇති සියලුම විචල්‍යයන් සඳහා ඔබට ප්‍රවේශය ලැබේ (නිදසුනක් ලෙස: NAME, VERSION, ...)

ඉතින් මම මෙය මගේ බෑෂ් පිටපතෙහි භාවිතා කරමි:

if [ -f /etc/os-release ]
then
        . /etc/os-release
else
        echo "ERROR: I need the file /etc/os-release to determine what my distribution is..."
        # If you want, you can include older or distribution specific files here...
        exit
fi

මෙම ගොනුව මූලාශ්‍ර කිරීමෙන් දේවල් සැඟවීමට තවත් ස්ථානයක් හඳුන්වා දෙන බව මතක තබා ගන්න. unix.stackexchange.com/a/433245/5132
JdeBP

3

ගොනුව /etc/debian_versionතිබේ නම්, බෙදා හැරීම ඩෙබියන් හෝ ඩේබියන් ව්‍යුත්පන්නයකි. මෙම ගොනුවට මුදා හැරීමේ අංකයක් තිබිය හැකිය; මගේ යන්ත්‍රයේ එය දැනට පවතී 6.0.1. එය පරීක්‍ෂා කිරීම හෝ අස්ථායි නම්, එය පරීක්‍ෂා කිරීම / අස්ථායි යැයි පැවසිය හැකිය, නැතහොත් ඉදිරියට එන නිකුතුවේ අංකය එයට තිබිය හැකිය. මගේ හැඟීම නම් අවම වශයෙන් උබුන්ටු වල මෙම ගොනුව සැමවිටම පරීක්‍ෂා / අස්ථායී වන අතර ඔවුන් මුදා හැරීමේ අංකය එහි නොයවන නමුත් මා වැරදියි නම් යමෙකුට මාව නිවැරදි කළ හැකිය.

ෆෙඩෝරා (අවම වශයෙන් මෑත කාලීන නිකුතු), සමාන ගොනුවක් ඇත, එනම් /etc/fedora-release.


නව ඩේබියන් අනුවාද ඒ වෙනුවට / etc / os-release භාවිතා කරයි.
ඩෙරෙක්සන්

1
E ඩෙරෙක්සන් මම මගේ රෝද සහිත යන්ත්‍රය පරීක්ෂා කළ අතර, එය /etc/debian_versionසහ දෙකම /etc/os-releaseඇත.
ෆහීම් මිත

Debootstrap සමඟ නිර්මාණය කරන ලද ජෙසී chroot එකක පරීක්ෂා කර ඇත. නමුත් ඇත්ත වශයෙන්ම, ජෙසී යටතේ ඇති දේශීය යන්ත්‍රයක්, මෙවර වඩාත් සාම්ප්‍රදායික ක්‍රමයක් ස්ථාපනය කර ඇති අතර එහි /etc/debian_versionගොනුවක් අඩංගු වේ . එබැවින් අපි ඩේබියන් ස්ථාපනය සකස් කරන ආකාරය පවතින මුදාහැරීමේ ලිපිගොනු වලට බලපායි, එය සිත්ගන්නා සුළුය.
ඩෙරෙක්සන්

ඩෙබියන්ස් os-releaseවෙතින් සම්පූර්ණ අනුවාද අංකය ඇතුළත් නොවේ debian_version. Unix.stackexchange.com/questions/382531 බලන්න .
JdeBP

2

ඔබට එල්එස්බී මුදා හැරීමේ ගොනුව භාවිතා කිරීමට නොහැකි හෝ අවශ්‍ය නොවන්නේ නම් (පැකේජය ගෙන එන පරායත්තතා හේතුවෙන්), ඔබට ඩිස්ට්‍රෝ-විශේෂිත මුදාහැරීමේ ලිපිගොනු සොයා බැලිය හැකිය. ඔබට භාවිතා කළ හැකි ඩිස්ට්‍රෝ සඳහා Bcfg2 හි පරීක්ෂණයක් ඇත: http://trac.mcs.anl.gov/projects/bcfg2/browser/doc/server/plugins/probes/group.txt


1

බොහෝ අයගෙන් ක්‍රම 2 ක්:

1) භාවිතය

lsb_release -a

මම එය CentOS 5.5 සහ උබුන්ටු 10.04 මත පරීක්ෂා කළා

CentOS සඳහා ප්‍රතිදානය:

LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch 
Distributor ID: CentOS
Description:    CentOS release 5.5 (Final)
Release:        5.5
Codename:       Final

උබුන්ටු සඳහා:

LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description:    CentOS release 5.5 (Final)
Release:        5.5
Codename:       Final

2) පහත විධානය ඇතුළත් කරන්න:

cat /etc/*-release

මම එය CentOS 5.5 සහ උබුන්ටු 10.04 මත පරීක්ෂා කළ අතර එය හොඳින් ක්‍රියාත්මක වේ.


lsb_release CentOS 6 නොවන (මේ විනාඩි ස්ථාපනය fwiw)
සදහාද සහය දක්වනු ලැෙබි

-a lsb_release ප්රතිලාභ සමග ජෙලි නිෂ්පාදන අතුරින් රතු පැහැති ජෙලි මත "-bash: lsb_release විධානය සොයාගත නොහැකි" Raspbian ( ඩේබියන් 7.1 ව්යුත්පන්න).
පීටර් මෝර්ටෙන්සන්

0

මෙම ස්ක්‍රිප්ට් ඩෙබියන් මත ක්‍රියා කරයි, (උබුන්ටු වල යම් වෙනස් කිරීමක් අවශ්‍ය විය හැක)

#!/usr/bin/env bash

echo "Finding Debian/ Ubuntu Codename..."

CODENAME=`cat /etc/*-release | grep "VERSION="`
CODENAME=${CODENAME##*\(}
CODENAME=${CODENAME%%\)*}

echo "$CODENAME"
# => saucy, precise, lucid, wheezy, squeeze

0

බොහෝ පොදු ලිනක්ස් ඩිස්ට් සඳහා වැඩ කරන හොඳ පිටපතක් මම මෙතැනින් සොයා ගතිමි :

#! /bin/bash
# return an awkable string consisting of
#    unix OS type, or
#    Linux dist, or
#    a long guess (based on /proc), or
#    no clue

giveUp () {
   echo "Unknown"
   exit 0
}

# keep this easily awkable, prepending an initial clue
versionGuess () {
   if [ -e /proc/version ]; then
      echo -n "Unsure "
      cat /proc/version
      exit 0
   fi
   return 1
}

# if we have ignition, print and exit
gotDist () {
   [ -n "$1" ] && echo "$1" && exit 0
}

# we are only interested in a single word "dist" here
# various malformations can occur; admin will have to code appropately based on output
linuxRelease () {
   if [ -r /etc/lsb-release ]; then
      dist=$(grep 'DISTRIB_ID' /etc/lsb-release | sed 's/DISTRIB_ID=//' | head -1)
      gotDist "$dist"
   fi

   dist=$(find /etc/ -maxdepth 1 -name '*release' 2> /dev/null | sed 's/\/etc\///' | sed 's/-release//' | head -1)
   gotDist "$dist"

   dist=$(find /etc/ -maxdepth 1 -name '*version' 2> /dev/null | sed 's/\/etc\///' | sed 's/-version//' | head -1)
   gotDist "$dist"

   return 1
}

# start with uname and branch the decision from there
dist=$(uname -s 2> /dev/null)
if [ "$dist" = "Linux" ]; then
   linuxRelease
   versionGuess
   giveUp
elif [ -n "$dist" ]; then
   echo "$dist"
   exit 0
else
   versionGuess
   giveUp
fi

# we shouldn't get here
giveUp
# done

0

එහි වේ facter ඔබ os මෙහෙයුම් පද්ධතිය පිළිබද කරුණු කීපයක් ලබා දෙන ඒකනේ මැණික්, එය පර්යන්තය තිරය වෙත OS නිදහස් ගොනු, වෙනත් දත්ත සහ පිටපත් විශ්ලේෂණය. ඔබට පහත පරිදි උත්සාහ කළ හැකිය, රුබීජම් ස්ථාපනය සමඟ ආරම්භ කිරීම:

# apt-get install rubygems

කරුණාකර ඔබේ මෙහෙයුම් පද්ධතිය සඳහා සුදුසුකම් ඇති ඉහත නඩුව භාවිතා කරන්න. ඉන්පසු මැණික් ස්ථාපනය කරන්න.

# gem install facter

ඉන්පසු භාවිතා කරන්න:

$ facter

සටහන: ස්ථාපනය පිළිබඳ වැඩි විස්තර ලබා ගැනීම සඳහා සාධක මැණික් ප්‍රභවයන් බලන්න.


0

යමෙකුට ඩිස්ට්‍රෝ අවශ්‍ය නම්:

#!/usr/bin/env bash

LINUX_VERSION_NAME=`lsb_release -sr`


# Distribution specific installation
if [[ ${LINUX_VERSION_NAME} == "18.04" ]]
then
    echo "It is: ${LINUX_VERSION_NAME}"

else
    echo "It is not ${LINUX_VERSION_NAME}"
fi

ප්‍රතිදානය:

It is: 18.04

Distro ලබා ගැනීම සඳහා: lsb_release -sc වෙත වෙනස් කරන්න:

LINUX_VERSION_NAME=`lsb_release -sc`


# Distribution specific installation
if [[ ${LINUX_VERSION_NAME} == "bionic" ]]
then
    echo "It is: ${LINUX_VERSION_NAME}"

else
    echo "It is not ${LINUX_VERSION_NAME}"
fi

ප්‍රතිදානය:

It is: bionic

-1

මෙන්න මගේ සරල chech_distro අනුවාදය. ^^;

#!/usr/bin/env bash
check_distro2(){
    if [[ -e /etc/redhat-release ]]
    then
      DISTRO=$(cat /etc/redhat-release)
    elif [[ -e /usr/bin/lsb_release ]]
    then
      DISTRO=$(lsb_release -d | awk -F ':' '{print $2}')
    elif [[ -e /etc/issue ]]
    then
      DISTRO=$(cat /etc/issue)
    else
      DISTRO=$(cat /proc/version)
    fi
    }

    check_distro2
    echo $DISTRO

-1

අනුවාදය නොමැතිව, dist පමණි:

cat /etc/issue | head -n +1 | awk '{print $1}'

මීට වසරකට පෙර යාහියා යාහූයි විසින් දෙන ලද පිළිතුරක් එකම දේම කීවේය. මෙම පිළිතුරු දෙකම ඇත්ත වශයෙන්ම 2011 දී ආමන්ත්‍රණය කරන ලද්දේ එතැන් සිට මකා දැමූ පිළිතුරු වලිනි. ඒවා වැරදි බවට හේතු තවමත් අදාළ වේ.
JdeBP

-1

මෙය උබුන්ටු 14 සහ සෙන්ටෝස් 7 හි අත්හදා බලන ලදී

cat /etc/os-release | grep "PRETTY_NAME" | sed 's/PRETTY_NAME=//g' | sed 's/["]//g' | awk '{print $1}'

@don_crissti ඔබ එය කරන්නේ කෙසේද?
BsdHelper

sed -n -e '/PRETTY_NAME/ s/^.*=\|"\| .*//gp' /etc/os-release
cas

ascas හරිම හොඳයි! එය මගේ මෙවලම් පෙට්ටියට එක් කිරීම. බෙදා ගැනීමට ස්තූතියි.
BsdHelper


-4

මෙම විධානය ඩෙබියන් පදනම් කරගත් සහ රෙඩ්හැට් මත පදනම් වූ බෙදාහැරීම් සඳහා ක්‍රියා කරයි: trපෙරණය භාවිතා කරමින් , ඔබ ලේඛනය එක් වචනයකට එක් ආකෘතියකට පරිවර්තනය කර බෙදාහැරීමේ නම අඩංගු පළමු පේළිය ගණන් කරන්න.

tr -s ' \011' '\012' < /etc/issue | head -n 1

එකම දේ පැවසූ 2011 සිට දැන් මකා දැමූ පිළිතුර පිළිබඳ අදහස් තවමත් අදාළ වේ. වැරදි ලෙස ස්ථානගත කර ඇති පිළිතුර මෙන්, දැන් නැවත මකාදමා ඇති අතර, එයින් /etc/issueකියැවුණේ සෙන්වෝක්හි අනුවාදයක් හෝ නමක් නොමැති බවයි. මෙය පරිපාලක-වෙනස් කළ හැකි ගොනුවක් වන අතර එය ක්‍රමලේඛයෙන් ඉවත් කළ හැකි කිසිවක් අඩංගු බවට සහතිකයක් නොමැති මිනිසුන්ට ඉදිරිපත් කරන ලද පණිවිඩයකි .
JdeBP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.