SSH経由でディレクトリの最新ファイルをコピーする

SSH経由でディレクトリの最新ファイルをコピーする

リモートサーバーの特定のディレクトリにある最新のテキストファイルを自分のローカルコンピュータにコピーするにはどうすればよいですか?

サーバー自体では、次のことができます。

$ cat `cd /home/user/dir ; readlink -f $(ls -t | head -1)` > ~/newest.txt

これにより、最新のファイルの内容が~/newest.txt$(*)IDはこれが機能しません:

$ ssh [email protected] "cat `cd /home/user/dir ; readlink -f $(ls -t | head -1)`" > ~/newest.txt
bash: cd: /home/user/dir: No such file or directory
Connection to server.com closed.

明らかに、/home/user/dir存在しない私のローカルマシン。また、フラグと一緒にSSHを試しましたが、-t役に立ちませんでした。$()ローカルコンピュータの代わりにリモートコンピュータからダニを取得して解析するにはどうすればよいですか?

ところで、私よりスマートな人が一度主張した。の出力をls解析しないでください。。この問題を解決するために、ファイル名に印刷可能なASCII文字のみが含まれていると安全に想定できます。しかし、一般的なケースを扱う答えが良いでしょう。勉強する、一度ではありません。

ベストアンサー1

リモートサーバーにコマンドを渡す前にシェル拡張を防ぐには、二重引用符の代わりに一重引用符を使用する必要があります。

ところで、BTW は$(コマンドの置き換えでより多く使用されます。コマンド置換の使用に関する考慮事項`のみをサポートするシェルを使用しない限り。バラより`$(ここで詳細をご覧ください。

おすすめ記事