2009-11-25 14 views
5

मुझे पता है कि सवाल बहुत ही व्यक्तिपरक है। लेकिन मैं सवाल को और अधिक बेहतर ढंग से नहीं बना सकता। मैं कुछ मार्गदर्शन की सराहना करता हूं।सिस्टम प्रशासन के लिए बैश/पायथन/पर्ल/रूबी/सेड/Awk के बीच क्या, कोडिंग सहायक उपकरण

मैं अक्सर एक डेवलपर के रूप में लग कैसे आसान यह मेरे लिए हो गया होता अगर मैं एक लॉग फ़ाइल पर कुछ हद जटिल कार्य करने के लिए कुछ उपकरण, या स्रोत फ़ाइलों का एक सेट, हो सकता है या कुछ डेटा सेट आदि

स्पष्ट रूप से, जब एक ही प्रकार के कार्य को दोबारा करने की आवश्यकता होती है और जब गति महत्वपूर्ण होती है, तो मैं इसे सी ++/जावा में लिखने के बारे में सोच सकता हूं।

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

मुझे पता है कि यह पूरा प्रश्न व्यक्तिपरक है और कोई उद्देश्य निश्चित उत्तर नहीं है, लेकिन आम तौर पर डेवलपर समुदाय पूरी तरह से क्या महसूस करता है? इन भाषाओं के किस सबसेट को मुझे पता होना चाहिए ताकि मैं इन सभी प्रकार के कार्यों को आसानी से कर सकूं और अपनी उत्पादकता में सुधार कर सकूं।

क्या पर्ल एक अच्छा विकल्प होगा?
यह सेड/Awk का एक सुपर सेट है, साथ ही यह टेर्स कोड लिखने की अनुमति देता है। मैं कोड की कम लाइनों के साथ किया जा सकता है। यह न तो पठनीय और न ही आसानी से रखरखाव योग्य है, लेकिन मैं वैसे भी उन सुविधाओं को कभी नहीं चाहता था। एकमात्र चीज जो मुझे परेशान करती है वह नकारात्मक सार्वजनिकता है कि पर्ल हाल ही में मिल गया है और रूबी/पायथन समुदाय द्वारा इसकी आलोचना की गई है। साथ ही, मुझे यकीन नहीं है कि यह पूरी तरह से बैश स्क्रिप्टिंग को प्रतिस्थापित कर सकता है या नहीं। यदि नहीं, तो पर्ल + बैश इस तरह के कार्यों के लिए एक अच्छा संयोजन है?

उत्तर

1

मैं एक बैश/sed/awk संयोजन पर पर्ल का उपयोग करता हूं। क्यूं कर ?

  1. आपके पास काम करने के लिए कई निष्पादन योग्यों को दूर करने के बजाए केवल एक निष्पादन योग्य है।
  2. आप पर्ल मॉड्यूल की एक विस्तृत श्रृंखला सबसे कुछ भी करने को का उपयोग कर सकते

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

+0

सीपीएएन भयानक है, और आईएमओ पर्ल की सबसे अनदेखी विशेषता है। – MiffTheFox

3

मुझे पाइथन + बैश एक बहुत अच्छा कॉम्बो मिलता है।
मैं आमतौर पर पायथन का उपयोग करता हूं क्योंकि यह बहुत पठनीय और रखरखाव योग्य है। और क्योंकि बहुत सारे ऑनलाइन दस्तावेज उपलब्ध हैं।

Btw, मैं सुझाव है कि आप एसईडी साथ बैश http://www.ibm.com/developerworks/aix/library/au-python/

+0

अच्छा जवाब, लेकिन ध्यान दें कि "प्रयास: छोड़कर:" उस आलेख में ब्लॉक एक बुरा विचार है। –

0

मेरे पहला पड़ाव है पढ़ने के लिए नियमित अभिव्यक्ति प्रसंस्करण प्रदान करने के लिए। आप लूप, grep और कुछ नियमित अभिव्यक्तियों के लिए एक बैश के साथ बहुत कुछ कर सकते हैं।

यदि आप पहले से ही उन्हें नहीं जानते हैं तो नियमित अभिव्यक्ति सीखना उचित है। एक संपादक जो आपको उनका उपयोग करने देता है (जैसे vi) फाइलों में हेरफेर करते समय बेहद उपयोगी होता है (उदा। आपके पास लॉगफाइल से निकाले गए डेटा का एक सेट है, और आपको इसे उदाहरण के लिए SQL कथन के सेट में बदलना होगा)।

