कमांड तर्क से पहले या बाद में एम्परसेंड (और) के बीच अंतर


1

मैं एक विंडोज उपयोगकर्ता हूं और मैं अपने टर्मिनल के रूप में सिगविन का उपयोग कर रहा हूं। टर्मिनल से नोटपैड ++ चलाने के लिए मैंने इस पंक्तियों को ~ / .bash_profile में जोड़ा है:

npp () {
    /cygdrive/d/Notepad++/notepad++.exe $(cygpath -w -- "$@")
    }

यह काम करता है, इसलिए अगली बार मुझे इसे पृष्ठभूमि पर लॉन्च करने का एक तरीका चाहिए ताकि मैं अपने टर्मिनल प्रवाह को रोकने के बिना एक एनपीपी ++ उदाहरण खोल सकूं। यह काम किया:

npp foo &

लेकिन मैं उस एम्परसेंड को मैन्युअल रूप से पेश नहीं करना चाहता था, इसलिए मैंने इस उपनाम को ~ / .bash_profile में जोड़ने का प्रयास किया:

alias npp="npp &"

और अब:

npp foo

पृष्ठभूमि में काम करता है।

समस्या यह है कि gnu / linux कमांड से आपको तर्कों के बाद एम्परसेंड लिखने की आवश्यकता होती है, यदि यह काम नहीं करेगा।

यह काम:

ls directory &

यह नहीं है:

ls & directory

इसलिए मैं जानना चाहूंगा कि मैं यहां क्या याद कर रहा हूं, क्योंकि:

npp foo

वास्तव में जब मैं सेट करता हूं तो पृष्ठभूमि में काम करता है

alias npp="npp &"

और ऐसा नहीं है जब मैं यह टिप्पणी करता हूं।

जवाबों:


0

निम्न आदेश पृष्ठभूमि में लॉन्च हो रहा है ls निष्पादन योग्य गुजर रहा है directory अपने एकल तर्क के रूप में, यह वही है जो आप करना चाहते हैं:

ls directory &

वह लॉन्च हो रहा है ls बिना किसी तर्क के पृष्ठभूमि में और फिर लॉन्च करने की कोशिश कर रहा है directory अग्रभूमि में एक कमांड के रूप में, यह वह नहीं है जो आप करना चाहते हैं:

ls & directory

का उपयोग करते हुए alias जब तक यह व्यवहार नहीं बदलेगा cygwin sh एक विशिष्ट विशेषता है जिससे मैं अनजान हूँ, जिस पर मुझे बहुत संदेह है।


आप सही हैं, मैंने परीक्षण किया है कि 'ls & amp; निर्देशिका 'बस वर्तमान निर्देशिका को सूचीबद्ध करें और फिर लापता' निर्देशिका 'कमांड के लिए एक त्रुटि फेंकता है। तो, 'npp foo' 'npp foo & amp;' के रूप में क्यों काम करता है जब 'एनपीपी' 'एनपीपी और' के लिए एक उपनाम है?
adriloma

यह साथ काम नहीं करता है bash लिनक्स के तहत, मैं के तहत परीक्षण नहीं किया cygwin लेकिन मुझे बहुत आश्चर्य होगा अगर यह अलग तरह से व्यवहार करता है।
jlliagre

धन्यवाद, मुझे कुछ याद आ रहा था: मैं नोटपैड ++ बिना -nosession और -multiinst विकल्प के चलाता हूं, इसलिए जब भी इसे खोला जाता है तो यह पिछले सत्र की फाइलों को याद करता है। जैसा कि मैंने हमेशा एक ही फ़ाइल के साथ इसका परीक्षण किया है, यह हमेशा लोड किया गया था, इसलिए 'npp foo' पहले से ही 'npp & amp; foo ', जो' foo 'को अनदेखा करता है, लेकिन foo नोटपैड ++ पर दिखाई देता है क्योंकि इसे पिछले सत्र में लोड किया गया था। क्या गलत समझा, धन्यवाद!
adriloma
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.