28Jun
La copia di un file con la riga di comando di Linux è semplice. Tuttavia, che cosa succede se si desidera copiare lo stesso file in più posizioni diverse? Anche questo è facile e ti mostreremo come farlo con un solo comando.
Normalmente, per copiare un file, si usa il comando cp, che collega al file sorgente e alla directory di destinazione:
cp ~ /Documents/ FileToBeCopied.txt ~ /TextFiles/Per copiarlo su altre due directory, molte persone eseguono semplicemente il comando duepiù volte, con destinazioni diverse:
cp ~ /Documents/ FileToBeCopied.txt ~ /Dropbox/ cp ~ /Documents/ FileToBeCopied.txt /media/lori/MYUSBDRIVE/Tuttavia, possiamo eseguire la stessa operazione con un solo comando:
echo dir1 dir2 dir3 |xargs -n 1 cp file1Ecco come funziona questo comando. Il comando echo normalmente scrive sullo schermo. Tuttavia, in questo caso, vogliamo alimentare l'output del comando echo come input per il comando xargs. Per fare ciò, usiamo il simbolo pipe( |) che alimenta l'output da un comando come input ad un altro. Il comando xargs eseguirà il comando cp tre volte, ogni volta aggiungendo il prossimo percorso di directory convogliato dal comando echo alla fine del comando cp. Ci sono tre argomenti passati a xargs, ma l'opzione -n 1 sul comando xargs dice di aggiungere solo uno di quegli argomenti alla volta al comando cp ogni volta che viene eseguito.
Quindi, per seguire il nostro esempio di prima, i tre comandi cp distinti sopra possono essere combinati in un unico comando come questo:
echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp ~ /Documents/ FileToBeCopied.txtSi noti che se il file da copiare esiste in una qualsiasi delle directory di destinazione specificate, il file in quella destinazione verrà sostituito automaticamente. Non ti verrà chiesto se desideri sostituire il file.(Normalmente, quando si usa il comando cp per copiare un file in una singola posizione, è possibile aggiungere l'opzione -i per chiedere se si desidera sostituire un file esistente. Tuttavia, l'opzione -i è un'opzione interattiva( causa lacomando cp per chiedere input dall'utente) e non puoi usare un'opzione interattiva con il comando cp quando lo usi in combinazione con xargs.)
Un'altra cosa da considerare, è che se stai copiando un file molto grande, potrestivuoi aggiungere l'opzione no-clobber( -n) al comando cp nel singolo comando sopra. Questa opzione impedisce automaticamente che un file venga sovrascritto in una destinazione se esiste già lì.Se stai copiando un file molto grande su una rete, potrebbe essere lento e potresti evitare di utilizzare le risorse richieste per copiare e sostituire il file. Il seguente comando aggiunge l'opzione -n e non copierà il file su alcuna destinazione elencata negli argomenti dell'istruzione echo, se il file esiste già in quella destinazione.
echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp -n ~ /Documents/ FileToBeCopied.txtDigitare man echo, man xargs o man cp sulla riga di comando in Linux per ulteriori informazioni su uno qualsiasi di questi comandi.