बैश कमांड में डॉट का क्या महत्व है और यह तारांकन से कैसे भिन्न है?


11

मैं बैश में डॉट के महत्व को समझने की कोशिश कर रहा हूं और यह एक तारांकन से कैसे अलग है। क्या कोई कृपया विस्तार से बता सकता है? उदाहरण के लिए, के बीच क्या फर्क है cp -ar /foo/. /foo2/औरcp -pr /foo/* /foo2/

जवाबों:


12

डॉट ( .) केवल एक .निर्देशिका के अंदर की निर्देशिका है जो निर्देशिका के समान ही है ( ls -la /fooयह आपको दिखाएगा)। इसलिए यदि आप foo/.कहीं और कॉपी करते हैं, तो आप खुद fooको कॉपी किए बिना नीचे के सभी पेड़ को प्रभावी ढंग से कॉपी fooकरते हैं (आप इसे कॉपी कर रहे हैं, foo2/.जो कि जैसा है foo2)।

/foo/*गैर छिपा फ़ाइलों और में निर्देशिका की सूची में खोल से विस्तार किया जाता है /foo, तो यह नीचे एक ही निर्देशिका संरचना की नक़ल की /fooमें /foo2के रूप में अच्छी तरह से, dotfiles / dotdirs के लिए छोड़कर। प्रभावी रूप से, cpकई तर्क प्राप्त करेंगे (संभावित रूप से)। यदि सूची बहुत बड़ी है, तो यह cpफेल होने का कारण भी हो सकता है ।


क्षमा करें, लेकिन मैं भ्रमित हो रहा हूं। तो स्वभाव से, तारांकन कमांड को पुनरावर्ती बनाता है? दूसरे शब्दों में, cp -r /foo/*क्या ऐसा ही है cp /foo/* ?
माइक बी

5
@ माइक, नहीं, शेल केवल / foo डायरेक्टरी में फाइलों की सूची का विस्तार करता है। यह cp के व्यवहार में परिवर्तन नहीं करता है। उपयोग set -xया echo cp -pr /foo/* /foo2देखने के लिए कि क्या हो रहा है। यह महसूस करना महत्वपूर्ण है कि यह शेल है जो वाइल्डकार्ड का विस्तार करता है। cpस्टार नहीं देखता।
स्टीफन चेज़लस

इस बारे में क्या? chmod 755 -R। बनाम
चामोद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.