सुरुवातीस मार्गदर्शक तत्त्वे - परिस्थिती आणि चलने

परिचय

"Beginners Guide to BASH" तिसर्या भागात आपले स्वागत आहे आपण मागील दोन लेख गमावल्या असतील तर आपण हे मार्गदर्शन इतर BASH स्क्रिप्टिंग मार्गदर्शकांपेक्षा हे मार्गदर्शक वेगळे काय हे जाणून घेऊ इच्छित असेल.

हे मार्गदर्शक बाशला एक संपूर्ण नवशिक्या द्वारे लिहीले जात आहे आणि म्हणून वाचक म्हणून जे मी शिकले ते शिकून घेतले आहे. मी बाशसाठी नवशिक्या असतानाही मी सॉफ्टवेअर डेव्हलपमेंट पार्श्वभूमीतून आलो आहे जरी मी लिहीलेली सर्व सामग्री विंडोजच्या प्लॅटफॉर्मसाठी आहे.

येथे भेट देऊन आपण पहिल्या दोन मार्गदर्शिका पाहू शकता:

जर आपण BASH स्क्रिप्टिंगसाठी नविन असाल तर मी हे एक सुरू करण्यापूर्वी प्रथम दोन मार्गदर्शक वाचन करण्याची शिफारस करतो.

या मार्गदर्शकामध्ये युजर इनपुटची चाचणी कशी करता येईल आणि स्क्रिप्ट कसे कार्य करते यावर नियंत्रण करण्यासाठी कंडिशनल स्टेटमेंट कसे वापरावे हे मी हायलाईट करणार आहे.

Rsstail स्थापित करा

या मार्गदर्शनाचे अनुसरण करण्यासाठी आपल्याला आरएसएसएल नावाची कमांड लाइन ऍप्लिकेशन स्थापित करावे लागेल ज्याचा उपयोग आरएसएस फीड वाचण्यासाठी केला जातो.

जर आपण डेबियन / उबुंटू / मिंट आधारित वितरण प्रकार खालील वापरत असाल:

sudo apt-get install rsstail

Fedora / CentOS साठी खालील टाइप करा:

yum स्थापित rsstail

ओपनस्यूज साठी खालील टाइप करा:

zypper install rsstail

IF स्टेटमेंट

टर्मिनल उघडा आणि खालील टाइप करून rssget.sh नावाची फाइल तयार करा:

sudo nano rssget.sh

नॅनो एडिटरमध्ये पुढील मजकूर प्रविष्ट करा:

#! / bin / bash
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;

CTRL आणि O दाबून फाईल सेव्ह करा आणि नंतर CTRL आणि X दाबून बाहेर पडा.

स्क्रिप्ट चालवून खालील टाइप करा:

श rssget.sh

स्क्रिप्ट linux.about.com आरएसएस फीडमधील शीर्षके यादी परत करेल.

हे अती उपयुक्त हे लिपी नाही कारण हे फक्त एका RSS फीडमधील शीर्षके प्राप्त करते परंतु लिनक्स.बाउट.कॉमवर जाण्यासाठी आरएसएस फीड लक्षात ठेवत नाही.

नॅनो मध्ये rssget.sh स्क्रिप्ट पुन्हा उघडा आणि फाइल खालीलप्रमाणे पाहण्यासाठी संपादित करा:

#! / bin / bash

[$ 1 = "क्रियापद"]
नंतर
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
फाई

स्क्रिप्ट पुन्हा खालील टाइप करून चालवा:

श rssget.sh वर्बोस

या वेळी आरएसएस फीड शीर्षक, दुवा आणि वर्णन परत येतो.

चला थोड्या तपशिलात स्क्रिप्टचे विश्लेषण करूया:

आपण लिहिलेल्या प्रत्येक स्क्रिप्टमध्ये #! / Bin / bash दिसत आहे. पुढील ओळ मूळतः वापरकर्त्याद्वारे प्रदान केलेल्या प्रथम इनपुट पॅरामीटरवर पाहते आणि त्याचे शब्द "क्रियापद" शी तुलना करते जर इनपुट पॅरामीटर आणि शब्द "वर्बोस" नंतरच्या दरम्यानच्या फाईल्सशी जुळत असेल आणि फायर संपले

वरील लिपी स्पष्टपणे दोषपूर्ण आहे. आपण इनपुट पॅरामीटर पुरवत नाही तर काय होते? उत्तर आपल्याला अनपेक्षित ऑपरेटरच्या ओळींमध्ये एक त्रुटी आली आहे.

