2017-08-08 231 views
-1

SFTPでリダイレクション演算子とパイプ演算子に関連するコマンドを処理する方法は?Unix:SFTPのリダイレクション演算子とパイプ演算子に関連するコマンド

現在、私は再び、

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結果ファイルの出力を与えている

[[email protected] test]$ sshpass -e sftp -o BatchMode=no -b - [email protected]:/Restore 
Changing to: /Restore 
pwd 

sftp> pwd 
Remote working directory: /Restore 

以下のようSSHPASS経由SFTPに接続されていますそれは問題ありません。

しかし、

私はと-ltr LSのリダイレクトされた出力を取得/表示するためのコマンドを必要とします| (パイプライン動作)とパイプ演算子でコマンドを送信しながらSFTPにプロンプ​​ト

に位置し、最後の1ファイル名(|)SFTPプロンプトで - サーバがをスロー「リモートファイルのstatできません:そのようなファイルやディレクトリはありませんが」 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** 

[[email protected] test]$ 

答えて

0

短い答えは、 "|" "ls"コマンドsftpには特別な意味はありません。

sftp> !ls -ltr | tail -1 

ここでは、sftp "!"コマンドを使用して、ローカルシステム上でコマンドを実行します。残りの行、ls -ltr | tail -1は、ローカルシェルに渡されます。 Sftpは "|"この行に。あなたのシェルは行います。 sftpにとって特別なこの部分の唯一の部分は先頭の "!"です。ここで

sftp> ls -ltr | tail -1 

、あなたは「!」、「尾」という名前のリモートファイルについての情報を一覧表示するにはSFTPの「ls」コマンドを使用して、多分している「-1」。エラーメッセージは、 "|"という名前のリモートファイルがないことを示します。

私が知る限り、コマンドラインsftpは、個々の対話型コマンドのリダイレクトとパイピングをサポートしていません。

+0

ありがとうございます。その間、sftpプロンプトから最後に修正されたファイルを表示する方法があります。自動化のために最後に修正されたファイルを1つ取る必要があります。 –