2012-10-14 35 views
5

पावती स्थापना पृष्ठ से (http://betterthangrep.com/install/) वहाँ कर्ल के साथ एक लाइनर स्थापना है:अपरिचित खोल वाक्य रचना स्थापित स्क्रिप्ट

curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3 

मैं समझता हूँ कि यह वेबसाइट से फ़ाइल प्राप्त करना और इसे ~/bin/ack में सहेजना, फिर अनुमतियां सेट करना, लेकिन वह अंतिम भाग (! #: 3) क्या करता है? (मैं वाक्य रचना को पहचान नहीं करते हैं और Googling किसी भी उपयोगी परिणाम नहीं था)

+3

मैं betterthangrep.com की देखभाल करने वाले कर रहा हूँ और मैं भी यह क्या है, किया था सिवाय पता चला है कि यह काम किया नहीं पता था। यह पूछने के लिए धन्यवाद कि मुझे क्या पूछना चाहिए था जब किसी ने मुझे यह सबमिट किया था। :) –

+1

कृपया नमस्कारों का उपयोग न करें ["अग्रिम धन्यवाद!"] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from -posts)। और उन्हें अन्य लोगों की पोस्ट में शामिल न करें। – NullUserException

उत्तर

6

अनुभाग आदमी पार्टी, विशेष रूप से पद designators उपधारा में इतिहास विस्तार बुलाया देखें। !#:3 पाइप, जो की तीसरी शब्द ~/bin/ack (अपने उदाहरण में) को दर्शाता है। क्रम में, कमांड के शब्द curl, 0 हैं; http://betterthangrep.com/ack-standalone, 1; >, 2; ~/bin/ack, 3; &&, 4; chmod, 5; 0755, 6; !#:3, 7. है, !#:3 एक अलग चर या शाब्दिक पाठ का उपयोग किए बिना फ़ाइल नाम को दोहराने के लिए एक तरीका है।

सवाल के बारे में के बारे में > और रिक्त स्थान को, ध्यान दें कि > एक metacharacter है, जो आदमी पार्टी एक "चरित्र, जब गैर उद्धृत, अलग करती है कि शब्दों के रूप में परिभाषित करता है। निम्नलिखित में से एक: | &;() <> स्पेस टैब "। तो व्हाइटस्पेस प्रभावित नहीं करता है कि > टोकन के रूप में गिना जाता है या नहीं। लेकिन ध्यान दें कि निम्न उदाहरण में, पहली 3 उद्धृत किया गया है, ताकि पार्टी एक 3> पुनर्निर्देशन के भाग के रूप में व्याख्या नहीं करता है। जब लाइन दर्ज की गई, तो बैश ने विस्तारित रेखा को प्रतिबिंबित किया और फिर इसे निष्पादित किया।

$ seq '3'>bbb;cat !#:3 !#:2 ccc; head !#:3 !#:8 
seq '3'>bbb;cat bbb > ccc; head bbb ccc 
==> bbb <== 
1 
2 
3 

==> ccc <== 
1 
2 
3 
+0

क्या यह अर्थ या सफेद जगह के अनुसार टोकननाइज्ड है? अगर यह 'curl url> file' था, तो क्या अब दो शब्द या चार होंगे? –

+0

यह व्हाइटस्पेस के अनुसार टोकननाइज्ड है। गिनती शून्य से शुरू होती है, इसलिए 'curl' 0 है, यूआरएल 1, रीडायरेक्शन ऑपरेटर 2, और फ़ाइल 3. – chepner

+2

@ एंडीलेस्टर, अतिरिक्त उदाहरण भी देखें –

3

!# निष्पादित करने के लिए आदेश अभी तक लिखे का मतलब है, लेकिन आप :n के साथ एक पैरामीटर निर्दिष्ट कर सकते हैं। :0 पहला शब्द (curl), :1 दूसरा एक (http...) और इतने पर किया जाएगा।

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