mv: wrong reason when the source can't be stat'ed (missing 'x/' says Not a directory, EACCES says No such file)

Abierto Apto para principiantes
#15,704 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@emirmrkaljevic ya está trabajando en esto.

Desde el 23/10/2026.

  • #15705 de @emirmrkaljevic — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust
Área
cli

Línea de trabajo

Empieza por la ruta de rename() de la implementación de mv, donde, según el issue, se descarta el error de symlink_metadata() de la fuente. Sigue cómo ese error se convierte en el diagnóstico y luego ejecuta las pruebas pertinentes de mv o añade casos para una fuente inexistente con una barra final y una ruta no legible. El trabajo está terminado cuando ambos casos indican el motivo correspondiente y se conserva el código de salida 1.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

U - mv

mv reports the wrong reason when it can't stat the source.

$ touch f; mkdir d; touch d/x; chmod 000 d

$ mv missing/ g          # GNU 9.7 / 9.12
mv: cannot stat 'missing/': No such file or directory
$ uu-mv missing/ g       # uutils main
mv: cannot stat 'missing/': Not a directory

$ mv d/x g               # GNU
mv: cannot stat 'd/x': Permission denied
$ uu-mv d/x g            # uutils main
mv: cannot stat 'd/x': No such file or directory

Exit codes match (1); only the message is wrong. In rename() the source symlink_metadata() error is thrown away: a trailing slash always becomes "Not a directory" and anything else becomes "No such file or directory".

Found with behave, comparing GNU coreutils and uutils on trailing-slash and unreadable-path inputs.

Lenguaje dominante
Rust
Estrellas
24.3k
Forks
2.1k
Merge medio
1 d 22 h
PR fusionados (30 d)
396

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de uutils/coreutils

Todos los issues de uutils/coreutils

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.