28Jun
Att kopiera en fil med Linux-kommandoraden är enkelt. Men, om du vill kopiera samma fil till flera olika platser? Det är enkelt också, och vi ska visa dig hur man gör det med ett kommando.
Normalt, för att kopiera en fil, skulle du använda kommandot cp, länka till källfilen och målkatalogen:
cp ~ /Documents/ FileToBeCopied.txt ~ /TextFiles/För att kopiera den till två kataloger skulle många bara springa kommandot tvåflera gånger med olika destinationer:
cp ~ /Documents/ FileToBeCopied.txt ~ /Dropbox/ cp ~ /Documents/ FileToBeCopied.txt /media/lori/MYUSBDRIVE/Vi kan dock göra samma uppgift med ett kommando:
echo dir1 dir2 dir3 |xargs -n 1 cp file1Så här fungerar det här kommandot. Echo-kommandot skriver normalt på skärmen. I det här fallet vill vi emellertid mata utmatningen från ekokommandot som ingång till kommandot xargs. För att göra detta använder vi rörsymbolen( |) som matar utmatning från ett kommando som ingång till en annan. Kommandot xargs kommer att köra kommandot cp tre gånger, varje gång du lägger till den nästa katalogvägen som pipes till den från echo-kommandot till slutet av cp-kommandot. Det finns tre argument som skickas till xargs, men alternativet-1 på kommandot xargs berättar att det bara lägger till en av de argumenten i taget till cp-kommandot varje gång det körs.
Så att hålla fast vid vårt exempel från tidigare kan de tre separata cp-kommandona ovan kombineras till ett kommando så här:
echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp ~ /Documents/ FileToBeCopied.txtObservera att om filen som kopieras existerar i någon av de angivna målkatalogerna, kommer filen i den destinationen att ersättas automatiskt. Du kommer inte bli frågad om du vill ersätta filen.(Normalt när du använder cp-kommandot för att kopiera en fil till en enda plats kan du lägga till -i alternativet för att fråga om du vill ersätta en befintlig fil. Alternativet -i är ett interaktivt alternativ( det medför attcp-kommandot för att be om inmatning från användaren) och du kan inte använda ett interaktivt alternativ med kommandot cp när du använder det i kombination med xargs.)
En annan sak att tänka på är att om du kopierar en mycket stor fil kanske duvill lägga till alternativet no-clobber( -n) till kommandot cp i kommandot ovan ovan. Detta alternativ förhindrar automatiskt att en fil skrivs över i en destination om den redan finns där. Om du kopierar en mycket stor fil via ett nätverk kan det vara långsamt och du kanske vill undvika att använda de resurser som krävs för att kopiera och ersätta filen. Följande kommando lägger till -n-alternativet, och kommer inte kopiera filen till någon destination som anges i argumenten till ekotillståndet, om filen redan existerar i den destinationen.
echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp -n ~ /Documents/ FileToBeCopied.txtTyp man echo, man xargs eller man cp på kommandoraden i Linux för mer information om någon av dessa kommandon.