Kopírování souboru pomocí příkazového řádku systému Linux jesnadný. Co když však chcete zkopírovat stejný soubor na několik různých umístění? To je také snadné a my vám ukážeme, jak to udělat jedním příkazem.
Normálně byste pro kopírování jednoho souboru použili cp
příkaz, odkaz na zdrojový soubor a cílový adresář:
cp ~/Documents/FileToBeCopied.txt ~/TextFiles/
Chcete-li jej zkopírovat do dvou dalších adresářů, mnoho lidí by příkaz spustilo ještě dvakrát, s různými cíli:
cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/
Stejný úkol však můžeme provést jedním příkazem:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Takto tento příkaz funguje. echo
příkaz normálně zapíše na obrazovku. V tomto případě však chceme nakrmit výstup echo
příkaz jako vstup do xargs
příkaz. K tomu použijeme symbol potrubí ( |
), který dodává výstup z jednoho příkazu jako vstup do druhého. xargs
příkaz spustí cp
Příkaz třikrát, pokaždé, když k němu připojíte další cestu k adresáři z echo
příkaz na konec cp
příkaz. Jsou předány tři argumenty xargs
, ale -n 1
možnost na xargs
Příkaz říká, že připojí pouze jeden z těchto argumentů současně cp
příkaz pokaždé, když je spuštěn.
Takže, držet se našeho příkladu z dřívějších, tři oddělené cp
příkazy výše lze kombinovat do jednoho příkazu, jako je tento:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt
Všimněte si, že pokud kopírovaný soubor v nějakém existujeze zadaných cílových adresářů bude soubor v tomto cílovém adresáři automaticky nahrazen. Budete dotázáni, zda chcete soubor nahradit. (Normálně, když používáte cp
příkaz zkopírovat soubor do jediného umístění, můžete přidat -i
možnost se zeptat, zda chcete nahradit existující soubor. Nicméně, -i
možnost je interaktivní možnost (způsobuje cp
příkaz k zadání požadavku od uživatele) a nemůžete použít interaktivní možnost s cp
příkaz při použití ve spojení s xargs
.)
Další věc, kterou byste měli zvážit, je, že pokud kopírujete velmi velký soubor, můžete přidat ne-clobber ( -n
) možnost do cp
příkaz v jediném příkazu výše. Tato možnost automaticky zabrání přepsání souboru v cílovém místě, pokud již existuje. Pokud kopírujete velmi velký soubor v síti, může to být pomalé a možná budete chtít zabránit použití prostředků potřebných ke kopírování a nahrazení souboru. Následující příkaz přidá -n
a nebude zkopírovat soubor do žádného cíle uvedeného v argumentech příkazu echo, pokud soubor již v tomto cíli existuje.
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt
Na příkazovém řádku v systému Linux zadejte příkaz man echo, man xargs nebo man cp, abyste získali další informace o těchto příkazech.