Преобразование строк в экранированную форму bash

Как преобразовать обычные строки (в моем случае имена файлов) в экранированные строки 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]). Не требуется экранирование 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