bash

2010-03-13 11 views
7

का उपयोग करके फ़ंक्शन की घोषणा और परिभाषा पाएं I 100 से अधिक फ़ाइलों के साथ एक बड़ी सी ++ प्रोजेक्ट देख रहा हूं। एक निश्चित फ़ंक्शन नाम को देखते हुए, किसी को केवल खोज या grep, घोषणा और फ़ंक्शन का निर्धारण जैसे बैश टूल का उपयोग कैसे किया जा सकता है?bash

धन्यवाद

उत्तर

0

बहुत सरल मामले में,

grep -ER '^.*(.*);' file #find declaration. 

परिभाषा के लिए, यदि आप पूरी परिभाषा प्राप्त करना चाहते हैं तो यह थोड़ा मुश्किल है। (यानी ब्रेसिज़ को बंद करने के लिए खोलने से)। आप नमूना सी ++ फ़ाइल

+0

हाय, क्या आप कृपया विवरण में क्या किया है, एक विशिष्ट फ़ंक्शन नाम घोषणा कैसे प्राप्त करें, कृपया बताएं? आप जवाब समझना बहुत मुश्किल है। –

+1

यह सिर्फ कहता है, शुरुआत से सबकुछ पकड़ो जब तक कि आपको "(", तब तक कुछ भी मिल जाए जब तक कि यह अंतराल ब्रेस नहीं पाता ")" प्लस अर्द्ध-कोलन। यह केवल सबसे सरल मामले के लिए है। जैसे कार्य का नाम (int arg1); – ghostdog74

+0

मैंने इस कमांड का इस्तेमाल [मोनो प्रोजेक्ट] (http://www.mono-project.com/Main_Page) में किया था और इससे कई सारे परिणाम उत्पन्न हुए जो मैं नहीं चाहता था। –

0

आप परंपरा है कि समारोह परिभाषा एक पंक्ति के आरंभ में शुरू होता है, तो आप उपयोग कर सकते हैं:

find . -exec egrep '^fn' '{}' ';' >/dev/null -print 

यदि आप शीर्ष लेख को सीमित करना चाहते हैं, तो आप रख सकते हैं - नाम * .hec

एनबी यदि आप इसे बहुत करना चाहते हैं, तो "टैग" और दोस्तों को अद्यतित इंडेक्स रखने में आग लगती है जो भविष्य में तेज़ी से होगी।

10

ack आज़माएं, जो कि grep से बेहतर तरीका है। रंगीन हाइलाइटिंग, काम करता है ...

$ ack funcion_name

प्रिंटों बाहर स्रोत फ़ाइलों के माध्यम से रिकर्सिवली खोज function_name के सभी उपयोगों, यह भी बहुत चालाक .svn अनदेखी करने के लिए है और अन्य मेटाडाटा

0

का उपयोग करके जो दिखाना चाहते हैं उसे दिखाने के लिए आप शायद यह जानना चाहें कि प्रश्न बहुत पुराना है, मुझे @ ghostdog74 उत्तर बहुत दिलचस्प लगता है, लेकिन वह यह जानने के लिए भूल जाता है कि फ़ंक्शन की परिभाषा कैसे प्राप्त करें।

@ ghostdog74 से प्रेरित होकर मुझे लगता है कि यह अच्छा तरीका हो सकता है:

grep -Hnre '^.*fct_return.*fct_name.*(.*).*{ 

यह सिर्फ कहते हैं, आप fct_return लगता है जब तक शुरू से ही सब कुछ हड़पने, तो कुछ भी जब तक यह fct_name उद्घाटन ब्रेस पाता है "(" तब तक कुछ भी जब तक यह बंद ब्रेस पाता है ")" तब तक कुछ भी नहीं मिलता जब तक कि यह "{"