मैं कमांड लाइन पर बैश 3.2 खोल में सीरियल नंबर से इसके मैक ओएस एक्स नाम को ड्राइव करने (आउटपुट) की सूची बनाने की कोशिश कर रहा हूं। इसके लिए मुझे विभाजन नहीं होने के कारण सभी ब्लॉक उपकरणों के माध्यम से लूप करना होगा। इसलिए मुझे इस बैश लूप के लिए एक बेहतर प्रतिस्थापन की आवश्यकता है:for disk in /dev/disk*; do …; done
मैं ls
केवल वाइल्डकार्ड पैटर्न के साथ, पाइपिंग ( grep
बिना) और अन्य बर्तनों (जैसे find
) के बिना , केवल उपयोग करना चाहता हूं ।
ऐसा लगता है कि है ls /dev/disk*
, लेकिन विभाजन में समाप्त होने के मिलान नहीं s1
(जैसे /dev/disk0s1
), s2
आदि।
वापसी
असफल प्रयास:
$ ls /dev/disk[0-9]*[!s][!1-9]
$ ls /dev/disk[0-9]*[!s,!1-9]
$ ls /dev/disk* -d -- *[!s][1-9]
$ ls /dev/disk[0-9]*[!s,1-9]
$ ls /dev/disk[0-9]*[!s]
$ ls /dev/disk[0-9]*[!s][0-9]
$ ls /dev/disk[0-9]*[!s]*
$ ls /dev/disk[0-9]*[!\s1-9]
$ ls /dev/disk[0-9]*[!s1-9]
$ ls /dev/disk[0-9]*([!s1-9])
$ ls /dev/disk[0-9]*[!s]*[0-9]
$ ls /dev/disk[0-9][0-9]
$ ls /dev/disk* --ignore="disk*s?"
$ ls /dev/disk* -I "*s?"
$ ls /dev/disk* -I "*s[1-9]"
$ ls /dev/disk*[!s?]
-bash: syntax error near unexpected token '('