xargs を使用できます またはまさにこの要件。 -I を使用できます パイプラインから受け取った入力のプレースホルダーとして、do
echo "myserver:${HOME}/dir/2/" | xargs -I {} rsync -r "{}" /local/path/
(または) ~ を使用 HOME に展開されない二重引用符なし ディレクトリ パス。
echo myserver:~/dir/2/ | xargs -I {} rsync -r "{}" /local/path/
これ
rsync -r "$(echo myserver:~/dir/2/)" /local/path/
それを行う最も簡単な方法です。
パイピングは標準出力を標準入力に接続します。ここでは、出力を引数に渡す必要があるため、従来のパイプ以外の何かが必要です。
それはコマンド置換です ($() ).
rsync を与えることができます --files-from を使用してファイルまたは標準入力にダウンロードするファイルのリスト :
echo "dir/2/" | rsync --files-from=- -r [email protected]: /local/path/
- rsync になります 標準入力から読み込みます。 rsync にサーバーを渡すことはできません このように。サーバーへの接続は 1 つだけで、すべてのファイルはその接続を介して転送されます。
-a を使用する場合 または --archive --files-from で 次に、明示的に -r を追加する必要があります または --recursive -a の一部であっても、そのオプションから再帰したい場合 、 --files-from の場合は無効です