Update 25/02/2011: las respuestas que habéis enviado son correctas. Explicaré entre líneas lo que hacen los distintos comandos (pulsa sobre More>>).
¿Estás seguro? Sí, es una operación básica, pero sin que os ponga la solución en este post (lo dejo para el siguiente), ¿sabrías decirme con absoluta certeza qué hacen cada uno de estos comandos cp? ¿ y el mkdir o touch del ejercicio 0? No te mientas 😉
0.
mkdir -p /tmp/tests/{d1,d2}
cd /tmp/tests
touch d1/{.oculto,a,b} |
mkdir -p /tmp/tests/{d1,d2}
cd /tmp/tests
touch d1/{.oculto,a,b}
[hide-this-part]
Crea dos directorios, d1 y d2 dentro de tests. Si tests no existiera, la opción -p fuerza su creación.
Con touch, creamos 3 archivos (.oculto, a y b) dentro de d1
[/hide-this-part]
1.
Pista: ¿se han copiado TODOS los archivos o sólo 2 de ellos?
[hide-this-part]
Sólo 2 de los archivos han sido copiados. El * en cp NO funciona exactamente como una expresión regular (si así fuera, un * abarcaría cualquier cosa, incluyendo nombres de archivos que empiecen por punto). Pero no, el * casa con cualquier nombre de archivo que no sea uno oculto. También casaría con un archivo de nombre c.d por ejemplo
[/hide-this-part]
Reseteamos (Borramos el contenido de /tmp/tests y desde ese mismo directorio ejecutamos 0 de nuevo…)
2.
Pista: ¿se ha copiado algo?
[hide-this-part]
No se copia nada. Hay que especificar qué es lo que se quiere copiar de d1 en d2. No se debe a que ya exista d2… puedes probar con cp d1/ d3/ y ocurrirá lo mismo. Ídem si lo pruebas sin la / del final.
[/hide-this-part]
Reseteamos
3.
Pista: ¿se ha copiado algo?
[hide-this-part]
No se copia nada. El * no puede ser sustituído por el conjunto vacío en las órdenes copy. Si así fuera (si se pudiera sustituir por el conjunto vacío, el archivo .oculto sí que se hubiera copiado). Ojo! Si en d1 tuviéramos un archivo de nombre c.d, entonces los comodines sí que casarían con dicho archivo y sería copiado.
[/hide-this-part]
Reseteamos
4.
Pista: ¿se ha copiado algo?
[hide-this-part]
No copia nada pues la orden es equivalente a la dada en el ejercicio 2.
[/hide-this-part]
Reseteamos
5.
Pista: vaya… si no hay subdirectorios, para qué habré usado el flag -R };-)
[hide-this-part]
¡Por fin! Esta orden sí que copia TODO el contenido de d1 en d2 (archivos ocultos incluídos). Si hubiera subcarpetas, también las copiaría. ¡Ojo_1! -R -r –recursive son equivalentes. ¡Ojo_2! No hay subdirectorios, pero aún así hemos usado -R para copiar de forma recursiva. ¡Ojo_3! No es lo mismo el ejercicio 5 que el ejercicio siguiente: cp -R d1/ d2/ (esto último copiaría dentro de d2 el directorio d1 – incluído el propio nombre d1 – )
[/hide-this-part]