मैं क्यों नहीं कर सकता / रही हूँ।


13
~$ echo $(ls)  
arguments.txt cecho.sh Desktop Documents Downloads example.txt Music Pictures Public     
~$ echo $(ls "*.txt")  
ls: cannot access *.txt: No such file or directory  

दूसरा सबस्क्रिप्शन कमांड विफल क्यों होता है?

जवाबों:


27

आसपास के उद्धरण निकालें *.txtऔर यह काम करना चाहिए। उद्धरण के साथ शेल शाब्दिक फ़ाइल नाम के लिए दिखेगा *.txt। पता लगाने के लिए / प्रयोग, नाम के साथ एक फ़ाइल बनाने की कोशिश *.txtके रूप में touch '*.txt'और आदेश को दोहराएँ।


6
ध्यान दें कि दोहरे उद्धरण (कम से कम bashऔर इसी तरह के गोले जैसे zsh) एकल उद्धरण के समान नहीं हैं! उदाहरण के लिए, पैरामीटर विस्तार ( $foo) दोहरे उद्धरण चिह्नों के अंदर किया जाता है, लेकिन एकल उद्धरण नहीं।
ब्लैकलाइट चमकते हुए

30

उसी तरह जो आप ls "*.txt"एक सामान्य शेल में नहीं चला सकते हैं, आप इसे किसी सबस्क्रिप्शन में भी नहीं चला सकते हैं। जब आप *.txtउद्धरणों में डालते हैं , तो आप lsएक शाब्दिक फ़ाइल को खोजते हैं जिसे *.txtतब बुलाया जाता है जब आपको ऐसा करना चाहिए:

$ echo $(ls *.txt) # => file.txt otherfile.txt

ऐसा करने का एक बेहतर तरीका यह है कि इसका उपयोग न किया जाए ls

$ echo *.txt # => file.txt otherfile.txt

7
निरर्थक को हटाने के लिए +1 ls
ब्लैकलाइट चमकते हुए

3
नाइटपैकिंग: आप चला सकते हैं ls -l "*.txt"। या कम से कम मैं कर सकता हूं। मैं अक्सर ऐसा नहीं करता हूं, लेकिन जब मैं करता हूं, तो यह आमतौर पर मुझे बताता है कि यह * .txt नहीं मिल सका ...
Ingo

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