Копирането на файл с командния ред на Linux елесно. Какво обаче, ако искате да копирате един и същ файл на няколко различни места? Това също е лесно и ще ви покажем как да направите това с една команда.
Обикновено за да копирате един файл, ще използвате 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
.)
Друго нещо, което трябва да се има предвид, е, че ако копирате много голям файл, може да искате да добавите no-clobber ( -n
) опция към cp
команда в единичната команда по-горе. Тази опция автоматично предотвратява презаписване на файл в дестинация, ако той вече съществува там. Ако копирате много голям файл през мрежа, това може да е бавно и може да искате да избегнете използването на ресурсите, необходими за копиране и подмяна на файла. Следващата команда добавя -n
опция и няма да копира файла до която и да е дестинация, посочена в аргументите към оператора echo, ако файлът вече съществува в това местоназначение.
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt
Въведете man echo, man xargs или man cp в командния ред в Linux за повече информация за която и да е от тези команди.