Bash में रिक्त स्थान वाले नाम वाली निर्देशिका में cd कैसे करें?


84

मैंने कोशिश की cd "~/Library/Application Support/" -bash: cd: ~/Library/Application Support/: No such file or directory

भी cd ~/Library/Application Support/ -bash: cd: ~/Library/Application Support/: No such file or directory

जवाबों:


113

आप Tabपहले कुछ वर्णों को दबाने के बाद कुंजी का उपयोग कर सकते हैं (यह तब आपके लिए "शेष" फ़ोल्डर को cd ~/LTabभर देगा। उदाहरण के लिए , cd ~/Library/फिर टाइप में भरता है ApTabऔर यह आपके लिए बाकी हिस्सों में भर जाएगा।

यदि शब्दों के बीच एक स्थान है और आप ऊपर दिए गए तरीकों का उपयोग नहीं करना चाहते हैं, \तो अंतरिक्ष से पहले (बैकस्लैश) डालें, जैसे cd ~/Library/Application\ Support


क्या पथ मामला संवेदनशील या असंवेदनशील है? मैं cd ~ / पुस्तकालय द्वारा पुस्तकालय का उपयोग कर सकता हूं, लेकिन अगर मैं गलत हुआ तो टैब विधि काम नहीं करेगी।
कॉलिनफैंग

@colinfang OS X केस असंवेदनशील है, लेकिन केस-संरक्षण है। बैश शेल स्व-पूर्ण होने पर थोड़ा अधिक भेदभाव वाला होना चाहिए।
NReilingh

@ नृसिंह - अहा, thx।
कॉलिनफैंग

1
@colinfang: आप उपयोग कर सकते हैं shopt -s nocaseglobऔर bind 'set completion-ignore-case on'बनाने के लिए बैश कम मामले के प्रति संवेदनशील।
क्रिस जॉन्सन

2
colinfang - एक मामले के लिए असंवेदनशील टैब बैश संगतता के साथ पूरा करने की कोशिश 'zsh'। साथ ही इस शेल का वाइल्डकार्ड पूरा होना बहुत अच्छा है।
07ark

27

यहां मुख्य मुद्दा यह है कि शेल ( बैश ) कैसे उद्धृत करता है और यह कैसे टिल्ड विस्तार और "शब्दों" में विभाजन को प्रभावित करता है (कार्यक्रम चलाए जाने के लिए तर्क)।

बैश केवल प्रमुख टिल्ड को विशेष रूप से व्यवहार करता है यदि इसे उद्धृत नहीं किया जाता है। इसके अलावा, निम्नलिखित स्लैश को भी उद्धृत नहीं किया जाना चाहिए।

इसी समय, बैश गैर-उद्धृत व्हाट्सएप के आधार पर "शब्द" में कमांड लाइन बनाते हैं। cdआदेश आम तौर पर ठीक एक तर्क (गंतव्य निर्देशिका) की आवश्यकता है। एक कमांड लाइन जैसे दो तर्कों के साथ cd foo barचलने का मतलब है cd: fooऔर bar। यदि आप केवल एक foo barतर्क भेजना चाहते थे , तो आपको स्थान उद्धृत करने की आवश्यकता है:
(उदाहरण के लिए) cd foo\ bar(नीचे दिए गए अधिक उद्धरण उदाहरण देखें)।

आपकी विशेष स्थिति में, आपको निर्देशिका नाम में स्थान का हवाला देते हुए टिल्डे और निम्नलिखित स्लैश को छोड़ने की आवश्यकता है। आपका cd "~/Library/Application Support/"परीक्षण बहुत अधिक (टिल्ड और उसके स्लैश) उद्धृत करते हुए समाप्त होता है, जबकि आपका cd ~/Library/Application Support/परीक्षण बहुत कम उद्धृत करता है (यह निर्देशिका नाम में स्थान को उद्धृत करता है)।

सबसे आम समाधान केवल स्थान को उद्धृत करने के लिए भागने वाले एकल-चरित्र का उपयोग करना है:

    cd ~/Library/Application\ Support

आप या तो केवल स्पेस या स्पेस या उस तर्क के कुछ अन्य बिट्स के आसपास सिंगल या डबल कोट्स का उपयोग कर सकते हैं (लेकिन नहीं ~/!):

    cd ~/Library/Application' 'Support
    cd ~/Library/Application" "Support
    cd ~/Library/App'lication 'Support
    cd ~/Library/Application" Supp"ort
    cd ~/'Library/Application 'Support
    cd ~/"Library/Application "Support

इस प्रकार के उद्धरणों के अलग-अलग अर्थ हैं, लेकिन वे इन उदाहरणों में समान हैं। सिंगल कोट्स शाब्दिक तार की रक्षा करते हैं जबकि दोहरे उद्धरण उद्धृत क्षेत्र में विभिन्न विस्तार और प्रतिस्थापन की अनुमति देते हैं।

अक्सर, आप केवल शेल को आपके लिए काम करने दे सकते हैं।

  • ग्लोबिंग (वाइल्डकार्ड):

    cd ~/L*/Ap*

    आप shopt -s nocaseglobग्लोबिंग केस को असंवेदनशील बनाने के लिए उपयोग कर सकते हैं :

    cd ~/l*/ap*
  • समापन:

    Tabप्रवेश करने के बाद दबाने cd ~/Lसे संभवतः इसका विस्तार होगा cd ~/Library/। प्रवेश करने के बाद फिर से
    दबाव डालना (आपके पास अब ) संभवतः इसका विस्तार करेगा (शेल ने स्वचालित रूप से भागने के पीछे डाला)।TabApcd ~/Library/Apcd ~/Library/Application\ Support/

    आप bind 'set completion-ignore-case on'पूरा मामला असंवेदनशील बनाने के लिए उपयोग कर सकते हैं :

    cd ~/l Tabcd ~/Library/; ap Tabcd ~/Library/Application\ Support/


अच्छा जवाब @ क्रिस। चाबी की तरह दिखने के लिए आपको टैब वर्ण कैसे मिले?
रोबजालोस


9

जब आप एक पथ को दोहराते हैं, तो आप टिल्ड विस्तार को रोक रहे हैं। तो ऐसा करने के कुछ तरीके हैं:

cd ~/"My Code"
cd ~/'My Code'

यहां टिल्ड को उद्धृत नहीं किया गया है, इसलिए टिल्ड विस्तार अभी भी चलाया जाएगा।

cd "$HOME/My Code"

आप दोहरे चर के अंदर पर्यावरण चर का विस्तार कर सकते हैं; यह मूल रूप से टिल्ड का विस्तार है

cd ~/My\ Code

आप बैकस्लैश के साथ विशेष वर्ण (जैसे स्थान) से भी बच सकते हैं।


9

आप वैकल्पिक रूप से केवल टर्मिनल विंडो पर एक फ़ोल्डर खींच सकते हैं, पूर्ण फ़ाइल / फ़ोल्डर पथ को ड्रैग पर ऑटो-पेस्ट किया जाएगा।


4

आपको " Application Support" में जगह से भागने की जरूरत है

प्रयत्न, कोशिश $ cd ~/Library/Application\ Support/


0

यदि सामान्य तरीके काम नहीं करते हैं, तो रिक्त स्थान को बदलने की कोशिश कर रहे हैं %20

एसएसएच और अन्य डोमेन-स्टाइल कमांड के साथ काम करते समय यह मेरे लिए काम करता है auto_smb


0

यदि आप फ़ाइल या फ़ोल्डर के नाम में 1) फ़ाइल का नाम है, तो आप फ़ोल्डर / फ़ाइलों के लिए यह कोशिश कर सकते हैं। कमांड का नाम cd ~ / file \ name.extension / (या) cd ~ / "फ़ाइल name.extension" / होना चाहिए।


1
यह उत्तर कैसे भिन्न होता है या किसी अन्य, समान, उत्तरों पर सुधार करता है?
fsb

अंतरिक्ष को परिभाषित करने और उद्धरण देने के लिए इसका सही टर्मिनल सिंटैक्स उपयोगकर्ता द्वारा परिभाषित एक में से एक है और टैब कुंजी का उपयोग करने पर भी नाम नहीं लेता है 1) फ़ाइल का नाम। कस्टम 2) फ़ाइल का नाम। कस्टम, इस प्रकार के ऑटो के लिए टैब दबाते समय शब्दों का पूरा होना "फ़ाइल" तक प्रदर्शित होता है उस समय हम टर्मिनल में स्थान को परिभाषित करने के लिए इस बैकलैश का उपयोग कर सकते हैं। @ एफएसपी
प्रशान्त सिवेसन

पाठकों को दिखाने के लिए यह सभी जानकारी उत्तर में होनी चाहिए कि यह स्वीकृत उत्तर सहित 9 अन्य उत्तरों से अलग कैसे है।
fsb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.