【问题标题】:Unix : Redirection operator and Pipe operator related commands in SFTPUnix:SFTP 中的重定向运算符和管道运算符相关命令
【发布时间】:2017-08-16 20:24:07
【问题描述】:

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

【问题讨论】:

    标签: shell unix sftp sshpass


    【解决方案1】:

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

    【讨论】:

    • 感谢您的更新。同时,您知道如何从 sftp 提示符显示最后修改的文件。我需要将最后一个修改最多的文件用于自动化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多