अन्य मुख्य दोष म्हणजे आपण "क्रियापद" शब्द प्रदान केला नाही तर काहीच घडत नाही. जर आपण शब्दशः शब्द दिलेला नसेल तर स्क्रिप्ट शीर्षके यादी परत करेल.

Rssget.sh फाइल संपादित करण्यासाठी आणि कोड खालीलप्रमाणे सुधारण्यासाठी नॅनोचा वापर करा:

#! / bin / bash

[$ 1 = "क्रियापद"]
नंतर
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई

फाईल सेव्ह करा आणि खालील टाइप करून चालू करा:

श rssget.sh वर्बोस

शीर्षके, वर्णन आणि दुवे यादी दिसेल. आता पुन्हा असे चालवा:

sh rssget.sh शीर्षक

या वेळी फक्त शीर्षके सूची दिसतील.

स्क्रिप्टचा अतिरिक्त भाग 4 ओळीवर आहे आणि दुसरे विधान प्रस्तुत करते. मूलभूतपणे स्क्रिप्ट आता असे म्हणते की पहिला पॅरामीटर हा शब्द "क्रियापद" शब्द RSS फीडसाठी वर्णन, लिंक्स आणि शीर्षके प्राप्त करतो परंतु प्रथम पॅरामीटर काहीही असल्यास ते केवळ शीर्षके यादी प्राप्त करते.

स्क्रिप्ट थोडी सुधारली पण तरीही दोषपूर्ण आहे. आपण पॅरामीटर प्रविष्ट करण्यास अयशस्वी झाल्यास आपण अद्याप त्रुटी प्राप्त कराल जरी आपण एक पॅरामीटर प्रदान केलेला असला तरीही, आपण म्हणत नाही की क्रियापद म्हणजे केवळ आपण केवळ शीर्षके नको असल्यास आपण कदाचित शब्दशः चुकीचे उदाहरण दिले असेल किंवा आपण कबड्ने टाईप केलेल्या असतील जे अर्थातच निरर्थक आहेत

आम्ही या समस्येचा प्रयत्न करून सोडू या आधी आपण IF स्टेटमेंटमधे आणखी एक कमांड दाखवू इच्छित आहोत.

खालीलप्रमाणे पाहण्यासाठी आपली rssget.sh स्क्रिप्ट संपादित करा:

#! / bin / bash

जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई

मी वर्बोस शब्दापासून मुक्त होण्याचा निर्णय घेतला आणि त्यास त्यास सर्व स्थान दिला. हा महत्त्वाचा भाग नाही. उपरोक्त स्क्रिप्ट Elif ला सादर करते जे ELSE जर म्हणत असेल तर एक लहान मार्ग आहे.

आता स्क्रिप्ट खालीलप्रमाणे कार्य करते. आपण sh rssget.sh चालविल्यास आपण वर्णन, लिंक्स आणि शीर्षके मिळवू शकता. त्याऐवजी आपण फक्त sh rssget.sh वर्णन चालविल्यास आपल्याला केवळ शीर्षके आणि वर्णन मिळतील. आपण कोणत्याही अन्य शब्द पुरवल्यास आपण शीर्षके यादी मिळेल.

हे सशर्त स्टेटमेन्टच्या सूचीसह त्वरेने येण्याचा एक मार्ग सादर करते. ELIF करण्यासाठी पर्यायी मार्ग हे नेस्टेड IF स्टेटमेंट म्हणून ओळखले जाते ते वापरणे आहे.

निवेदनाची कार्ये कशी कार्य करतात हे खालील उदाहरण आहे:

#! / bin / bash

जर [$ 2 = "फोल्ड डॉट कॉम"]
नंतर
जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई
दुसरे
जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई
फाई

आपल्याला आपल्या rssget.sh फाईलमध्ये ती पसंत असल्यास टाइप करण्यास मोकळ्या मनाने किंवा कॉपी आणि पेस्ट करा.

वरील स्क्रिप्टमध्ये दुसरे मापदंड आहे जे आपल्याला "about.com" किंवा "lxer.com" एखादे RSS फीड निवडू देते.

ते चालवण्यासाठी आपण खालील टाइप करा:

sh rssget.sh सर्व aboutdotcom

किंवा

श rssget.sh सर्व प्रकारचे

