Ubah string menjadi bentuk escape bash

Bagaimana cara membuat string normal (nama file dalam kasus saya) ke string yang lolos Linux CLI/bash?

Contoh:

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

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

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

Saya ingin tahu apakah ada cara yang lebih mudah untuk melakukan itu, karena saya membaca nama file dalam skrip python saya dan ketika saya meneruskannya ke perintah bash, gagal.

Masalahnya adalah jumlah file terlalu banyak dan saya tidak dapat mengganti nama atau melakukan manipulasi string untuk file tersebut.


Saya menggunakan Python 2.7 pada Sistem CentOS 7


person Community    schedule 28.04.2017    source sumber
comment
Apakah Anda menggunakan subprocess? Jika skrip bash ditulis dengan benar, Anda tidak perlu melakukannya. Jika skrip bash tidak ditulis dengan benar, tidak ada jaminan bahwa melakukan hal ini akan membantu.   -  person chepner    schedule 28.04.2017
comment
foo="Wind [Wine]"; subprocess.call(["script.bash", foo]). Tidak diperlukan pelolosan foo.   -  person chepner    schedule 28.04.2017


Jawaban (1)


Gunakan shlex, lihat di sini, ada argumen untuk escape, qoutes dan escapedqoutes.

person Community    schedule 28.04.2017
comment
Terima kasih, saya juga menemukan tautan ini yang juga berguna: stackoverflow.com/questions/18116465/ - person ; 28.04.2017