7

我是python和fabric api的新手。我正在尝试使用 sudo 功能在 bash 终端中运行 sed 命令,该命令在找到特定文本行后插入一些文本。我试图插入到我正在修改的文件中的一些文本包含反斜杠,这些反斜杠似乎要么被结构忽略,要么导致语法错误。我尝试了“shell=true”和“shell=false”选项,但仍然没有运气。我怎样才能逃避反斜杠?似乎“shell = true”只转义了$和“。下面是我的代码。

sudo (' sed -i "/sometext/a textwith\backslash" /home/me/somefile.txt',shell=True)

4

2 回答 2

7

尝试用 为您的字符串添加前缀r,这意味着它将被解释为原始字符串:

sudo (r' sed -i "/sometext/a textwith\backslash" /home/me/somefile.txt',shell=True)

有关字符串文字及其在 Python 中的用法的更多信息,请参见此处。

于 2012-11-12T03:20:41.557 回答
4

好的,终于解决了这个问题。火箭驴是正确的。需要以“r”作为前缀,但也需要设置“shell=False”。这允许在从 fabric.api 调用时直接在 bash 终端中工作的内容。

谢谢火箭驴!!

于 2012-11-12T05:00:32.393 回答