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


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.