如何转义 Linux 命令,它在 python 中包含单引号、双引号 (',",`) 等所有字符?
How to escape a Linux command which has all characters like single quote, double quote(',",`) in python?
我有以下 Linux 命令,它提供 CPU%、RAM% 和硬盘百分比等指标。
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*//" | awk '{print 100 - }'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", /*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
我想将它作为字符串存储在变量中。但是由于在 Linux 命令中使用了“,”,我无法存储。我怎样才能让它工作?
注意:我将其作为字符串存储在变量中,因为我想通过对服务器执行 ssh 并执行上述命令来检查 CPU%、RAM% 和硬盘百分比等指标在 python.
中的 pexpect/pxssh 库的帮助下
三引号原始字符串非常适合此目的
cmd = r'''
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*//" | awk '{print 100 - }'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", /*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
'''
您可以使用 \
转义引号和双引号
我有以下 Linux 命令,它提供 CPU%、RAM% 和硬盘百分比等指标。
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*//" | awk '{print 100 - }'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", /*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
我想将它作为字符串存储在变量中。但是由于在 Linux 命令中使用了“,”,我无法存储。我怎样才能让它工作?
注意:我将其作为字符串存储在变量中,因为我想通过对服务器执行 ssh 并执行上述命令来检查 CPU%、RAM% 和硬盘百分比等指标在 python.
中的 pexpect/pxssh 库的帮助下三引号原始字符串非常适合此目的
cmd = r'''
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*//" | awk '{print 100 - }'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", /*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
'''
您可以使用 \