首页 > 解决方案 > 正确处理 bash 命令转义字符

问题描述

在 Linux Bash 脚本中

将任何字符串转换为其“bash 等效项”的确切方法是什么?(理想情况下在python中)

例如取/"b"'i'n///\s"h"which 转换/bin/sh为如下所示:

r3t@r3t:~/$ /"b"'i'n///\s"h"
$

标签: pythonlinuxstringshellscripting

解决方案


一种选择是使用shlex标准库中的模块。

import shlex

text = """\
/"b"'i'n///\s"h"
"""

s = shlex.shlex(text, posix=True)
list(s)
# ['/', 'bin', '/', '/', '/', 'sh']

s = shlex.shlex(text, posix=True)
"".join(s)
# '/bin///sh'

上面的内容等价于使用 bash 输入的内容:

$ echo /"b"'i'n///\s"h"
/bin///sh

推荐阅读