पुनरावर्ती खोज सोलारिस पर grep के लिए काम नहीं करता है


20

हमारे सोलारिस सर्वर पर मुझे लग रहा है कि grep -rयह काम नहीं करता है, जो सामान्य तरीका है जो मैं उपयोग करता हूं grep। ऐसा लगता है कि egrepएक ही व्यवहार है।

यह देखते हुए कि मशीन पर मेरा कोई नियंत्रण नहीं है, क्या grepएक पुनरावर्ती खोज करने का एक तरीका है ? या मैं पाइप के उत्पादन की आवश्यकता है findमें grep?


1
सोलारिस रिलीज़ क्या आप उपयोग कर रहे हैं?
जूलियागर

जवाबों:


4

मैं Solaris से परिचित नहीं हूँ, लेकिन यदि आप GNU / linux से Solaris पर स्विच कर रहे हैं, तो आप पाएंगे कि अधिकांश कमांड थोड़ा अलग व्यवहार करेंगे। यूनिक्स उपकरणों के जीएनयू संस्करण में "मालिकाना" यूनिक्स में गायब होने वाली अतिरिक्त विशेषताएं हैं।

आप जीएनयू ग्रेप (रों) डाउनलोड कर सकते हैं यहाँ तो संकलन और स्थापित करें।

यदि आपके पास रूट एक्सेस है, तो आप कॉन्फ़िगर चलाना चाहते हैं --prefix = / usr / लोकल ऐसा हो सकता है कि यूटिलिटीज़ इनस्टॉल / स्थानीय में इंस्टॉल हो

यदि आपके पास रूट एक्सेस नहीं है, तो आप कॉन्फ़िगर चलाना चाहते हैं --prefix = $ {HOME} ऐसे कि उपयोगिताओं को आपके घर निर्देशिका में स्थापित करें


--prefix=${HOME}}/.localशायद अधिक सलाह दी जाती है ... घर निर्देशिका को फ़ोल्डर shareऔर libफ़ोल्डर के साथ बंद करने की आवश्यकता नहीं है
jpaugh

1
एक आदमी का थक्का दूसरे आदमी का संगठित है
bsd

इसमें कोई शक नहीं! ईमानदारी से, जब मैं कहता हूं, तो मैं ऑफ-डे के खिलाफ रक्षा कर रहा हूं, " share! यह एक रद्दी डायरेक्टरी है!" rm -rfरवींद्र!
jpaugh

31

यदि आप उपयोग करना चाहते हैं find, तो यह सबसे तेज़ तरीका होगा:

find . -type f -exec grep pattern {} +

हालाँकि, Gnu grep आपके मशीन पर पहले से ही संस्थापित है।

यह Solaris 11 पर डिफ़ॉल्ट स्थापना का हिस्सा है /usr/gnu/bin/grep। Solaris 10 के लिए समान है जहाँ आप इसे खोजते हैं /usr/sfw/bin/ggrep। पुराने रिलीज पर, यह sunfreeware या अन्य रिपॉजिटरी, चेक /usr/local/bin/grepऔर /opt/csw/bin/grepसामान्य स्थानों के लिए स्थापित किया गया हो सकता है ।


आप के -nameसाथ विकल्प का उपयोग भी कर सकते हैं find
स्लीपवाइजेल

@sleepyweasel -nameफाइलों के अंदर नहीं खोजेगा , बल्कि केवल उन फ़ाइल नामों को खोजेगा, जो ओपी नहीं पूछता है।
jlliagre

6

इसे स्थापित करने के बजाय ggrep का उपयोग करें ।

उदाहरण के लिए "mysearchstring" के लिए वर्तमान निर्देशिका से सभी उपनिर्देशिका ( -R) के लिए खोजें, और मैचों के लिए फ़ाइल नाम और पथ दिखाएं ( -H) और बाइनरी फ़ाइलों ( -I) को अनदेखा करें । *आदेश के अंत में मत भूलना ।

/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *

ggrep /usr/sfw/bin आप में स्थित है, आप इसे अपने प्रोफ़ाइल में एक एक्सपोर्ट कमांड के साथ जोड़ सकते हैं ताकि आप इसे कमांड लाइन से सीधे कॉल कर सकें।

PATH=$PATH:/usr/sfw/bin
export PATH

सोलारिस संस्करण: SunOS 5.10 Generic_147440-13 sun4u स्पार्क SUNW, स्पार्क-एंटरप्राइज


1
कम से कम मेरे सिस्टम पर, ggrepवास्तव में GNU grep है। धन्यवाद!
jpaugh

3

Http://betterthangrep.com/ack से स्टैंडअलोन पर्ल स्क्रिप्ट डाउनलोड करें , इसे अपने में रखें , और इसके बजाय इसका उपयोग करना सीखें। मुझे लगता है कि मेरे दैनिक विकास कार्यों में कई उपयोगों के लिए grep से बेहतर, विज्ञापित है।$HOME/bin


3

सोलारिस ग्रेप में -rविकल्प नहीं है ।

आप निम्न आदेश का उपयोग कर सकते हैं।

