it-swarm-es.com

La barra (/) después de un nombre de directorio en los comandos de shell

Tengo una pequeña pregunta aquí.

Si tengo dos archivos, digamos filea y fileb, mv filea fileb haría

  • eliminar fileb
  • cambiar nombre filea a fileb

Entonces, si tengo dos directorios, di dira y dirb, mv dira dirb haría

  • mover dira en dirb (se convertirá en dirb/dira)

Notando que en ambos casos no hay aviso ni un mensaje, entonces esto es bastante inconsistente para mí. Creo mv dira dirb debería sobrescribir dirb con el contenido de dira (o fusionar los dos directorios en un directorio llamado dirb).

Recuerdo que lee en algún lugar que un nombre de directorio con una barra (como dira/) se trata como un directorio, y el nombre sin barra (como dira) se trata como un archivo (a ciertas extensiones, por supuesto). De todos modos, ahora quiero hacer la cáscara (Zsh y Posiblemente Bash) respetar mi notación de un directorio utilizando una barra. ¿Hay una opción de terminal que me permita hacer cumplir eso?

Para aclarar, aquí está mi comportamiento deseado:

  • mv dira dirb resultados en dirb siendo sobrescrito con los contenidos de dira
  • mv dira dirb/ resultados en dira siendo movido a dirb (en dirb/dira)

¿Alguien ha pensado de la misma manera que yo? ¿O solo soy raro?

14
phunehehe

Sí, esto es un poco inconsistente, incluso dentro de la GNU Herramientas.

Un problema con su propuesta es que los directorios no vacíos no se pueden eliminar. Aparte de eso, -T (en GNU Land, de todos modos) Aproxima lo que desea (el primer caso):

$ ls dira/ dirb/
dira/:
a

dirb/:
b
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
mv: cannot move `dira/' to `dirb/': Directory not empty
$ rm dirb/b 
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
$ ls dira/ dirb/
ls: cannot access dira/: No such file or directory
dirb/:
a
11
user601

Si solo desea moverlo, desde DIRA hasta Dirb, puede ejecutar mv dira/* dirb.

Según la página de MV MAN en mi HP-UX.

The mv command moves:

+ One or more directory subtrees (directory1, [directory2, ...]) to a new or existing directory (dest-directory).

0
Hemant