BookinglyTech News
Software

Uutils coreutils añade diagnostics tipo compilador a sus errores

La nueva versión 0.11.0 de uutils coreutils muestra errores con carets y ayuda contextual, como los compiladores. El objetivo es facilitar la depuración de argumentos que son mini‑lenguajes.

3 min de lecturaLobsters0 vistas

Cambios de la versión 0.11.0

Uutils coreutils ha incorporado en su última versión 0.11.0 un mecanismo de diagnóstico que muestra la línea de entrada, un caret que indica el carácter problemático y una línea de ayuda con la sintaxis correcta. El comportamiento se activa cuando la salida estándar de error está conectada a un terminal.

Ejemplos concretos

  • tr

Antes:

tr $ tr 'qw[y-b]' x
tr: range-endpoints of 'y-b' are in reverse collating sequence order

Después:

tr $ tr 'qw[y-b]' x
tr: range-endpoints of 'y-b' are in reverse collating sequence order
╭─[ tr:1:7 ]
│ 1 │ tr qw[ y-b ] x
│ ─┬─
╰─── did you mean 'b-y'? 
│ Help : a range goes from the lower character to the higher one, as in a-z
  • cut

Antes:

cut $ cut -f 1,4-2,9-12 notes.txt
cut: invalid decreasing range

Después:

cut $ cut -f 1,4-2,9-12 notes.txt
cut: invalid decreasing range
╭─[ cut:1:10 ]
│ 1 │ cut -f 1, 4-2 ,9-12 notes.txt
│ ─┬─
╰─── this range ends before it starts
│ Help : a list is N, N-M, N- or -M, separated by commas, as in -f1,4-6,9-
  • chmod

Antes:

chmod $ chmod 'g+rw?x' notes.txt
chmod: invalid operator (expected +, -, or =, but found ?)

Después:

chmod $ chmod 'g+rw?x' notes.txt
chmod: invalid operator (expected +, -, or =, but found ?)
╭─[ chmod:1:5 ]
│ 1 │ g+rw ? x notes.txt
│ ─ │
│ Help : a mode is either octal, as in 644, or clauses such as u+rwx,go-w
  • sort

Antes:

sort $ sort -k2.3x notes.txt
sort: stray character in field spec: invalid field specification '2.3x'

Después:

sort $ sort -k2.3x notes.txt
sort: stray character in field spec: invalid field specification '2.3x'
╭─[ sort:1:11 ]
│ 1 │ sort -k2.3 x notes.txt
│ ─ │
│ Help : a key is FIELD[.CHAR][OPTS][,FIELD[.CHAR][OPTS]], as in -k2.3,4nr

El mismo patrón de reporte se aplica a comandos como env, test, head, numfmt, csplit y muchos más. En todos los casos el mensaje incluye la posición exacta del error y una explicación breve.

Impacto en la práctica

Para un administrador de sistemas o un desarrollador que depura scripts de shell, la mejora reduce el tiempo de diagnóstico de argumentos mal formados. La sintaxis de los mensajes se alinea con la de los compiladores Rust y la librería ariadne, lo que facilita la transición para quienes ya están acostumbrados a esos patrones.

El proyecto sigue siendo open source bajo la licencia MIT, y el código de la nueva capa de diagnóstico está en el repositorio de GitHub de uutils. Se puede habilitar o deshabilitar con la variable de entorno UUTILS_DEBUG.

Qué sigue

La comunidad de uutils ya está evaluando extender el soporte a más comandos y a la salida de error no interactiva (cuando stderr no sea un terminal). La próxima versión debería incluir pruebas de regresión para garantizar que los mensajes antiguos no cambien inesperadamente.

Para probar los nuevos mensajes, se puede usar el playground de la documentación o instalar la última versión con cargo install uutils-coreutils.


El cambio es relevante porque el error ahora indica la posición exacta del fallo, lo que simplifica la corrección en scripts complejos y mejora la experiencia de depuración.