Unix:SFTP中的重定向运算符和管道运算符相关命令



如何在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提示符下使用管道和重定向操作?

简短的回答是"|"对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实用程序不支持单个交互式命令的重定向和管道。