web-dev-qa-db-ja.com

ssh経由でstdoutをリダイレクトする

走りたい

something > file

sshを介してリモートシステムで、しかし私が実行した場合

ssh Host something > file

リダイレクトはssh etc > fileとしてローカルで実行されます

代わりに'または''またはddまたはパイプ|を使用して試しましたが、機能しません。これはどのように行うことができますか?

19
franziskus

試してください:

ssh Host 'something > file'

これは、リダイレクト、パイプ、および引用符を処理する方法の考案されたデモです。

ssh Host date -d yesterday \| awk "'{print $1}'" \> 'file" "with\ spaces.out'

パイプとリダイレクトは、引用符の全体的な外部セットに含まれるのではなくエスケープされるため、引用符の1つのレベルをエスケープする必要がなくなります。 AWKコマンドの単一引用符は、それらを囲む二重引用符で保護されています。ファイル名も同じ方法で保護できますが、ここでは、単一引用符が二重引用符とエスケープをどのように保護するかを示します。

次の代わりに、さらに簡単です。

ssh Host something > file

行う:

ssh Host "something > file"
12
Amala

提案されたソリューションはパイプでも機能します

ssh Host 'some_command | some_other_command'
3
Mike