find . -type f | xargs grep 'sometext'

2
आपको GNU grep संकलित करने और इसे अपने घर निर्देशिका के तहत कहीं स्थापित करने के लिए "सिस्टम पर नियंत्रण" की आवश्यकता नहीं है।
कीथ थॉम्पसन

@KeithThompson इसे इंगित करने के लिए धन्यवाद। मैंने अपना उत्तर ठीक कर लिया है।
सचिन दिवेकर

यह नाम पैटर्न से मेल खाती सभी फ़ाइलों को खोजने और फ़ाइल के साथ परिणाम दिखाने के लिए बहुत उपयोगी है। जैसेfind /opt/ -name "*.sh" -type f | xargs grep "start"

1

हां, आपको जीएनयू ग्रीप की आवश्यकता होगी। व्यक्तिगत तौर पर मैं क्योंकि आप के संयोजन के साथ भी ऐसा ही कर सकते हैं "-r" झंडा छूट न जाएं findऔर grepलेकिन यह याद दिलाता है कि जीएनयू उपकरण अपने सोलारिस बॉक्स पर उपलब्ध होने मैं सबसे अच्छा अभ्यास क्या विचार करेगा है। तो अब हम शुरू करें:

मैं इंटरनेट पर विभिन्न स्थानों से स्रोत कोड डाउनलोड करने और फिर अपने आप को बनाने के बारे में नहीं जाऊँगा। यह आवश्यक नहीं है। यदि आप चाहते हैं कि आपके सोलारिस में विशिष्ट GNU उपकरण उपलब्ध हों तो निम्न प्रकार से करें:

यदि आप सोलारिस 10 पर हैं तो आपको सोलारिस 10 कंपेनियन डिस्क मिलनी चाहिए। यह सूर्य द्वारा वितरित किया जाता था, लेकिन अब यह यहां रहता है । व्यक्तिगत रूप से मैं इस डिस्क की सामग्री या कम से कम सबसे महत्वपूर्ण जीएनयू भागों को स्थापित करने के लिए इसे हमेशा एक हबबिट बनाऊंगा। अपने संगठन में नए सर्वरों के लिए इसे अपने जम्पस्टार्ट (या जो भी आप उपयोग करते हैं) का हिस्सा बनाएं!

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

pkg: // सोलारिस / archiver / gnu-टार
pkg: // सोलारिस / डेवलपर / gnu-binutils
pkg: // सोलारिस / नैदानिक ​​/ शीर्ष
pkg: // सोलारिस / फ़ाइल / gnu-coreutils
pkg: // सोलारिस / फ़ाइल / gnu-findutils
pkg: // सोलारिस / पाठ / gawk
pkg: // सोलारिस / पाठ / gnu-diffutils
pkg: // सोलारिस / पाठ / gnu-ग्रेप
pkg: // सोलारिस / पाठ / gnu-sed

और यदि आप विकास के लिए मेजबान का उपयोग करते हैं / निर्माण उद्देश्य जिसे आप जोड़ना चाहते हैं:

pkg: // सोलारिस / डेवलपर / निर्माण / gnu-मेक
pkg: // सोलारिस / डेवलपर / निर्माण / मेकअप
pkg: // सोलारिस / डेवलपर / जीसीसी -45
pkg: // सोलारिस / system / हैडर
pkg: // सोलारिस / डेवलपर / निर्माण / autoconf
pkg: // सोलारिस / डेवलपर / निर्माण / automake -110

व्यक्तिगत रूप से मैं अपनी कंपनी के डिफ़ॉल्ट इंस्टॉल के ऊपर (संभावित रूप से कम देव उपकरण) नए सर्वर / जोनों के लिए स्थापित करूंगा। Solaris sysadmins अक्सर लिनक्स दुनिया से अलग होने पर जोर देते हैं लेकिन वास्तव में इसकी कोई आवश्यकता नहीं है। बस इसे करें और इसे अपने डिफ़ॉल्ट इंस्टॉल का हिस्सा बनाएं। आप इसे पछतावा नहीं करेंगे।


मुझे यकीन नहीं है कि अगर आप उस हिस्से को पढ़ते हैं जहां मैंने कहा था कि मुझे मशीन पर कोई नियंत्रण नहीं है ... 'मुझे यकीन है कि यह किसी के लिए उपयोगी जानकारी है, लेकिन यह शायद ही उस सवाल का जवाब है जो मैंने पूछा ।
एरिक विल्सन

यह आपके sysadmin के लिए जानकारी है। उसने आपको एक अपंग मशीन IMHO दिया है। इन चीजों को डिफ़ॉल्ट रूप से स्थापित किया जाना चाहिए। लेकिन हां, आप सही हैं, जानकारी शायद दूसरों के लिए उतनी ही थी जो इस स्थान पर आती है और आपके प्रश्न को पढ़ती है। आज आपको जीएनयू जीआरईपी याद आ रही है, कल आपको जीएनयू टार आदि की कमी खलेगी। आप इसे अभी तक नहीं जानते हैं। :-)
पीटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.