Copiar archivos y carpetas

Aldrin Martoq amartoq en dcc.uchile.cl
Vie Ene 30 18:37:38 CLST 2009


2009/1/30 Alvaro Herrera <alvherre en alvh.no-ip.org>:
> Rodrigo Ahumada escribió:
>> Alvaro Herrera escribió:
>>>  El que sea recursivo sólo con -r se trata probablemente
>>> de un accidente histórico: no se puede cambiar el significado de cp sin
>>> -r, porque eso echaría a perder un montón de scripts que hoy en día
>>> funcionan asumiendo que no es recursivo.
>> el único caso que me imagino es que alguien quiera copiar sólo
>> archivos/enlaces (y no subdirectorios) de un directorio a otro...
>> pero eso es mal uso...(en el sentido que no es pega de 'cp' verificar si
>> una entrada es un directorio o no, eso es pega de 'test')

> No es cosa de que "alguien quiera" o no quiera.  La cosa son los scripts
> que ya estaban funcionando antes que a alguien se le ocurriera que
> podría ser recursivo.  Por ejemplo desde antes que existiera "test".
> ¿Tú crees que todo Unix se inventó de un paraguazo?  Por esto dije antes
> que era una razón histórica; muchas otras cosas que parecen raras se
> explican de la misma forma.

La pregunta es esa parte de la historia: porque no hicieron
inmediatamente que el cp copiara archivos o directorios
recursivamente, siendo que es lo mas "obvio".

Mi apuesta es que inicialmente los directorios y archivos eran
considerados iguales (son todos inodos), y todos eran tratados de
manera igual... Por ejemplo, en AIX puedes hacer lo siguiente:

# mkdir -p mi/directorio
# cat mi
p...pUdirectorio#
# od -x mi
0000000  7017 2e00 0000 0000 0000 0000 0000 0000
0000020  0002 2e2e 0000 0000 0000 0000 0000 0000
0000040  7055 6469 7265 6374 6f72 696f 0000 0000
0000060

Creo que alguna vez por error hice algo del estilo "echo hola >
directorio" y quedó la crema, y tuve que correr fsck, aunque tal vez
lo soñé ;) O quizás inicialmente pretendian copiar los nombres (aka:
links a archivos) con tan solo "cp directorio1 directorio2" ... no me
crean, especulando no mas!

En cambio en Linux esto no tiene mucho sentido, y dice:
# mkdir -p mi/directorio
# cat mi
cat: mi: Is a directory
# od -x mi
od: mi: read error: Is a directory


-- 
Aldrin Martoq
http://aldrin.martoq.cl/



Más información sobre la lista de distribución Linux