මම උබුන්ටු සහ සෙන්ටෝස් බෙදාහැරීම් මත ධාවනය කළ හැකි සරල බාෂ් ස්ක්රිප්ට් එකක වැඩ කරමින් සිටිමි (ඩෙබියන් සහ ෆෙඩෝරා / ආර්එච්එල් සඳහා සහය වැඩි වනු ඇත) සහ පිටපත ක්රියාත්මක වන බෙදාහැරීමේ නම සහ අනුවාදය දැන ගැනීමට මට අවශ්යය ( නිශ්චිත ක්රියාවන් අවුලුවාලීම සඳහා, උදාහරණයක් ලෙස නිධි නිර්මාණය කිරීම). මෙතෙක් මා සතුව ඇත්තේ මෙයයි:
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"
*
සමග +
එම ප්රකාශය formating වළක්වා ගැනීමට කළ යුත්තේ එය etc/*-release
, එය වැඩ කටයුතු පෙනේ.
uname -rv | grep -i "name_of_distro"
පිටවීමේ කේතය භාවිතා නොකරන්නේ ඇයි ?
+-release
? You ලදායී ලෙස ඔබ එය එසේ වනු ඇතැයි උපකල්පනය කරයි/etc/lsb-release
, එබැවින් සමහර විට එය එසේ අමතන්න.