GNU/Linux >> Tutoriales Linux >  >> Linux

¿Debo colocar una barra diagonal después de la fuente y el destino al copiar carpetas?

Trato de poner un final / en el objetivo.

Si cometo un error y el origen y el destino son archivos en lugar de directorios, agrego el / significa que obtendré un error; sin el / aplastará el archivo de destino.

(La finalización de la pestaña generalmente agregará el final / de todos modos, por lo que generalmente es más fácil agregarlo que no hacerlo).

Consulte la respuesta de Volker Siegel para obtener más detalles.


Sin barra diagonal final en el directorio de origen

No deberías coloque una barra inclinada final en el directorio de origen:

El punto es relevante para cp - pero también a mv , donde es mucho más importante .

Citaré la advertencia del manual:tenga en cuenta que no se encuentra en la página del manual, sino en la página de información info coreutils 'mv invocation' :

Advertencia :Evite especificar un nombre de fuente con una barra inclinada al final, cuando podría ser un enlace simbólico a un directorio. De lo contrario, 'mv' puede hacer algo muy sorprendente, ya que su comportamiento depende de la llamada al sistema de cambio de nombre subyacente. En un sistema con un kernel moderno basado en Linux, falla con 'errno=ENOTDIR'. Sin embargo, en otros sistemas (al menos FreeBSD 6.1 y Solaris 10) cambia silenciosamente no el enlace simbólico sino el directorio al que hace referencia el enlace simbólico.

Usar barras inclinadas en el directorio de destino

Si desea mover archivos y directorios a un directorio, debe agregar una barra inclinada al final del directorio de destino.
No cambia nada mientras todo vaya bien.
Pero puede salvarlo de un error común que provoca la pérdida o el cambio de datos:

Si mueve un archivo a un directorio, hay dos cosas que pueden salir mal:
Es posible que haya escrito mal el último componente del nombre del directorio de destino, como un carácter incorrecto. Dos de las cosas que pueden suceder son estos dos casos:

  • Si el nombre mal escrito no existe:

    • el archivo se renombrará con el nombre mal escrito

    • se mueve al directorio principal del destino deseado

    • Así que no termina donde estaba, ni donde esperas que vaya.

  • Si el nombre mal escrito no existe, y es un archivo:

    • el archivo sobrescribirá el archivo con el nombre mal escrito, en el directorio principal del destino.

    • Nuevamente, no lo encontrará donde estaba, o donde debería estar:simplemente desapareció.

Si usa una barra inclinada final en el directorio de destino, se evitan ambos casos:

Hace mv no lo use como un nombre de archivo cuando lo haría normalmente. En su lugar, mv solo da un error:

mv: failed to access ‘foo/’: Not a directory

Eliminar automáticamente las barras

Hay una opción especial para cp y mv para mitigar el riesgo eliminando siempre la barra inclinada de los directorios src:

Some GNU programs (at least `cp' and `mv') allow you to remove any
trailing slashes from each SOURCE argument before operating on it.  The
`--strip-trailing-slashes' option enables this behavior.

   This is useful when a SOURCE argument may have a trailing slash and
specify a symbolic link to a directory.  This scenario is in fact rather
common because some shells can automatically append a trailing slash
when performing file name completion on such symbolic links.  Without
this option, `mv', for example, (via the system's rename function) must
interpret a trailing slash as a request to dereference the symbolic link
and so must rename the indirectly referenced _directory_ and not the
symbolic link.  Although it may seem surprising that such behavior be
the default, it is required by POSIX and is consistent with other parts
of that standard.

Linux
  1. ¿Cómo comparar dos carpetas y copiar la diferencia en una tercera carpeta?

  2. ¿Fusionar carpetas con Mv?

  3. ¿Cuándo se debe compilar e instalar desde la fuente?

  4. ¿Puede colocar varios scripts ejecutables en un directorio y, al obtener ese directorio, hacer que todos esos comandos estén disponibles?

  5. ¿Copiar archivos modificados después de una fecha específica usando interruptores Cp?

Cómo copiar archivos y directorios en Linux

Cómo copiar un directorio en Linux

Aprenda a copiar archivos y carpetas desde/hacia otro servidor

Cómo copiar/mover archivos y directorios en Linux con los comandos “cp” y “mv”

¿Cuándo debo usar TCP_NODELAY y cuándo TCP_CORK?

No se puede acceder a las carpetas montadas por sshfs después de la suspensión (o cuando se pierde la conexión)