【问题标题】:How to turn off auto add escape character feature in Linux如何在 Linux 中关闭自动添加转义字符功能
【发布时间】:2018-01-19 14:49:02
【问题描述】:

我正在尝试使用 ssh 将命令传递给远程服务器。虽然我的命令有一些字符,如"$'\,除了'(单引号)之外,通常需要反斜杠作为转义字符,但系统会自动使用转义字符@ 987654326@ 在执行时单个代码之前。有人可以帮助我如何关闭它。

操作系统:RHEL

我的代码:

ssh -q $server "ps -ef | grep mongo | grep conf | awk '{print \$(NF-2)}'

执行时,代码变为

ssh -q $server "ps -ef | grep mongo | grep conf | awk \'{print $(NF-2)}\'"

我需要关闭此功能

【问题讨论】:

  • 你是说你的第一个命令不起作用?
  • 你有没有在set -vx开启的情况下进行shell调试?如果是这样,这种行为是正常的。否则我很想知道你是如何“看到”这个问题的,也许编辑你的 Q 以展示我们如何也能看到同样的事情?祝你好运。

标签: linux bash awk ssh escaping


【解决方案1】:

您的分析并不完全正确。无论如何,远程运行 Awk 或 grep 没有特别的理由(因为 Awk 只需进行非常小的重构就可以很好地高效地完成所有这些工作):

ssh -q "$server" ps -ef |
# This runs locally instead
awk '/mongo/ && /conf/ {print $(NF-2)}'

【讨论】:

  • 远程运行awk 的一个原因是,它会过滤大量数据,以避免不必要地通过将被丢弃的连接传输数据。
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多