Score:1

ไม่สามารถหลีกเลี่ยงจุดโดยใช้แบ็กสแลช เพราะเหตุใด

ธง in

ดังนั้นฉันจึงรันคำสั่งต่อไปนี้:

$ ~/เอกสาร: touch ball.txt bool-txt bowl.txt bull.txt
$ ~/เอกสาร: ls | grep b..l\.txt
ball.txt
บูล-txt
ชาม. txt
Bull.txt

ฉันไม่ได้คาดหวัง บูล-txt ที่จะนำเสนอในผลลัพธ์เพราะฉันหนีจุดแล้ว แต่ก็ยังไม่ถือว่าเป็นจุดที่แท้จริง ฉันไปผิดที่ไหน

qwr avatar
kr flag
qwr
นั่นอาจเป็นการหลบหนีของเชลล์ ลองใส่ในสตริง
qwr avatar
kr flag
qwr
โดยทั่วไปแล้วการแยกวิเคราะห์ ls นั้นเกิดข้อผิดพลาดได้ง่าย แต่อาจไม่เกี่ยวข้องกับคำถามนี้
Som Shekhar Mukherjee avatar
in flag
ใช่นี้ `ls . | grep b..l\.txt` ใช้งานได้และยัง `ls นี้ | ข..l"\".txt`. นี่คือสิ่งที่คุณหมายถึง? คุณช่วยอธิบายถึงสิ่งที่เกิดขึ้นที่นี่หรือชี้ให้ฉันดูแหล่งข้อมูลที่เกี่ยวข้องได้ไหม @qwr
Score:5
ธง kr
qwr

ฉันแน่ใจว่านี่ซ้ำกับบางคำถาม แต่ฉันหาไม่เจอ บน Unix SE https://unix.stackexchange.com/questions/583428/why-do-i-have-to-quote-an-escaped-character-in-a-regular-expression-for-grep-bu

เมื่อคุณใช้ grep b..l\.txtเชลล์แปลง \. เข้าไปข้างใน . grep จึงได้รับ ข..l.txtแล้วมันตีความ . เป็นตัวละครอะไรก็ได้

เพื่อป้องกันสิ่งนี้ วิธีที่ง่ายที่สุดคือการให้ grep เป็นสตริงเช่น grep 'b..l\.txt'จากนั้นเปลือกจะไม่หนีจากจุด โปรดทราบว่าเครื่องหมายคำพูดเดี่ยวและเครื่องหมายคำพูดคู่ทำสิ่งต่าง ๆ ใน bash แต่นั่นไม่สำคัญในกรณีนี้ หรือใช้เครื่องหมายแบ็กสแลชคู่เพื่อให้เชลล์หนีเครื่องหมายแบ็กสแลชเป็นตัวอักษรและ grep ได้รับอย่างถูกต้อง \..

Som Shekhar Mukherjee avatar
in flag
นอกจากนี้ยังสามารถอธิบายสิ่งนี้ "โดยทั่วไปในการแยกวิเคราะห์ ls มีข้อผิดพลาดได้ง่าย" มันจะเป็นประโยชน์จริงๆ
qwr avatar
kr flag
qwr
เรื่องยาว https://unix.stackexchange.com/q/128985/171025

โพสต์คำตอบ

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