আমি কেন একটি সাব-শেলে এলএস * .txt করতে পারি না?


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 খুঁজে পাচ্ছে না ...
ইনগো

@ ল্যাঙ্গো: এটি ওপি'র পোস্টেও রয়েছে
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.