SSH 并执行命令

SSH 并执行命令

我正在尝试通过 ssh 进入服务器并在主机上执行几个命令。

我设法做了以下事情,并且效果很好

ssh -t -X thor 'cd /stmp/username; ls -rtl ; rm ~/tmp.file; tcsh -l'

目前,我正在尝试扩展命令以将目录更改为 /stmp/username/ 中列出的最新文件夹

首先,我在终端中测试了我想要使用的命令,它有效。它将转到目录列表中的最新文件夹。命令是

cd `ls -rtl | cut -d' ' -f9 | tail -1`

现在我尝试将上述命令合并到 ssh 命令中。但是不起作用。

ssh -t -X thor 'cd /stmp/username; cd `ls -rtl |cut -d' ' -f9 | tail -1` ; rm ~/tmp.file; tcsh -l'

我的命令有问题吗?

答案1

当你的命令从命令行运行时,例如

cd `ls -rtl | cut -d' ' -f9 | tail -1`

不存在引用问题。但是,当你尝试将其添加到ssh命令中时,你会将ssh命令包装在单引号,但你也包括了单引号在命令中用命令括住' '(空格)cut——会导致问题。

最简单的解决方案是将命令周围的引号保留ssh单引号并将周围的引号更改space双引号在其中,例如

ssh -t -X thor 'cd /stmp/username; cd `ls -rtl |cut -d" " -f9 | tail -1` ; rm ~/tmp.file; tcsh -l'

(因此不存在变量或路径扩展问题)

进行更改,如果有其他问题请告诉我。

笔记:你也应该避免命令替换使用反引号赞成$(...)——更加易读。

相关内容