2011-12-22 18 views

उत्तर

120

इसका मतलब है "आउटपुट पर इस कमांड को गूंज न करें।" तो यह नियम कह रहा है "खोल कमांड : निष्पादित करें और आउटपुट गूंज न करें।

बेशक शेल कमांड : नो-ऑप है, इसलिए यह कह रहा है" कुछ भी नहीं करें, और न बताएं। "

क्यों?

चाल यहाँ आप दो अलग अलग वाक्यविन्यास की एक अस्पष्ट संयोजन मिल गया है कि है। मेकअप (1) वाक्य रचना @ से आरंभ होने वाला कार्रवाई का उपयोग करते हैं, जो केवल है आदेश को गूंजने के लिए नहीं। तो

जैसे नियम
always: 
     @echo this always happens 

उत्सर्जन नहीं होगा

echo this always happens 
    this always happens 

अब, एक नियम की कार्रवाई भाग हो सकता है : सहित किसी भी शेल कमांड,।

$ help : 
:: : 
    Null command. 

    No effect; the command does nothing. 

    Exit Status: 
    Always succeeds. 
+0

धन्यवाद, वहाँ कहीं है कि और अधिक विस्तार में इस का वर्णन करता है? मुझे यकीन नहीं है कि "आउट-यूट" क्या है। – cdwilson

+9

मेरे टाइपिंग का मज़ा न लें, आप किसी दिन भी पुराने रहेंगे। –

+0

धन्यवाद, यह वास्तव में सहायक था! जब तक मैं आपका जवाब नहीं पढ़ता, मैं सोच रहा था कि '@:' कुछ मजाकिया बनावट थी (मुझे नहीं पता था कि यह दो चीजों का संयोजन था ...) – cdwilson

28

के बारे में आपने ऐसा क्यों हो सकता है उत्सुक लोगों के लिए, यह उपयोगी है अगर आप कुछ की तरह नाटक करने के लिए किया गया था चाहते हैं, तो यह है कि मेक होने के लिए नहीं करता है उत्पादन "कुछ भी नहीं: बैश मदद कहीं भी और साथ ही यह बताता है "आपके लक्ष्य के लिए किया गया।

एक उदाहरण यह है कि यदि आपके पास हमेशा एक निष्पक्ष लक्ष्य है जिसे आप हमेशा निष्पादित करते हैं, और इसमें आपके पास कमांड में सशर्त का समूह है। यदि आप शर्तों को झूठ बोलते हैं और कुछ भी नहीं किया जाता है तो आप कम से कम कुछ करना चाहते हैं।

उदाहरण के लिए (लिनक्स की पटकथा/Makefile.clean से):

__clean: $(subdir-ymn) 
ifneq ($(strip $(__clean-files)),) 
    +$(call cmd,clean) 
endif 
ifneq ($(strip $(__clean-dirs)),) 
    +$(call cmd,cleandir) 
endif 
ifneq ($(strip $(clean-rule)),) 
    +$(clean-rule) 
endif 
    @: 
+0

आह हे, तो यह है! –

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