Обикновено, за да копирате един файл, бихте използвали
cp
команда, свързваща файла източник и директорията на местоназначението:
cp ~/Documents/FileToBeCopied.txt ~/TextFiles/
За да го копирате в още две директории, много хора биха изпълнили командата още два пъти с различни местоназначения:
cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Ето как работи тази команда. Най-
echo
командата обикновено пише на екрана. В този случай обаче искаме да захранваме продукцията на
echo
команда като вход към
xargs
команда. За тази цел използваме символа на тръбата (
|
), който захранва изход от една команда като вход към друга. Най-
xargs
командата ще стартира
cp
командата три пъти, всеки път, когато се добави следващия пътека на директорията, свързан с него от
echo
команда до края на
cp
команда. Има три аргумента, които се приемат
xargs
но
-n 1
опция на
xargs
команда го казва само да добави един от тези аргументи в даден момент към
cp
команда всеки път, когато се изпълнява.
Така че, за да се придържаме към нашия пример от по-ранните, трите отделни
cp
командите по-горе могат да се комбинират в една команда по следния начин:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt
cp
команда за копиране на файл на едно място, можете да го добавите
-i
опция да попитате дали искате да замените съществуващ файл. както и да е
-i
опцията е интерактивен вариант (причинява
cp
командата да поиска вход от потребителя) и не можете да използвате интерактивна опция с
cp
команда, когато го използвате заедно с
xargs
.)
Друго нещо, което трябва да обмислите, е, че ако копирате много голям файл, може да искате да добавите не-clobber (
-n
) опция към
cp
команда в единичната команда по-горе. Тази опция автоматично предотвратява презаписването на файл в местоназначение, ако вече съществува там. Ако копирате много голям файл през мрежа, може да е бавен и може да не искате да използвате ресурсите, необходими за копиране и подмяна на файла. Следната команда добавя
-n
опция и няма да копира файла до местоназначение, посочено в аргументите, в изявлението за ехо, ако файлът вече съществува в това местоназначение.
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt