繁体   English   中英

正确处理bash命令转义字符

[英]Properly dealing with bash commands escape characters

在 Linux Bash 脚本中

  • /bin/sh等价于/bin//sh
  • e\\tc转换为etc
  • \\'转换为'
  • "b"转换为b
  • 'in'转换为in

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

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

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

一种选择是使用标准库中的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM