Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正确处理bash命令转义字符_Python_Linux_String_Shell_Scripting - Fatal编程技术网

Python 正确处理bash命令转义字符

Python 正确处理bash命令转义字符,python,linux,string,shell,scripting,Python,Linux,String,Shell,Scripting,在Linux Bash脚本中 /bin/sh相当于/bin//sh e\tc转换为etc \'转换为' “b”转换为b 'in'转换为in 将任何字符串转换为其“bash等价物”的确切方法是什么?(理想情况下使用python) 例如,以转换为/bin/sh的/“b”i'n//\s“h”为例,如下所示: r3t@r3t:~/$ /"b"'i'n///\s"h" $ 一个选项是使用标准库中的模块 import shlex text = "&q

在Linux Bash脚本中

  • /bin/sh
    相当于
    /bin//sh
  • e\tc
    转换为
    etc
  • \'
    转换为
    '
  • “b”
    转换为
    b
  • 'in'
    转换为
    in
将任何字符串转换为其“bash等价物”的确切方法是什么?(理想情况下使用python)

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

r3t@r3t:~/$ /"b"'i'n///\s"h"
$
一个选项是使用标准库中的模块

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

/
仅在路径中等同于
/
,在其他上下文中则不然。或者
shlex.split(text)