आपण नक्कीच वर्णन किंवा फक्त शीर्षके प्रदान करण्यासाठी वर्णन किंवा शीर्षके सर्व पुनर्स्थित करू शकता

मुळात वरील कोड म्हणते जर दुसरा मापदंड aboutdotcom असेल तर दुसरा कॅरेक्टर बघू या. जर मागील पॅनेलमधील दुसरा शब्द जर दुसरा असेल तर दुसरा अक्षरे lxer असेल तर आतील जर पुन्हा एकदा निवेदन करणे, हे शीर्षक किंवा सर्वकाही

ती स्क्रिप्ट नेस्टेड आयएफ स्टेटमेंटचे उदाहरण म्हणून पुरवली जाते आणि त्या स्क्रिप्टमध्ये खूप गोष्टी चुकीच्या आहेत तर त्या सर्वांना स्पष्ट करण्यासाठी आणखी एक लेख घेईल. मुख्य समस्या अशी आहे की ती स्केल करण्यायोग्य नाही

कल्पना करा की आपण आणखी RSS फीड जसे की रोज डेनिस लिनक्स युजर किंवा लिनक्स आज जोडायचे होते? ही स्क्रिप्ट मोठी होईल आणि जर आपण ठरवले की आतील IF स्टेटमेंट बदलण्यासाठी आपण ते अनेक ठिकाणी बदलू इच्छित असाल.

तेथे एक नेस्टेड साठी वेळ आणि जागा आहे, तर ते sparingly वापरले पाहिजे सहसा तुमचा कोड रिफॅक्टर करण्याचा एक मार्ग आहे ज्यामुळे आपल्याला नेस्टेडची आवश्यकता नाही. भविष्यातील लेखात मी या विषयावर येईन.

आता डफ पॅरामिटरमध्ये प्रवेश करणार्या लोकांची समस्या निराकरण करण्याचा विचार करूया. उदा. उपरोक्त स्क्रिप्टमध्ये जर वापरकर्ता "aboutdotcom" व्यतिरिक्त दुसरे काहीतरी प्रविष्ट करतो तर 2 रा मापदंड म्हणून आरएसएस फीडवरून आरएसएस फीडमध्ये दिसून येते, मग वापरकर्ता युजरमध्ये प्रवेश किंवा नाही याकडे दुर्लक्ष करतो.

याव्यतिरिक्त जर वापरकर्ता "सर्व" किंवा "वर्णन" 1 ला मापदंड म्हणून प्रविष्ट केला नाही तर डीफॉल्ट हे शीर्षके सूची आहे जे वापरकर्त्याचे प्रयोजन काय असेल किंवा नसावे

