我需要对具有“!”的文件执行一些linux命令操作像文件名中的字符。但是,每当我尝试执行命令时,都会遇到错误。

[root@ATD-6000 ~]# cat a!aapoorv.txt
-bash: !aapoorv.txt: event not found

我正在使用paramiko模块在python中执行这些命令。我无法使用原始字符串r'filestringname',因为我正在从数据库本身读取字符串名称。

如何使用python/bash转义/处理这些字符之王。

最佳答案

尝试这个:

cat a\!aapoorv.txt
或这个
cat 'a!aapoorv.txt'

有关更多信息,您可以查看有关 QUOTING man bash
这是其中的一些文件:

这是输出:
[kevin@Arch test]$ ls
a!aapoorv.txt
[kevin@Arch test]$ cat a\!aapoorv.txt
Hello, This is a test
[kevin@Arch test]$ cat 'a!aapoorv.txt'
Hello, This is a test

在Python上,您不需要转义特殊字符,这是一个测试:
>>> with open('a!aapoorv.txt') as f:
...     f.read()
...
...
'Hello, This is a test\n'
>>> with open(r'a!aapoorv.txt') as f:
...     f.read()
...
...
'Hello, This is a test\n'
>>>

10-08 00:05