リモートサーバーの特定のディレクトリにある最新のテキストファイルを自分のローカルコンピュータにコピーするにはどうすればよいですか?
サーバー自体では、次のことができます。
$ 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 は$(
コマンドの置き換えでより多く使用されます。コマンド置換の使用に関する考慮事項`
のみをサポートするシェルを使用しない限り。バラより`
$(
ここで詳細をご覧ください。。