ฉันพยายามที่จะแสดงรายการ (เอาท์พุท) ไดรฟ์ชื่อ Mac OS X จากหมายเลขซีเรียลในเชลล์ Bash 3.2 บนบรรทัดคำสั่ง สำหรับเรื่องนี้ฉันต้องวนลูปผ่านอุปกรณ์บล็อกทั้งหมดที่ไม่ได้เป็นพาร์ติชัน ดังนั้นฉันต้องการการแทนที่ที่ดีกว่าสำหรับ bash loop นี้: 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 '('