cp -av /home/jake/transit/scalaProjects/scalaML/src/main/scala /home/jake/project/__workspace/scalaProjects/scalaML/src/main/scala
cp -av /home/jake/transit/scalaProjects/scalaML/src/test/scala /home/jake/project/__workspace/scalaProjects/scalaML/src/test/scala
La primera línea copia a / src / main / scala
PERO
las segundas copias a / src / test / scala / scala
Estoy en el servidor de Ubuntu 16.
Estoy seguro de que me estoy perdiendo algo, pero estoy confundido. Cualquier ayuda sería apreciada
Respuestas:
Considerar
cp a b/c
.Si
c
no existe (yb
lo hace), se interpretará como un nombre para la copia dea
, así terminarás conb/c
.Por otro lado si
c
existe y es un directorio, se interpretará como una ruta donde colocara
bajo el nombre sin cambiosa
, así terminarás conb/c/a
.Supongo que al principio
/home/jake/project/__workspace/scalaProjects/scalaML/src/main/scala
no existe, solo hay/home/jake/project/__workspace/scalaProjects/scalaML/src/main/
.Tu primer comando crea
scala
Actuando como (1). Puede ser algo confuso porque tienesscala
en lugar dea
yc
, por lo que no es obvio que tenga lugar un cambio de nombre trivial (desdescala
ascala
). Entonces el segundo comando actúa como (2).Este comando funcionará como el primero, independientemente de si el objetivo
scala
existe, si solo/home/jake/project/__workspace/scalaProjects/scalaML/src/main/
existe:Pero Si
/home/jake/project/__workspace/scalaProjects/scalaML/src/main/
no existe y/home/jake/project/__workspace/scalaProjects/scalaML/src/
Tuscala
será colocado allí bajo el nombremain
. Este es el comportamiento (1) de nuevo.Para deshacerse de esta ambigüedad utiliza
-t
:Esto hace
cp
interpretarmain
como un directorio donde quieres colocarscala
. No se llevará a cabo ningún cambio de nombre. Si/home/jake/project/__workspace/scalaProjects/scalaML/src/main/
no existecp
lanzará un error.fuente
He encontrado el problema y la solución. Un archivo oculto permaneció en el directorio a pesar de que había intentado eliminar completamente el directorio anteriormente (
rm -rf
).Este archivo
.fuse_hidden
fue creado por el sistema de archivos porque una sesión del servidor SFTP todavía tenía un enlace al archivo. (Había abierto previamente un archivo en ese directorio a través de mobaxterm).Al cerrar la sesión en mi terminal mobaxterm que había abierto el archivo, se eliminó el archivo oculto y todo lo demás funcionó bien. Tenga en cuenta que cerrar el archivo que había abierto de forma remota no fue suficiente para resolver el problema.
ver aquí para una mejor explicación
fuente