GNU/Linux >> Znalost Linux >  >> Linux

Určete výstupní polohu potrubí

Můžete použít xargs nebo přesně tento požadavek. Můžete použít -I jako zástupný symbol pro vstup přijatý z potrubí, do

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

(nebo) použijte ~ bez uvozovek, pod kterými se nerozšíří na HOME cesta k adresáři.

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

Toto

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

je nejjednodušší způsob, jak to udělat.

Potrubí spojuje stdouts s stdins. Zde chcete, aby výstup šel do argumentu, takže potřebujete něco jiného než klasické potrubí.

To něco je náhrada příkazů ($() ).


Můžete dát rsync seznam souborů ke stažení v souboru nebo na standardním vstupu pomocí --files-from :

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

- dělá rsync číst ze standardního vstupu. Server nemůže být přidělen rsync tímto způsobem. K serveru bude vytvořeno pouze jedno připojení a všechny soubory budou přeneseny přes toto připojení.

Pokud použijete -a nebo --archive s --files-from pak musíte explicitně přidat -r nebo --recursive pokud chcete provést rekurzi od této možnosti, i když je součástí -a , je zakázáno, když je --files-from se používá.


Linux
  1. Výstup roury, který se má použít jako vyhledávací specifikace pro grep v Linuxu

  2. Jak převést potrubí /dev/urandom do linuxového zvukového výstupu?

  3. Výstup potrubí do funkce bash

  1. Chtěl bych vložit výstup find do seznamu vstupů scp, jak?

  2. Jak interpretovat a opravit chybu vstupu/výstupu v Linuxu?

  3. Jak dát něco potrubím do audio výstupu?

  1. Seřadit výstup podle sloupce?

  2. Jak nasměruji nebo přesměruji výstup curl -v?

  3. Výstup potrubí k řezání