linux - ssh 命令和引号

标签 linux ssh

执行 ssh 命令后跟带引号的远程命令和不带引号的远程命令有什么区别?

例如之间有什么区别:

ssh remotehost tar xf archivename.tar

ssh remotehost "tar xf archivename.tar"

或有什么区别:

ssh remotehost <path to script>/myscript.sh param

ssh remotehost "<path to script>/myscript.sh param"

最佳答案

尾随参数组合成一个字符串,作为参数传递给远程计算机上登录 shell 的 -c 选项。在您的第一个示例中,几乎没有区别。但是,请考虑以下事项:

$ ssh remotehost echo *

这里,*在本地展开,结果传递给远程机器。在我的机器上,我的工作目录由一个包含撇号(单引号)的条目组成,因此远程主机尝试运行如下命令

bash -c "echo chepner's folder"

当然会导致错误。

$ ssh remotehost "echo *"

现在远程主机得到一个文字 *,但它在传递给 bash -c 之前需要进行 shell 扩展。结果,您输出了远程主机上主目录中的所有文件。

$ ssh remotehost "echo \*"

最后,远程 shell 在其输入中得到一个引号 星号,因此您得到一个单一文字 * 作为输出。

关于linux - ssh 命令和引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40431392/

相关文章:

linux - 无法删除攻击者留下的文件$$$222.php

Linux命令行: edit hacked index files

linux - 这个 bash while 循环的 bool 表达式中的 -lt 是什么意思?

linux - 如何运行通过 cabal 安装的 texmath?

linux IOSTAT 重复计算 AIO 写操作?

c - 如何在同一台机器上以编程方式获取通过AF_INET套接字连接到我的代理的进程的PID?

java - JSch 问题 - 无法检索完整的命令输出

linux - 如何在包含大量命令的 bash 脚本中执行 ssh?

Git - 远程 : fatal: You are on a branch yet to be born

macos - 在 OSX 上管理 ssh 隧道的好工具