यदि मुझे यह पता लगाने के लिए कुछ मिनटों से अधिक समय लगता है कि मैं जो भी पार्सिंग कार्य करना चाहता हूं, मैं बैश/sed में करने की कोशिश कर रहा हूं, तो मैं आमतौर पर इसके बजाय perl का उपयोग कर समाप्त करता हूं। जैसा कि ikkebr द्वारा सुझाया गया है, पाइथन शायद (या बेहतर) perl के रूप में अच्छा है; मुझे पहले पर्ल सीखने की दुर्भाग्य थी, इसलिए इससे ज्यादा परिचित हूं - अगर मैं फिर से शुरू करना चाहता था, तो मुझे लगता है कि मैं पाइथन सीखूंगा।

4

पायथन बैश से अधिक अभिव्यक्तिपूर्ण और पठनीय है, लेकिन अधिक सेटअप की आवश्यकता है: import os और इसी तरह। सरल कार्यों के लिए, बैश तेज है - जो इसके लिए सबसे महत्वपूर्ण है। और बैश में इनपुट/आउटपुट रीडायरेक्शन की शक्ति को कम मत समझें!

7

मैं ruby के साथ बहुत सारी प्रोसेसिंग करता हूं। इसमें पर्ल की सभी कार्यक्षमताएं हैं, लेकिन मुझे लगता है कि यह थोड़ा और पठनीय होगा। perl और ruby दोनों -n, -e, और -p विकल्प का समर्थन करते हैं।

-e 'command' one line of script. Several -e's allowed. Omit [programfile] 
-n    assume 'while gets(); ... end' loop around your script 
-p    assume loop like -n but print line also like sed 
माणिक में

उदाहरण के लिए

seq 1 4 | ruby -ne 'BEGIN{ $product = 1 }; $product *= $_.to_i; END { puts $product }' 
24 

कौन सा बहुत समान है पर्ल को

seq 1 4 | perl -ne 'BEGIN{ $product = 1 }; $product *= $_; END { print $product }' 
24 

अजगर में, एक ही इस प्रकार दिखाई देगा:

seq 1 4 | python -c 'import sys; print reduce(lambda x,y : int(x)*int(y), sys.stdin.read().splitlines(True))' 
24 

यह है जबकि उपरोक्त बाश/awk/se में करने के लिए संभव है डी, आप अधिक उन्नत सुविधाओं की कमी से सीमित रहेंगे।

1

शैल स्क्रिप्टिंग के साथ, आपको केवल इतना ही पता होना चाहिए कि थोड़ा सा बैश/श और बहुत अजीब है। अपने आदेशों को कॉल करने के लिए बैश, और प्रसंस्करण के लिए अजीब। नीचे दिए गए कुछ यूनिक्स उपकरण, इस तथ्य के विपरीत कि बहुत से लोग उनका उपयोग करते हैं, आवश्यक नहीं हैं क्योंकि अजीब उनके कार्य कर सकते हैं।

1) cut 
2) sed 
3) wc 
4) (e)grep 
5) cat 
6) head 
7) etc.. 

और कुछ अन्य जिनके कार्य ओवरलैप होते हैं। अंत में, आपकी स्क्रिप्ट अनावश्यक टूल के साथ अव्यवस्थित नहीं होगी और आपकी स्क्रिप्ट को धीमा कर देगी।

पर्ल/पायथन बहुत उपयोगी sysadmin उपकरण भी हैं। उनमें से दोनों समान चीजें करते हैं और पुस्तकालय हैं जो आपके sysadmin कार्यों में मदद करते हैं। एकमात्र महत्वपूर्ण अंतर, सौंदर्यशास्त्र से बोल रहा है, उनमें लिखा गया आपके कोड की उपस्थिति।

यदि आप चाहें तो रूबी के बारे में आप जान सकते हैं, लेकिन sysadmin के मामले में, मैं कहूंगा कि इसके बजाय पर्ल/पायथन के लिए जाना है।

1

उस समय आपको उन कुछ अनुच्छेदों को लिखने के लिए लिया गया था, तो आप पहले से ही learned enough Python to make your life significantly better कर सकते थे।

कोई भी जो पहले से ही सी ++ या जावा जानता है वह लगभग 4 घंटे में पायथन में उत्पादक बन सकता है। बस ट्यूटोरियल पढ़ें।

संबंधित मुद्दे