मैं एक सरल शेल स्क्रिप्ट में वितरण नाम और संस्करण संख्या कैसे प्राप्त कर सकता हूं?


191

मैं एक साधारण बैश स्क्रिप्ट पर काम कर रहा हूं जो उबंटू और सेंटोस वितरण पर चलने में सक्षम होना चाहिए (डेबियन और फेडोरा / आरएचईएल के लिए समर्थन एक प्लस होगा) और मुझे उस स्क्रिप्ट के वितरण के नाम और संस्करण को जानने की आवश्यकता है जो चल रहा है () विशिष्ट क्रियाओं को ट्रिगर करने के लिए, उदाहरण के लिए रिपॉजिटरी के निर्माण)। अब तक मुझे यही मिला है:

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- रिलीज़ में शामिल हैं: Redhat Linux Entreprise रिलीज़ 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काम करता है? प्रभावी रूप से आप यह मान रहे हैं कि यह होगा /etc/lsb-release, इसलिए शायद इसे ही कहें।
मिकेल

@ मिकेल: मैंने टिप्पणी करने से बचने के लिए प्रतिस्थापित *किया +, यह होना चाहिए etc/*-release, यह काम करने लगता है।
एलिक्स एक्सल

8
सही स्वरूपण प्राप्त करने के लिए कभी भी वाक्यविन्यास त्रुटि का परिचय न दें। इसके अलावा, स्वरूपण केवल पूर्वावलोकन में गलत है, अंतिम दृश्य टैग से वाक्यविन्यास चुनता है।
गाइल्स

क्यों किसी ने इस फ़े का उल्लेख नहीं किया uname -rv | grep -i "name_of_distro"और निकास कोड का उपयोग किया?
भगोड़ा

जवाबों:


182

पाने के लिए 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_releaseयह redhat-lsb नामक एक पैकेज में निहित है, जो मुझे लगता है कि डिफ़ॉल्ट रूप से स्थापित नहीं है। हालांकि, मैं एक फेडोरा विशेषज्ञ नहीं हूं, ये सिर्फ एक यादृच्छिक फेडोरा वीएम मेरे पास से परिणाम हैं और बहुत गलत हो सकते हैं।
स्टीवन डी

3
बस एक VM में Fedora 14 स्थापित किया है, और lsb-releaseजैसा कि आपने कहा था, कोई भी नहीं है ।
मिकेल

5
उपयोग न करें $OS, $VERSIONआदि - सम्मेलन द्वारा, हम पर्यावरण चर (PAGER, EDITOR, शेल, ...) और आंतरिक शेल चर (BASH_VERSION, RANDOM, ...) को कैपिटल करते हैं। अन्य सभी चर नामों में कम से कम एक लोअरकेस अक्षर होना चाहिए। यह कन्वेंशन गलती से पर्यावरण और आंतरिक चर को ओवरराइड करने से बचता है।
क्रिस डाउन

58

मैं इसके साथ पहले कदम के रूप में जाऊँगा:

ls /etc/*release

Gentoo, RedHat, Arch और SuSE की एक फ़ाइल है, जैसे कि /etc/gentoo-release। लोकप्रिय होने लगता है, रिलीज-फाइलों के बारे में इस साइट की जांच करें ।

डेबियन और उबंटू में एक /etc/lsb-releaseरिलीज की जानकारी भी होनी चाहिए , और पिछली कमांड के साथ दिखाई देगी।

एक और त्वरित है uname -rv। यदि कर्नेल स्थापित स्टॉक डिस्ट्रो कर्नेल है, तो आप आमतौर पर कभी-कभी वहां नाम ढूंढ सकते हैं।


डेबियन पर, वह uname -a
tshepang

2
uname -rvहालांकि जानकारी शामिल नहीं है? uname -aप्रोसेसर और hostname जैसी चीजों को प्रिंट करेगा जो यहाँ अप्रासंगिक हैं। (लेकिन दोनों कर्नेल रिलीज़ ( -r) और संस्करण ( -v) आवश्यक हैं, सभी डिस्ट्रोस वहाँ एक ही नहीं करते हैं)
Mat

uname -r देता है 2.6.32-5-686-bigmemऔर uname -v देता #1 SMP Tue Mar 8 22:14:55 UTC 2011डेबियन 6 uname -एक 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, अर्थात नोडनेम == होस्टनाम। इसलिए मैं कहता हूं कि unameडेबियन पर दिलचस्प नहीं होगा। यह सोचने के लिए आओ, मुझे यकीन नहीं है कि यह रेडहैट पर इतना उपयोगी है।
Mat

ओह ठीक। तो यह सिर्फ किस्मत से है कि मैंने अपने होस्टनाम को डिफ़ॉल्ट के रूप में सेट किया है debian
tshepang

36

lsb_release -a। डेबियन पर काम करता है और मुझे लगता है कि उबंटू है, लेकिन मैं बाकी के बारे में निश्चित नहीं हूं। सामान्य रूप से यह सभी GNU / Linux वितरणों में मौजूद होना चाहिए क्योंकि यह LSB (Linux Standard Base) संबंधित है।


3
यह Gentoo पर डिफ़ॉल्ट रूप से स्थापित नहीं है। यह फेडोरा पर डिफ़ॉल्ट रूप से या तो किसी बिंदु पर नहीं था (शायद अब हालांकि है)
Mat

2
यह डेबियन निचोड़, फेडोरा 14, और ओपनएसयूएसई 11.3 पर काम किया। डेबियन और SUSE पर lsb_release युक्त पैकेज को lsb- रिलीज़ किया गया था, फेडोरा पर यह redhat-lbb था। यह डेबियन और एसयूएसई पर पहले से ही स्थापित था, लेकिन फेडोरा पर नहीं। मुझे लगता है कि यह अब तक का सबसे अच्छा जवाब है। +1।
फहीम मीठा

3
lsb_release CentOS 6 की न्यूनतम स्थापना का हिस्सा नहीं है।
एक कोडर

1
lsb_release -a रिटर्न "-bash: lsb_release: कमांड नहीं मिला" रास्पबेरी पर रास्पियन ( डेबियन 7.1 व्युत्पन्न) के साथ।
पीटर मोर्टेंसन

lsb_release -a Red Hat Enterprise Linux सर्वर रिलीज़ 6.6 (सैंटियागो) पर काम करता है
jwilleke

21

वन-लाइनर, फालबैक, आउटपुट की एक पंक्ति, कोई त्रुटि नहीं।

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

सुन्दर, शुक्रिया। ध्यान दें कि यह अभी भी मैक ओएस एक्स पर काम नहीं करता है, लेकिन यह उबंटू और सेंटोस (जो तीन मेरे पास काम करता है) पर ठीक काम करता है।
वाइल्डकार्ड

2
प्रतिभाशाली! ऐसा बड़बोला जवाब शीर्ष पर क्यों नहीं?
नियो


9
  1. lsb- * स्थापित नहीं है / बेस CentOS या डेबियन सिस्टम पर मौजूद नहीं है
  2. OSX पर / proc / * मौजूद नहीं है

जावास्क्रिप्ट डेवलपर्स से एक टिप लें। संस्करण के लिए परीक्षण न करें, क्षमता के लिए परीक्षण करें। यह सुंदर नहीं है, लेकिन यह काम करता है। आवश्यकतानुसार विस्तार करें।

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
यम बहुत अच्छी तरह से Red Hat, वैज्ञानिक लिनक्स या फेडोरा हो सकता है। फ़ेडोरा की नकल उतारने की कमान डेबियन के लिए उपयुक्त थी। और इसी तरह। बस यम के साथ कुछ भी समाहित करने के रूप में CentOS आपको Red Hat 4 से लेकर Fedora 18 तक समर्थित प्रणालियों की एक श्रृंखला प्रदान करता है, जो कि कुछ 8 साल का लिनक्स इतिहास है। यदि आपको यह जानने की आवश्यकता है कि क्या <foo> समर्थित है, विशेष रूप से <foo> के आधार पर जांच करने के बजाय (अविश्वसनीय) वितरण पहचान के आधार पर जांच करें! ज़रूर, यह ऑटोटूलस के इलके में से कुछ की ओर जाता है, लेकिन यह मदद नहीं की जा सकती है (बस $ देयता है कि यूनिक्स युद्ध समाप्त हो गए हैं)।
वॉनब्रांड

@vonbrand वास्तव में, यह वैसा ही है जैसा आप कहते हैं। मैं उप-स्वादों के बीच अंतर करने का प्रयास नहीं करता। और मैं जिस क्रम में जांच करता हूं (उम्मीद है) सबसे मुश्किल परिस्थितियों को हटा देता है (आरएचईएल के साथ उपयुक्त हो जाओ), हालांकि मैंने बहुत शोध नहीं किया। अगर आरएचईएल एप्ट-गेट स्थापित हो सकता है, और उबंटू उपयोगकर्ताओं के पास यम है ... ठीक है, तो आप भाग्य से बाहर निकल रहे हैं।
ऑरवेलोफाइल

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 / संस्करण में HOST वितरण संस्करण होगा, और कंटेनर वितरण एक नहीं।
डेरेकसन

5

अधिकांश आधुनिक लिनक्स ओएस सिस्टम के लिए, फ़ाइल /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

3

यदि फ़ाइल /etc/debian_versionमौजूद है, तो वितरण डेबियन है, या डेबियन व्युत्पन्न है। इस फ़ाइल में एक रिलीज़ संख्या हो सकती है; मेरी मशीन पर यह वर्तमान में है 6.0.1। यदि यह परीक्षण या अस्थिर है, तो यह परीक्षण / अस्थिर कह सकता है, या इसमें आगामी रिलीज़ की संख्या हो सकती है। मेरी धारणा यह है कि कम से कम उबंटू पर, यह फ़ाइल हमेशा परीक्षण / अस्थिर होती है, और यह कि वे इसमें रिलीज़ नंबर नहीं डालते हैं, लेकिन अगर मैं गलत हूं तो कोई मुझे सुधार सकता है।

फेडोरा (हाल ही में कम से कम रिलीज), एक समान फ़ाइल है, अर्थात् /etc/fedora-release


नए डेबियन संस्करण इसके बजाय / etc / os-release का उपयोग करते हैं।
डेरेकसन

1
@ डेरेकसन मैंने अपनी मट्ठा मशीन की जाँच की, और इसमें दोनों /etc/debian_versionऔर हैं /etc/os-release
फहीम मीठा

डेब्यूटस्ट्रैप के साथ बनाई गई जेसी चुरोट में परीक्षण किया गया। लेकिन वास्तव में, एक स्थानीय मशीन भी जेसी के तहत, इस बार एक अधिक पारंपरिक तरीके से स्थापित, एक /etc/debian_versionफ़ाइल शामिल है । तो जिस तरह से हम डेबियन इंस्टॉलेशन तैयार करते हैं वह उपलब्ध रिलीज़ फ़ाइलों को प्रभावित कर सकता है, यह दिलचस्प है।
डेरेकसन

डेबियन के os-releaseपूर्ण संस्करण की संख्या शामिल नहीं है debian_versionUnix.stackexchange.com/questions/382531 देखें ।
JdeBP

2

यदि आप LSB रिलीज़ फ़ाइल (पैकेज में निर्भरता के कारण) में उपयोग नहीं करना चाहते हैं या नहीं कर सकते हैं, तो आप डिस्ट्रो-विशिष्ट रिलीज़ फ़ाइलों की तलाश कर सकते हैं। Bcfg2 में आपके द्वारा उपयोग किए जा सकने वाले डिस्ट्रो के लिए एक जांच है: http://trac.mcs.anl.gov/projects/bcfg2/browser/doc/server/plugins/probes-group.txt


1

कई तरीकों से 2 तरीके:

1) का उपयोग करें

lsb_release -a

मैंने इसे CentOS 5.5 और Ubuntu 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 और Ubuntu 10.04 पर टेस्ट किया, और यह ठीक काम करता है।


lsb_release CentOS 6 (मिनट स्थापित fwiw) में नहीं है
एक कोडर

lsb_release -a रिटर्न "-bash: lsb_release: कमांड नहीं मिला" रास्पबेरी पर रास्पियन ( डेबियन 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

यहाँ मेरा सरल 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

0

संस्करण के बिना, केवल डिस्ट:

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

याह्या याह्याऊ द्वारा एक साल पहले के एक जवाब ने यही बात कही। इन दोनों उत्तरों को वास्तव में 2011 में उन उत्तरों में संबोधित किया गया था जिन्हें तब से हटा दिया गया है। जिन कारणों से वे गलत हैं वे अभी भी लागू होते हैं।
JdeBP

0

यह Ubuntu 14 और CentOS 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
कैस

@ कैस वेरी नाइस! मेरे टूलबॉक्स में इसे जोड़ना। साझा करने के लिए धन्यवाद।
BsdHelper

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

एक फैक्टर रूबी रत्न है, जो आपको ओएस ओएस के बारे में कुछ तथ्य देता है, यह ओएस रिलीज़ फ़ाइलों, अन्य डेटा और टर्मिनल स्क्रीन पर प्रिंट का विश्लेषण करता है। आप निम्नानुसार कोशिश कर सकते हैं, रूबीगैम इंस्टॉलेशन के साथ भीख माँगना:

# apt-get install rubygems

कृपया उपरोक्त मामले का उपयोग करें जो आपके OS के लिए योग्य है। फिर रत्न ही स्थापित करें।

# 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

बदलने के लिए: lsb_release -sc distro पाने के लिए:

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

-3

यह कमांड डेबियन आधारित और रेडहैट आधारित वितरणों के लिए काम करता है: trफ़िल्टर का उपयोग करके , आप दस्तावेज़ को एक-शब्द-प्रति-पंक्ति प्रारूप में परिवर्तित करते हैं और फिर पहली पंक्ति की गणना करते हैं जिसमें वितरण नाम होता है।

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

2011 से हटाए गए उत्तर पर टिप्पणियों ने कहा कि एक ही बात, अभी भी लागू होती है। जैसा कि गलत जवाब दिया गया था, अब फिर से हटा दिया गया, जिसने कहा कि /etc/issueजेनवॉक पर कोई संस्करण या नाम नहीं था। यह एक प्रशासक-परिवर्तनीय फ़ाइल है जिसमें मानव के लिए एक संदेश प्रस्तुत किया गया है जिसमें ऐसी किसी भी चीज़ की कोई गारंटी नहीं है जिसे प्रोग्राम से बाहर निकाला जा सके।
JdeBP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.