Como novato en la línea de comandos, puede sentir que la misma tarea que solía realizar rápidamente a través de la interfaz gráfica podría solicitar muchos comandos en la línea de comandos. Sin embargo, a medida que se convierte lentamente en un usuario avanzado de la línea de comandos a través del aprendizaje, la práctica y la experiencia, comenzará a notar que las mismas tareas se pueden realizar muy rápidamente a través de algunos atajos muy simples pero útiles. En este artículo, describiremos uno de esos casos que aparentemente podría necesitar muchos comandos para ejecutarse, pero en realidad, un simple comando puede realizar la tarea por usted.
A veces, necesitamos copiar un solo archivo en varias ubicaciones de nuestro sistema. Entonces, ¿eso significa que necesitamos usar el comando cp varias veces? ¡La respuesta es no! Sigamos leyendo para encontrar una solución.
Los comandos mencionados en este artículo se ejecutaron en un sistema Ubuntu 18.04 LTS.
Cómo copiar un archivo simultáneamente en varias ubicaciones
Todos sabemos cómo el comando cp nos permite copiar un archivo a una nueva ubicación a través de la siguiente sintaxis:
$ cp ~[/location/sourcefile] ~[/destinationfolder]
Aquí estoy copiando un archivo de texto de muestra de mi carpeta de Descargas a la carpeta de Documentos:
Ahora, si quiero copiar el mismo archivo en dos ubicaciones diferentes en lugar de una, la solución probable parece usar el comando cp dos veces.
Aquí estoy usando el comando cp dos veces para copiar un archivo de texto de muestra de la carpeta Descargas a las carpetas Pública y Escritorio:
Copiar el mismo archivo en dos ubicaciones usando el comando cp dos veces todavía parece lógico, pero supongamos que tenemos que copiar el archivo en tres, cinco o incluso más ubicaciones. Así es como un solo comando puede lograr este propósito.
Sintaxis:
$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp [/location/sourcefile]
En el siguiente ejemplo, usaré este comando para copiar un archivo de texto de muestra de mi carpeta de Descargas a tres carpetas diferentes simultáneamente:
Hemos usado el comando echo y el comando xargs en una línea para lograr nuestro propósito.
¿Cómo funciona el comando?
El comando echo imprime la salida en la pantalla, pero en nuestro ejemplo, lo usamos para enviar la salida al comando xargs a través de | símbolo. El comando xargs tomará entrada tres veces del comando echo y realizará la operación cp tres veces, copiando el texto de muestra en tres ubicaciones diferentes. La cuenta n le dice al comando cp que tome un argumento a la vez.
Tenga en cuenta que este comando sobrescribirá un archivo ya existente con el mismo nombre en la carpeta de destino. Por lo tanto, es una buena práctica realizar siempre una copia de seguridad de sus archivos importantes. La opción i que usamos para preguntar antes de la operación de sobrescritura no funciona con el comando xargs.
Sin embargo, hay un uso del comando que puede ayudarlo a evitar sobrescribir un archivo si ya existe en la carpeta de destino; la opción n antes del archivo fuente.
Sintaxis:
$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp n [/lcoation/sourcefile]
Ejemplo:
La opción n es muy útil cuando copia archivos muy grandes de una ubicación a otra, especialmente a través de una red. De esta forma, puede evitar el desperdicio de recursos al copiar y luego reemplazar un archivo ya existente.
Después de ejecutar este tutorial, está un paso más cerca de convertirse en un gurú de la línea de comandos. Ahora no necesita escribir múltiples comandos para realizar la simple tarea de copiar un archivo a diferentes ubicaciones. Puede fusionar el comando echo y xargs, como describimos, para tener una solución de un solo comando a su problema.