"निश्चित" उत्तर बेशक आपके लिए द यूसलेस यूज़ ऑफ़ cat
अवार्ड द्वारा लाया गया है ।
बिल्ली का उद्देश्य फाइलों को समेटना (या "कैटेनट") करना है। यदि यह केवल एक फ़ाइल है, तो इसे बिना किसी चीज़ के साथ समाप्त करना समय की बर्बादी है, और आपको एक प्रक्रिया में खर्च करना है।
इंस्टेंटिंग बिल्ली बस इतना है कि आपका कोड अलग-अलग पढ़ता है सिर्फ एक और प्रक्रिया के लिए बनाता है और इनपुट / आउटपुट धाराओं का एक और सेट जिसकी आवश्यकता नहीं है। आमतौर पर आपकी लिपियों में वास्तविक होल्ड अपूरणीय लूप और एक्चुअली प्रोसेसिंग होने वाला है। अधिकांश आधुनिक प्रणालियों में, एक अतिरिक्त cat
आपके प्रदर्शन को मारने वाला नहीं है, लेकिन आपके कोड को लिखने के लिए लगभग हमेशा एक और तरीका है।
अधिकांश कार्यक्रम, जैसा कि आप ध्यान दें, इनपुट फ़ाइल के लिए एक तर्क को स्वीकार करने में सक्षम हैं। हालांकि, हमेशा शेल बिलिन <
का उपयोग किया जाता है, जहां एक एसटीडीआईएन स्ट्रीम का उपयोग किया जा सकता है, जो पहले से चल रही शेल प्रक्रिया में काम करके आपको एक प्रक्रिया से बचाएगा।
यहां तक कि आप इसे लिखने के साथ रचनात्मक भी प्राप्त कर सकते हैं। आम तौर पर इसे इस तरह से किसी भी आउटपुट रीडायरेक्ट या पाइप को निर्दिष्ट करने से पहले एक कमांड के अंत में रखा जाएगा:
sed s/blah/blaha/ < data | pipe
लेकिन यह इस तरह से नहीं है। यह पहले भी आ सकता है। उदाहरण के लिए आपका उदाहरण कोड इस तरह लिखा जा सकता है:
< data \
sed s/bla/blaha/ |
grep blah |
grep -n babla
यदि स्क्रिप्ट की पठनीयता आपकी चिंता का विषय है और आपका कोड इतना गड़बड़ है कि इसके लिए एक पंक्ति जोड़ने cat
से उम्मीद की जाती है कि इसे आसानी से पालन किया जा सकता है, तो आपके कोड को साफ करने के अन्य तरीके भी हैं। एक कि मैं बहुत उपयोग करता हूं जो स्क्रिप्ट को आसान बनाने में मदद करता है बाद में पता लगाने के लिए तार्किक सेटों में पाइप को तोड़ रहा है और उन्हें कार्यों में सहेज रहा है। स्क्रिप्ट कोड तब बहुत स्वाभाविक हो जाता है, और पाइपलाइन का कोई एक हिस्सा डिबग करना आसान होता है।
function fix_blahs () {
sed s/bla/blaha/ |
grep blah |
grep -n babla
}
fix_blahs < data
आप तब जारी रख सकते हैं fix_blahs < data | fix_frogs | reorder | format_for_sql
। इस तरह से पढ़ी जाने वाली एक अनुगामी वास्तव में पालन करना आसान है, और व्यक्तिगत घटकों को उनके संबंधित कार्यों में आसानी से डिबग किया जा सकता है।