如何在 linux cat 命令中一起处理单引号/撇号和 space?
How to handle single quote/ apostrophe and space together in linux cat command?
我在 test's dir
目录中有一个名为 test's file.txt
的文件。
所以文件路径变成 test's dir/test's file.txt
。
我想 cat 文件的内容,但由于文件包含一个撇号和一个 space 它让我很难实现。
我尝试了几个命令,包括
sh -c "cat 'test's dir/test's file.txt'"
sh -c 'cat "test's dir/test's file.txt"'
sh -c "cat '"'"'test's dir/test's file.txt'"'"'"
sh -c 'cat "test\'s\ dir/test\'s\ file.txt"'
还有很多 ...
但其中 none 正在工作。
如果能提供一些帮助,我们将不胜感激。
谢谢!
您可以使用 here-doc:
sh -s <<-'EOF'
cat "test's dir/test's file.txt"
EOF
你要不要试试:
sh -c "cat 'test'\''s dir/test'\''s file.txt'"
至于路径名部分,它是以下的串联:
'test'
\'
's dir/test'
\'
's file.txt'
[编辑]
如果你想在python
中执行shell命令,请你试试:
#!/usr/bin/python3
import subprocess
path="test's dir/test's file.txt"
subprocess.run(['cat', path])
或立即:
subprocess.run(['cat', "test's dir/test's file.txt"])
由于subprocess.run()
函数将命令作为列表,
不是一个字符串(可能有 shell=True
选项),我们没有
担心命令周围的额外引用。
请注意 subprocess.run()
受 Python 3.5 或更新版本支持。
此选项避免了两级引用的需要:
sh -c 'cat -- "[=10=]"' "test's dir/test's file.txt"
参见。 (它也适用于 sh -c
。)
我在 test's dir
目录中有一个名为 test's file.txt
的文件。
所以文件路径变成 test's dir/test's file.txt
。
我想 cat 文件的内容,但由于文件包含一个撇号和一个 space 它让我很难实现。
我尝试了几个命令,包括
sh -c "cat 'test's dir/test's file.txt'"
sh -c 'cat "test's dir/test's file.txt"'
sh -c "cat '"'"'test's dir/test's file.txt'"'"'"
sh -c 'cat "test\'s\ dir/test\'s\ file.txt"'
还有很多 ... 但其中 none 正在工作。
如果能提供一些帮助,我们将不胜感激。 谢谢!
您可以使用 here-doc:
sh -s <<-'EOF'
cat "test's dir/test's file.txt"
EOF
你要不要试试:
sh -c "cat 'test'\''s dir/test'\''s file.txt'"
至于路径名部分,它是以下的串联:
'test'
\'
's dir/test'
\'
's file.txt'
[编辑]
如果你想在python
中执行shell命令,请你试试:
#!/usr/bin/python3
import subprocess
path="test's dir/test's file.txt"
subprocess.run(['cat', path])
或立即:
subprocess.run(['cat', "test's dir/test's file.txt"])
由于subprocess.run()
函数将命令作为列表,
不是一个字符串(可能有 shell=True
选项),我们没有
担心命令周围的额外引用。
请注意 subprocess.run()
受 Python 3.5 或更新版本支持。
此选项避免了两级引用的需要:
sh -c 'cat -- "[=10=]"' "test's dir/test's file.txt"
参见sh -c
。)