GNU/Linux >> Belajar Linux >  >> Linux

Tentukan posisi keluaran pipa

Anda dapat menggunakan xargs atau persis persyaratan ini. Anda dapat menggunakan -I sebagai placeholder untuk input yang diterima dari pipeline, lakukan

echo "myserver:${HOME}/dir/2/" | xargs -I {} rsync -r "{}" /local/path/

(atau) gunakan ~ tanpa tanda kutip ganda yang tidak diperluas ke HOME jalur direktori.

echo myserver:~/dir/2/ | xargs -I {} rsync -r "{}" /local/path/

Ini

 rsync -r "$(echo myserver:~/dir/2/)" /local/path/

adalah cara termudah untuk melakukannya.

Piping menghubungkan stdouts dengan stdins. Di sini Anda ingin hasilnya mengarah ke argumen, jadi Anda memerlukan sesuatu selain perpipaan klasik.

Sesuatu itu adalah substitusi perintah ($() ).


Anda dapat memberikan rsync daftar file yang akan diunduh dalam file atau pada input standar dengan menggunakan --files-from :

echo "dir/2/" | rsync --files-from=- -r [email protected]: /local/path/

- membuat rsync membaca dari masukan standar. Server tidak dapat diberikan ke rsync dengan cara ini. Hanya akan ada satu koneksi yang dibuat ke server dan semua file akan ditransfer melalui koneksi tersebut.

Jika Anda menggunakan -a atau --archive dengan --files-from maka Anda perlu menambahkan -r secara eksplisit atau --recursive jika Anda ingin melakukan rekursi sejak opsi itu, meskipun itu adalah bagian dari -a , dinonaktifkan saat --files-from digunakan.


Linux
  1. Redirect Dan Output Pipa?

  2. Bisakah saya menggunakan output pipa sebagai argumen skrip shell?

  3. Bagaimana cara menafsirkan dan memperbaiki kesalahan Input/output di Linux?

  1. Apa arti pipa linux | melakukan?

  2. Secara tidak sengaja menggunakan pengalihan keluaran > alih-alih pipa |

  3. Bagaimana cara menyalurkan sesuatu ke output audio?

  1. Urutkan Output Berdasarkan Kolom?

  2. Bagaimana cara menyalurkan file yang diunduh ke output standar di bash?

  3. Bisakah saya membuat rsync hanya menampilkan ringkasan?