टर्मिनल कमांड में प्रश्न चिह्न का क्या अर्थ है?


11

यह प्रश्न ( मैं एक कुबंटू 12.04 इंस्टॉल से सूक्ति कैसे निकाल सकता हूं? ) में प्रश्न चिह्न के साथ कमांड हैं:

sudo apt-get remove --purge ubuntu-desktop
sudo apt-get remove --purge unity?
sudo apt-get remove --purge gnome?

उनका क्या मतलब है?

जवाबों:


15

उन्हें वाइल्डकार्ड (ग्लोबिंग पैटर्न) कहा जाता है

मानक वाइल्डकार्ड (ग्लोबिंग पैटर्न के रूप में भी जाना जाता है) का उपयोग विभिन्न कमांड-लाइन उपयोगिताओं द्वारा कई फाइलों के साथ काम करने के लिए किया जाता है।
मानक वाइल्डकार्ड का उपयोग लगभग किसी भी कमांड (mv, cp, rm और कई अन्य सहित) द्वारा किया जाता है।

  • (question mark)

    यह किसी भी एकल चरित्र का प्रतिनिधित्व कर सकता है। यदि आपने कमांड लाइन में कुछ निर्दिष्ट किया है जैसे "hd?" GNU / Linux hda, hdb, hdc और az, 0-9 के बीच के हर दूसरे अक्षर / संख्या की तलाश करेगा।

  • *(asterisk)

    यह किसी भी वर्ण का प्रतिनिधित्व कर सकता है (शून्य सहित, दूसरे शब्दों में, शून्य या अधिक वर्ण)। यदि आपने "cd *" निर्दिष्ट किया है, तो यह "cda", "cdrom", "cdrecord" और "cd" से शुरू होने वाली किसी भी चीज़ को "cd" सहित उपयोग करेगा। "m * l" मिल, mull, ml, और किसी भी चीज़ से हो सकता है जो m से शुरू होता है और एक l से समाप्त होता है।

  • [ ] (square brackets)

    एक सीमा निर्दिष्ट करता है। अगर आपने m [a, o, u] m किया है तो यह बन सकता है: mam, mum, mom अगर आपने किया: m [ad] m यह कुछ भी बन सकता है जो m से शुरू होता है और समाप्त होता है और किसी भी वर्ण के लिए d inbetween होता है। उदाहरण के लिए, ये काम करेंगे: mam, mbm, mcm, mdm। इस तरह के वाइल्डकार्ड एक "या" रिश्ते को निर्दिष्ट करते हैं (आपको केवल एक से मेल खाना चाहिए)।

  • { } (curly brackets)

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


उदाहरण के लिए, यह मान्य होगा:

  • cp { .doc, .pdf} ~

    यह उपयोगकर्ता होम निर्देशिका में .doc या .pdf के साथ समाप्त होने वाली किसी भी चीज़ को कॉपी करेगा। ध्यान दें कि अल्पविराम (या कहीं और) के बाद रिक्त स्थान की अनुमति नहीं है।

  • [!]

    यह निर्माण [] निर्माण के समान है, कोष्ठक के अंदर किसी वर्ण के मिलान के अलावा, यह किसी भी वर्ण से मेल खाएगा, जब तक कि यह [और] के बीच सूचीबद्ध नहीं है। यह एक तार्किक नहीं है। उदाहरण के लिए rm myfile [! 9] सभी myfiles * (यानी। Myfiles1, myfiles2 आदि) को हटा देगा, लेकिन यह नाम के भीतर कहीं भी 9 नंबर वाली फाइल को नहीं हटाएगा।

  • \ (backslash)

    एक "बच" चरित्र के रूप में प्रयोग किया जाता है, अर्थात् एक विशेष चरित्र की रक्षा के लिए। इस प्रकार, बैकस्लैश के लिए "\" खोज करता है। ध्यान दें कि आपको उद्धरण चिह्नों और बैकस्लैश (तों) का उपयोग करने की आवश्यकता हो सकती है।

अधिक उदाहरणों के लिए: इस पृष्ठ पर जाएँ


3
यह ध्यान देने योग्य है कि पैकेज के नाम की apt-get removeआवश्यकता होती है , न कि फ़ाइल नाम की, जो शेल द्वारा वाइल्डकार्ड विस्तार को काफी हद तक बेकार कर देती है। यदि आप पैकेज की एक श्रृंखला को हटाना चाहते हैं, तो आपको शेल को एक ग्लोब के रूप में व्याख्या करने की कोशिश करने से रोकने के लिए उचित पूर्ण अभिव्यक्ति का उपयोग करने की आवश्यकता है apt-get remove 'gnome.*'

4
Standard wildcards are used by nearly any command (including mv, cp, rm and many others).=> FALSE। इन वाइल्डकार्ड का विस्तार शेल द्वारा किया जा रहा है और कमांड को जो प्राप्त होता है वह विस्तार (यानी फाइल जो पैटर्न से मेल खाती है) पैटर्न के बजाय होता है। (यदि कोई ऐसी फाइल नहीं है जो पैटर्न से मेल खाती है, तो उस पैटर्न को सीधे कमांड को पास कर दिया जाएगा, हालांकि)
कार्लोस कैंपडरो

17

आम तौर पर, बाश में, ?एक ग्लोब पैटर्न है जो एक मनमाना चरित्र का विस्तार करता है।

उदाहरण के लिए:

$ echo Hello1 > foo1
$ echo Hello2 > foo2
$ cat foo?
Hello1
Hello2

यह एक के लिए समान है *, लेकिन एक *के लिए फैलता है 0 या अधिक अक्षर, जबकि एक ?के लिए फैलता है ठीक एक (मनमाना) चरित्र।

हालांकि आपके विशेष मामले ?में, कमांड में जाहिरा तौर पर एक टाइपो था।


तो यह मेरे मामले में बेकार / बेकार है, है ना?
ओकर

हाँ। वास्तव में यह आपके द्वारा पूछे गए जवाब से जुड़ा हुआ था जब आपने अपना प्रश्न पूछा था। :)
माल्टे स्कॉरप्पा

1
यह विश्वास नहीं कर सकता: -o
Ooker

1
यहां तक ​​कि अगर वे सही वाइल्डकार्ड थे, तो इस उपयोग को उद्धृत किए बिना बचा जाना चाहिए। apt-get REs को समझें, लेकिन यदि gnome1वर्तमान निर्देशिका में मौजूद एक फ़ाइल मौजूद है, तो शेल इसे विस्तारित करेगा, इससे पहले कि इसे देखने का कोई मौका मिले।
रमनो

@ जोकर आप इसे अब कभी नहीं भूलेंगे!
कॉमरेडमाइक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.