खालील स्क्रिप्ट पहा (किंवा आपल्या rssget.sh फाइलमध्ये कॉपी आणि पेस्ट करा.

#! / bin / bash

[$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
नंतर
तर [$ 1 = "सर्व"] || [$ 1 = "वर्णन"] || [$ 1 = "शीर्षक"]
नंतर
जर [$ 2 = "फोल्ड डॉट कॉम"]
नंतर

जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई
दुसरे
जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई
फाई
फाई
फाई

सर्वप्रथम लक्षात घ्या की स्क्रिप्ट आता खूप मोठी आहे आणि आपण ताबडतोब पाहू शकता की नियंत्रण कसे करावे जर निवेदनेचे उत्तर होऊ शकते.

या स्क्रिप्टमध्ये महत्त्वाचे म्हणजे 'IF statement' स्टेटमेंटचे त्यावेळा लाइन 2 आणि लाइन 4 वर विभाग.

द || याचा अर्थ OR त्यामुळे ओळ [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] हे दुसरे पॅरामीटर "aboutdotcom" किंवा "lxer" च्या समान आहे का ते तपासते. जर हे नसेल तर IF चे विधान पूर्ण झाले आहे कारण बाह्य सर्वात अधिक असल्यास

त्याचप्रमाणे ओळ [ 4 ] वर [$ 1 = "all"] [$ 1 = "वर्णन"] || [$ 1 = "title"] हे पहिले मापदंड "सर्व" किंवा "वर्णन" किंवा "शीर्षक" सारखे आहे किंवा नाही ते तपासते.

आता वापरकर्त्याने sh rssget.sh बटाटे चीज लावल्यास काहीही परत केले जाणार नाही तर LXER पासूनच्या शीर्षके सूची प्राप्त करण्यापूर्वी

याच्या उलट || आहे &&. && ऑपरेटर AND चे अर्थ.

मी स्क्रिप्टला आणखी एक दुःस्वप्न असे बनवणार आहे परंतु वापरकर्त्याने 2 मापदंड प्रदान केले आहेत हे सुनिश्चित करण्यासाठी ते सर्व महत्त्वाचे तपासा.

#! / bin / bash

जर [$ # -ईक 2]
नंतर

[$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
नंतर
तर [$ 1 = "सर्व"] || [$ 1 = "वर्णन"] || [$ 1 = "शीर्षक"]
नंतर
जर [$ 2 = "फोल्ड डॉट कॉम"]
नंतर

जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई
दुसरे
जर [$ 1 = "सर्व"]
नंतर
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
एलिफ [$ 1 = "वर्णन"]
नंतर
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
दुसरे
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
फाई
फाई
फाई
फाई
फाई

त्या स्क्रिप्टमध्ये जो अतिरिक्त बिंदू आहे तो खालीलप्रमाणे दुसरा बाह्य IF स्टेटमेंट असेल : जर [$ # -ईक 2] . आपण इनपुट मापदंडांबद्दलचे लेख वाचले तर आपल्याला समजेल की $ # इनपुट पॅरामीटर्सच्या संख्येची गणना करते. -एक्वाख्याचा बराच आहे. जर निवेदनेने युजरने दोन मापदंड प्रविष्ट केले तर ते काहीही न करता बाहेर पडले तर ते तपासले जाईल. (विशेषतः अनुकूल नाही).

मला माहिती आहे की या ट्युटोरियलचे रुपांतर मोठ्या प्रमाणात होत आहे. या आठवड्यात कव्हर करण्यासाठी बरेच काही नाही परंतु मी पूर्ण होण्याआधीच स्क्रिप्टची मदत घ्यायची आहे.

कंडीशनल स्टेटमेन्टबद्दल तुम्हाला शिकण्याची शेवटची शेवटची आज्ञा आहे केस स्टोरी.

#! / bin / bash


जर [$ # -ईक 2]
नंतर
केस $ 2 मध्ये
aboutdotcom)
केस $ 1 मध्ये
सर्व)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;;
वर्णन)
rsstail -d -u z.about.com/6/o/m/linux_p2.xml
;;
शीर्षक)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;
इसाक
;;
lxer)
केस $ 1 मध्ये
सर्व)
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
;;
वर्णन)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;;
शीर्षक)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;
इसाक
;;
इसाक
फाई

केस स्टेटमेंट हे लिहिण्याचे एक उत्तम मार्ग आहे जर प्रथम तर

उदाहरणार्थ हा तर्क

IF फळ = केळी
मग हे
जर फल = संत्रे असतील
मग हे
जर फळ / द्राक्षे असतील तर
मग हे
END असल्यास

म्हणून पुनर्लेखन केले जाऊ शकते:

केस फळ मध्ये
केळी)
हे कर
;;
संत्रा)
हे कर
;;
द्राक्षे)
हे कर
;;
इसाक

मुळात केस नंतरची पहिली वस्तू ही आपण तुलना करणार आहात ती गोष्ट आहे (उदा. फल). त्यानंतर कंस पूर्ण करण्यापुर्वी प्रत्येक बाब आपण तुलना करीत असतो आणि जर अगोदरच्या ओळी जुळत असेल; संपली जाईल एक केस स्टेटमेंट रिव्हर्स एएसएसी (जे मागे केस आहे) सह समाप्त केले जाते.

Rssget.sh स्क्रिप्टमध्ये केस स्टेटमेंट त्यापैकी काही भयानक घरटे काढून टाकते जरी ते पुरेसे सुधारत नसले तरी

स्क्रिप्ट खरोखर सुधारण्यासाठी मला तुम्हाला व्हेरिएबल्सची आवश्यकता आहे.

खालील कोड पहा:

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
display = ""
url = ""

[$ # -lt 2] || || [$ # -gt 2]
नंतर
प्रतिध्वनी "वापर: rssget.sh [सर्व | वर्णन | शीर्षलेख] [aboutdotcom | lxer]";
बाहेर पडा;
फाई

केस $ 1 मध्ये
सर्व)
display = "- d -l -u"
;;
वर्णन)
display = "- d -u"
;;
शीर्षक)
display = "- u"
;;
इसाक

