-1

如何在 SFTP 中使用重定向运算符和管道运算符相关命令?

目前我已通过SSHPASS连接到SFTP,如下所示

[oouser@SVSATVMWHOST03-SITHPOO test]$ sshpass -e sftp -o BatchMode=no -b - backup_sftp@10.58.44.207:/Restore
Changing to: /Restore
pwd

sftp> pwd
Remote working directory: /Restore

再次,

ls -ltr

sftp> ls -ltr

-rw-r-----    1 1500     1500     421782831 Jul 19 12:43 mOneBackup_IMS_20170719081701.tgz

-rw-r-----    1 1500     1500     374262100 Jul 24 11:54
mOneBackup_IMS_20170724010013.tgz

这给出了位于 sftp 提示符下的 ls -ltr 结果文件的输出,这很好。

但,

我需要一个命令来查看/获取 ls -ltr 的重定向输出,使用 | (管道操作)和位于 SFTP 提示符中的最后 1 个文件名

SFTP提示符下使用管道运算符 (|) 发送命令时 - 服务器抛出“无法统计远程文件:没有这样的文件或目录”

ls -ltr | tail -1

sftp> ls -ltr | tail -1

Couldn't stat remote file: No such file or directory
Can't ls: "/Restore/|" not found**

[oouser@SVSATVMWHOST03-SITHPOO test]$

如何在 SFTP 提示符下使用管道和重定向操作?

4

1 回答 1

0

简短的回答是“|” 对sftp“ls”命令没有特殊意义。

sftp> !ls -ltr | tail -1

在这里,您使用的是 sftp“!” 命令在本地系统上运行命令。该行的其余部分ls -ltr | tail -1, 被传递给您的本地 shell。Sftp 不解释“|” 在这一行;你的外壳可以。唯一对 sftp 特殊的部分是前导“!”。

sftp> ls -ltr | tail -1

在这里,您使用 sftp "ls" 命令列出名为 "!"、"tail" 甚至可能是 "-1" 的远程文件的信息。您收到的错误消息表明没有名为“|”的远程文件。

据我所知,命令行sftp实用程序不支持单个交互式命令的重定向和管道。

于 2017-08-08T13:52:32.827 回答