แปลงสตริงเป็นรูปแบบ bash ที่หลบหนี

จะสร้างสตริงปกติ (ชื่อไฟล์ในกรณีของฉัน) ให้เป็นสตริงที่ Escape ของ Linux CLI/bash ได้อย่างไร

ตัวอย่าง:

"It's a great weather today" -> "It\'s\ a\ great\ weather\ today"

"Wind [Wine]" -> "Wind\ [Wine]"

"/Downloads/RPM's/" -> "/Downloads/RPM\'s/"

ฉันต้องการทราบว่ามีวิธีที่ง่ายกว่านี้หรือไม่ เนื่องจากฉันกำลังอ่านชื่อไฟล์ในสคริปต์ Python และเมื่อฉันส่งต่อไปยังคำสั่ง bash มันก็ล้มเหลว

ปัญหาคือจำนวนไฟล์มากเกินไป และฉันไม่สามารถเปลี่ยนชื่อหรือจัดการสตริงให้กับไฟล์เหล่านั้นได้


ฉันใช้ Python 2.7 บนระบบ CentOS 7


person Community    schedule 28.04.2017    source แหล่งที่มา
comment
คุณใช้ subprocess หรือไม่? หากสคริปต์ bash เขียนอย่างถูกต้อง คุณก็ไม่จำเป็นต้องเขียน หากสคริปต์ bash ไม่ได้ เขียนอย่างถูกต้อง ไม่รับประกันว่าการทำเช่นนี้จะช่วยได้   -  person chepner    schedule 28.04.2017
comment
foo="Wind [Wine]"; subprocess.call(["script.bash", foo]). ไม่จำเป็นต้องมีการ Escape ของ foo   -  person chepner    schedule 28.04.2017


คำตอบ (1)


ใช้ shlex ดูที่นี่ โดยมีอาร์กิวเมนต์สำหรับ escape, qoutes และ escapedqoutes

person Community    schedule 28.04.2017
comment
ขอบคุณ ฉันยังพบลิงก์นี้ซึ่งมีประโยชน์เช่นกัน: stackoverflow.com/questions/18116465/ - person ; 28.04.2017