केस $ 2 मध्ये
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
इसाक
rsstail $ प्रदर्शन $ url;

एक वेरियेबल हे त्याचे नाव देऊन आणि नंतर त्यास एक मूल्य देणारी परिभाषित केले जाते. वरील उदाहरणात व्हेरिएबल्स असाइनमेंट खालील आहेत:

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
display = ""
url = ""

स्क्रिप्ट व्हेरिएबल्स वापरुन तात्काळ अधिक व्यवस्थापनीय आहे. उदाहरणार्थ प्रत्येक पॅरामीटर वेगळे हाताळले गेले आहे आणि त्यामुळे नेस्टेड आयफ स्टेटमेन्ट नाहीत.

डिस्प्ले व्हेरिएबल आता आपण सर्व, वर्णन किंवा शीर्षक आणि युआरएल व्हेरिएबल aboutdotcom व्हेरिएबल किंवा lxer व्हेरिएबलची व्हॅल्यू सेट आहे यावर आधारित सेट केले आहे की आपण aboutdotcom किंवा lxer निवडले आहे.

Rsstail आदेशास आता योग्यरित्या चालविण्यासाठी डिस्प्ले आणि युआरएल वापरणे आवश्यक आहे.

जेव्हा व्हेरिएबल्स त्यांना फक्त एक नाव देऊन सेट केली जातात, प्रत्यक्षात त्यांचा वापर करण्यासाठी आपल्याला त्यांना समोर $ चिन्ह ठेवावे लागेल. दुसऱ्या शब्दात variable = value व्हेरिएबल व्हॅल्यूज करते, तर $ व्हेरिएबल म्हणजे मला वेरियंटची बेरीज देईल.

खालील ट्यूटोरियल साठी अंतिम स्क्रिप्ट आहे.

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
रोजिलिनक्ससियर = "http://feeds.feedburner.com/everydaylinuxuser/WLlg"
linuxtoday = "http://feedproxy.google.com/linuxtoday/linux"
use = "वापर: rssget.sh [सर्व | वर्णन | शीर्ष] [लॅक्सर | विषयीडॉट | रोजरिलिनक्सस | linuxtoday]"
display = ""
url = ""

[$ # -lt 2] || || [$ # -gt 2]
नंतर
प्रतिध्वनी $ वापर;
बाहेर पडा;
फाई

केस $ 1 मध्ये
सर्व)
display = "- d -l -u"
;;
वर्णन)
display = "- d -u"
;;
शीर्षक)
display = "- u"
;;
*)
प्रतिध्वनी $ वापर;
बाहेर पडा;
;;
इसाक

केस $ 2 मध्ये
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
linuxtoday)
url = $ linuxtoday;
;;
रोजरिलिनक्स्झर)
url = $ dailylinuxuser;
;;
*)
प्रतिध्वनी $ वापर;
बाहेर पडा;
इसाक

rsstail $ प्रदर्शन $ url;

उपरोक्त स्क्रिप्ट अधिक RSS फीड सादर करते आणि एक वापर वेरियेबल आहे जे स्क्रिप्ट कसे वापरावे हे वापरकर्त्यास सांगते जर ते 2 व्हेरिएबल्स प्रविष्ट करत नाहीत किंवा ते व्हेरिएबल्ससाठी चुकीचे पर्याय प्रविष्ट करतात.

सारांश

हे एक महाकाव्य आले आहे आणि कदाचित खूप लवकर निघून गेले असावे. पुढील मार्गदर्शक मध्ये मी IF स्टेटमेन्ट्ससाठी सर्व कॉम्पॅलरी पर्याय दर्शवेल आणि व्हेरिएबल्सशी संबंधित आणखी बरेच काही आहे.

वरील स्क्रिप्टमध्ये सुधारणा करण्यासाठी बरेच काही केले जाऊ शकते आणि हे भविष्यातील मार्गदर्शकांमध्ये समाविष्ट केले जाईल कारण आम्ही लूप, ग्रेप आणि रेग्युलर एक्सप्रेशन पाहतो.

GNOME box च्या सहाय्याने वर्च्युअल मशीनची स्थापना करण्यासाठी ड्यूअल बूटिंग विंडोज व उबुंटू मधील अधिक उपयोगी मार्गदर्शिका शोधण्यासाठी l inux.about.com चे भाग कसे करावे (लेखांची यादी पहाण्यासाठी वर्गांमधून खाली स्क्रोल करा).