para copiar contenidos de una carpeta que he leído, el uso es:
cp -rfva ../foldersource/. ./pero esto también funciona
cp -rfva ../foldersource/* ./¿hay alguna diferencia?
por ejemplo si quiero eliminar un contenido de una carpeta con. :
rm -rf ../foldersource/.me sale el error:
rm:  rejet delete folder '.' or '..':pero con asterisco está bien
rm -rf ../foldersource/*Entonces, ¿el asterisco es una mejor opción que funciona en cualquier lugar?

It's up to the command whether that trailing dot makes any senseUm, el punto siempre enlaza con el directorio que lo contiene, por lo../foldersource/.que no debería ser diferente de indicar./foldersource/y, de hecho, es solo una forma redundante de decir lo mismo. Ningún comando intenta "dar sentido" a punto o doble punto, ya que estos son estándar en los sistemas de archivos Linux / Unix.rmsimplemente rechaza eliminar el directorio de trabajo actual como sejimmijindica en su respuesta. Además, tenga en cuenta que está utilizando./en todos sus ejemplos mientras OP tiene../allí. Algo de una (gran) diferencia.cp -rfva ../foldersource/. ./NO es equivalente acp -rfva ../foldersource ./. El seguimiento/.es significativo.es una convención estándar en Unix para denotar la corriente directamente. Además, gracias por señalar que había usado./en mis ejemplos cuando debería haber usado../; Lo arreglaré Usted es incorrecto acerca de si los comandos "tienen sentido" del punto final; como señala el OP (y he experimentado concp) ambosrmy secpcomportan de manera diferente cuando hay un final.presente. Debería haber escrito algo como "depende del comando si el punto final tiene una semántica especial o única". Cambiaré mi respuesta por claridad.Cuando copia usando
cp -a source/* target/está copiando la mayoría de los archivos y directorios desourceatarget. Específicamente, los elementos que están excluidos probablemente serán archivos que comienzan con un punto (.) en el nivel superior desource.Considere estos archivos (o directorios) en
sourceCuando copia usando
cp -a source/. target/está copiando todo el contenido desource, incluidos los elementos que comienzan con un punto (.) entargetConsidere estos archivos (o directorios) en
sourceSi está usando
bash,zshpuede usar ladotglobopción para cambiar el significado de*modo que incluya archivos y directorios que comiencen con un punto (yashtambién tiene unadotglobopción; sin embargo, luego incluye.y..en expansiones globales que limitan su usabilidad. Ver tambiénFIGNORE='@(.|..)'enksh93).Curiosamente,
cp -a source/. target/se garantiza que nunca creará el componentetarget/source. (Por otro lado,cp -a source target/hará una de dos cosas dependiendo de sitargetya existe o no . Consulte Cómo copiar una carpeta de forma recursiva de forma idempotente usando cp para obtener más detalles).Cuando elimina usando
rm -rf source/*está eliminando los archivos y directoriossourceque no comienzan con un punto (.). Sujeto a ladotglobconfiguración que ya he mencionado. No eliminará el directorio ensourcesí.Cuando intente eliminarlo
rm -rf source/., fallará, como ya lo han explicado otros , porque POSIX prohíbe la eliminación de una ruta cuyo último componente es.o... El equivalente más cercano esrm -rf source, que eliminará elsourcedirectorio y todo su contenido, independientemente de si comienzan o no con un punto (.).fuente
rm -rf .su defecto .No puede hacerlo
rm -rf ../foldersource/.porquermno permite esto, como se indica explícitamente en el manual:y en el manual POSIX
man 1p rmvemos:fuente