Het kopiëren van een bestand met de Linux-opdrachtregel is eenvoudig. Maar wat als u hetzelfde bestand naar verschillende locaties wilt kopiëren? Dat is ook gemakkelijk en we laten u zien hoe u dat met één opdracht doet.
Normaal gesproken gebruikt u om één bestand te kopiëren de cp
commando, met een link naar het bronbestand en de bestemmingsmap:
cp ~/Documents/FileToBeCopied.txt ~/TextFiles/
Om het naar nog twee mappen te kopiëren, zouden veel mensen de opdracht nog twee keer uitvoeren, met verschillende bestemmingen:
cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/
We kunnen echter dezelfde taak uitvoeren met één opdracht:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Hier is hoe deze opdracht werkt. De echo
commando schrijft normaal naar het scherm. In dit geval willen we echter de uitvoer van de echo
commando als invoer voor het xargs
opdracht. Hiervoor gebruiken we het pijpsymbool ( |
) die de uitvoer van het ene commando als invoer naar het andere voert. De xargs
commando zal het cp
commando driemaal, elke keer dat het volgende directorypad eraan wordt toegevoegd vanuit het echo
commando aan het einde van de cp
opdracht. Er worden drie argumenten doorgegeven xargs
, maar de -n 1
optie op de xargs
commando vertelt het om slechts één van deze argumenten tegelijk toe te voegen aan de cp
commando elke keer dat het wordt uitgevoerd.
Dus, om bij ons voorbeeld van eerder te blijven, scheiden de drie zich cp
bovenstaande commando’s kunnen als volgt worden gecombineerd tot één commando:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt
Merk op dat als het bestand dat wordt gekopieerd in een van de gespecificeerde bestemmingsmappen voorkomt, het bestand in die bestemming automatisch zal worden vervangen. U wordt niet gevraagd of u het bestand wilt vervangen. (Normaal gesproken, wanneer u de cp
commando om een bestand naar een enkele locatie te kopiëren, kunt u de -i
optie om te vragen of u een bestaand bestand wilt vervangen. echter, de -i
optie is een interactieve optie (het veroorzaakt de cp
commando om input van de gebruiker te vragen) en u kunt geen interactieve optie gebruiken met de cp
commando bij gebruik in combinatie met xargs
.)
Een ander ding om te overwegen, is dat als u een zeer groot bestand kopieert, u misschien de no-clobber ( -n
) optie naar de cp
commando in het enkele commando hierboven. Deze optie voorkomt automatisch dat een bestand wordt overschreven op een bestemming als het daar al bestaat. Als u een zeer groot bestand via een netwerk kopieert, kan het traag zijn en wilt u wellicht voorkomen dat u de benodigde bronnen gebruikt om het bestand te kopiëren en te vervangen. De volgende opdracht voegt het -n
optie, en zal het bestand niet kopiëren naar een bestemming die wordt vermeld in de argumenten van de echo-instructie, als het bestand al op die bestemming bestaat.
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt
Typ man echo, man xargs of man cp op de opdrachtregel in Linux voor meer informatie over deze opdrachten.