Score:1

Bash slash ใช้ไม่ได้ในวงเล็บเหลี่ยมสัญลักษณ์แทน

ธง ad

ฉันสงสัยว่าทำไมคำสั่ง ls -pd *[!/] หรือ ls -pd *[!\/] ไม่ตรงกับไฟล์ทั้งหมดที่ไม่ได้ลงท้ายด้วย /.

กรณีการใช้งานของฉันคือฉันต้องการแสดงเฉพาะไฟล์ในไดเร็กทอรีการทำงานปัจจุบัน รู้ไว้ใช้ดีกว่า หา แทน แต่ฉันต้องการทำความเข้าใจโดยทั่วไปว่าสามารถใช้ได้หรือไม่ / ในวงเล็บเหลี่ยมในสัญลักษณ์แทน

fo flag
คุณอาจได้รับคำถามนี้มากขึ้นใน stackoverflow
fo flag
ในคู่มือ [Filename Expansion](https://www.gnu.org/software/bash/manual/bash.html#Filename-Expansion) กล่าวว่า "เมื่อจับคู่ชื่อไฟล์ อักขระเครื่องหมายทับจะต้องจับคู่อย่างชัดเจนเสมอโดย เฉือนในรูปแบบ". นอกเหนือจากนั้น ฉันไม่พบสิ่งใดที่ระบุว่า `*/` ขยายไปยังไดเร็กทอรีเท่านั้น โปรดทราบว่าเครื่องหมายทับไม่ได้เป็นส่วนหนึ่งของชื่อไฟล์ ฉันไม่รู้วิธีสร้างรูปแบบโกลบอลที่ไม่รวมไดเร็กทอรี
fo flag
บางที `ls -pd1 * | grep -v '/$'`
Alex Misiulia avatar
ad flag
@glennjackman ขอบคุณสำหรับคำตอบ แต่น่าแปลกที่มันไม่มีบันทึกไว้ในคู่มือหรือแหล่งข้อมูลอื่นๆ ฉันสามารถจับคู่อักขระพิเศษอื่นๆ ด้วยการใส่เครื่องหมายคำพูดในวงเล็บเหลี่ยม แต่แบ็กสแลชไม่ทำงาน
ph flag
@AlexMisiulia เครื่องหมายทับไม่ได้เป็นส่วนหนึ่งของชื่อไฟล์ แต่เป็นตัวคั่น *หลัง* ชื่อไฟล์ ดังนั้นโดยเนื้อแท้แล้วมันจะทำงานแตกต่างจากอักขระที่เป็นส่วนหนึ่งของชื่อไฟล์
Alex Misiulia avatar
ad flag
@GordonDavisson ขอบคุณ บางทีคุณอาจมีเอกสารอ้างอิงที่สามารถอธิบายหัวข้อนี้ได้อย่างลึกซึ้ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา