我正在尝试通过 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'
(因此不存在变量或路径扩展问题)
进行更改,如果有其他问题请告诉我。
笔记:你也应该避免命令替换使用反引号赞成$(...)
——更加易读。