piapia123
es

Formateador de scripts de shell

Formato

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

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

  1. Pega el script
  2. El sangrado se arregla mientras escribes
  3. Ajusta el ancho y las dos opciones de espacios si hace falta
  4. 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