Formateador de scripts de shell
FormatoTodo se ejecuta en tu navegador: no se sube nada
Ordena un script de shell que perdió el sangrado: if / fi, for / done, while / do, case / esac, los cuerpos de función y los subshells se alinean por nivel, con las etiquetas de rama de case un nivel más dentro y `;;` volviendo al nivel de la rama. La línea que esta herramienta se marca es que solo cambia el espacio al principio de cada línea: ni un carácter del interior. Shell no es un lenguaje que se pueda reordenar a la ligera: todo lo que hay entre `<<EOF` y `EOF` son datos, y un espacio de más los cambia; las continuaciones y los saltos dentro de comillas dependen de dónde estén. El precio es que no expandirá `if [ x ]; then echo ok; fi` en tres líneas, y la ventaja es que tampoco va a romper tu script.
Funciones
- Sangrado por estructura: if / for / while / case / cuerpos de función / subshells
- Las ramas de case se tratan aparte: las etiquetas un nivel más dentro y `;;` vuelve al nivel de la rama
- Solo cambia el espacio inicial; ni un carácter del interior de la línea
- El cuerpo de un heredoc (`<<EOF`) se copia tal cual, porque sangrarlo cambiaría los datos
- Las cadenas de varias líneas se dejan en paz, y las comillas dentro de un comentario no se toman por el inicio de una cadena
- Las palabras de cierre seguidas de una redirección (`done < file`) también se alinean bien
- Ancho de sangrado de 2 o 4, con recorte del espacio final y unión de líneas en blanco opcionales
Cómo se usa
- Pega el script
- El sangrado se arregla mientras escribes
- Ajusta el ancho y las dos opciones de espacios si hace falta
- Copia el resultado
Preguntas frecuentes
- ¿Por qué no hay opción de «minificar»?
- Porque en shell es una trampa. Los comentarios pueden estar dentro de un heredoc, donde son datos y quitarlos cambia la salida; un script sin salto de línea final se junta en una sola línea no deseada; y los saltos alrededor de `&&` y de las tuberías no se pueden mover a la ligera. La mayoría de los scripts sobrevivirían, pero los que no fallan en silencio y se comportan de forma extraña al ejecutarse, así que esta herramienta no lo hace.
- ¿Por qué se dejan intactos los heredoc?
- Porque cada línea entre `<<EOF` y `EOF` son datos que se escriben; el sangrado de ahí forma parte del contenido. Añadirle sangrado cambia lo que produce el script: si está generando YAML o un fragmento de código, un sangrado equivocado rompe el archivo entero. La forma `<<-` admite tabuladores al principio, pero solo tabuladores, y esa distinción también se conserva.
- ¿Cambia el comportamiento del script?
- No. La herramienta reescribe solo el espacio inicial de cada línea, tras identificar primero los heredoc y las cadenas de varias líneas y saltarlos. Todo lo del interior de una línea —espacios de más, caracteres especiales, comentarios— se deja exactamente como estaba.
- ¿Se sube el script a algún sitio?
- No. El formato ocurre en el navegador y la página no envía ninguna petición; los scripts de despliegue suelen llevar claves y direcciones internas, y nada de eso sale del equipo.
Herramientas relacionadas
Resaltado de código
WebColorea código con sintaxis y cópialo con el color intacto a PowerPoint, Word o correo; o exporta HTML con estilos en línea para tu blog. 26 lenguajes.
JS: minificar y embellecer
FormatoMinifica JavaScript (quita comentarios y espacios, conserva las licencias /*!) o lo embellece reindentando por llaves y puntos y coma. Nada se sube.
Formateador SQL
FormatoFormatea SQL en línea: una cláusula por línea, palabras clave con el mismo estilo y subconsultas sangradas. El minificador quita los comentarios.
Formateador JSON
FormatoFormatea, valida y repara JSON en línea: árbol plegable, búsqueda de claves y valores, edición nodo a nodo y errores con línea y columna.
JSON a código
FormatoConvierte una muestra JSON en interfaces de TypeScript, structs de Go, clases de Java o structs de Rust; las claves que faltan salen opcionales.
Conversor JSON5
FormatoPasa JSON5 a JSON estricto: comentarios, claves sin comillas, comillas simples, comas finales, hexadecimal e Infinity, con errores por línea y columna.