3 puntos por GN⁺ 2024-12-14 | 1 comentarios | Compartir por WhatsApp
  • Últimamente he estado pensando que todo lo que ocurre en la terminal es una combinación de estos cuatro elementos

    • el rol del sistema operativo
    • el rol del shell
    • el rol del emulador de terminal
    • el rol del programa en ejecución (top, vim, cat, etc.)
  • Los programas se comportan de forma sorprendentemente consistente

    • POSIX define principalmente cómo funcionan el emulador de terminal, el SO y el shell, pero no existe un estándar sobre cómo deben comportarse los programas individuales
    • Aun así, los programas de terminal en general se comportan de manera consistente
  • Estas reglas son descriptivas, no prescriptivas

    • No se trata de convencer a quienes escriben programas de terminal de que deban seguir estas reglas
    • Es útil conocer estas reglas básicas para anticipar qué esperar al usar un programa de terminal nuevo
  • A veces no está claro de quién es la responsabilidad del programa

    • Por ejemplo, salir de un REPL al presionar Ctrl-D es algo que el programa debe implementar explícitamente

Regla 1: los programas no interactivos deben salir al presionar Ctrl-C

  • Los programas no interactivos, por defecto, terminan al presionar Ctrl-C
  • En los programas interactivos, Ctrl-C cumple otra función

Regla 2: las TUI deben salir al presionar q

  • Los programas TUI como less o htop salen al presionar q

Regla 3: los REPL deben salir al presionar Ctrl-D en una línea vacía

  • La mayoría de los REPL salen al presionar Ctrl-D en una línea vacía

Regla 4: no se deberían usar más de 16 colores

  • Los programas de terminal casi no usan colores fuera de los 16 colores ANSI básicos

Regla 5: se deberían soportar más o menos los atajos de teclado de readline

  • La mayoría de los programas soportan atajos de teclado de readline

Regla 5.1: Ctrl-W debe borrar la última palabra

  • Casi no hay programas en los que Ctrl-W no borre la última palabra

Regla 6: se deben desactivar los colores al escribir a una tubería

  • La mayoría de los programas desactivan los colores cuando escriben a una tubería

Regla 7: - significa stdin/stdout

  • Si se pasa - en lugar de un nombre de archivo, se lee desde stdin o se escribe en stdout

  • Aprender estas reglas toma tiempo

    • Hay que aprender dónde aplican las reglas, reconocer las excepciones y captar los patrones de forma inconsciente
    • Escribir estas reglas de manera explícita puede ayudar a que otras personas las aprendan más rápido

1 comentarios

 
GN⁺ 2024-12-14
Comentarios de Hacker News
  • Debe respetar el color predeterminado de primer plano y de fondo del usuario

    • Si usa colores, debe seguir siendo legible sin importar el color de fondo y de primer plano predeterminado
    • No debe transmitir información solo mediante el color
    • Los emojis deben usarse con cuidado
    • No debe borrar información importante en salidas con desplazamiento
    • Debe ofrecer al usuario configuraciones para elegir colores y elementos visuales
  • Recomiendan las Command Line Interface Guidelines

    • Incluyen reglas como salir con Ctrl-C, aceptar - para stdin y desactivar colores en pipes
  • Reglas adicionales para herramientas de línea de comandos

    • No debe asumir un tipo de terminal
    • Debe asumir que quizá no haya terminal
    • Debe seguir convenciones comunes en la estructura de argumentos y de salida
    • Debe usar los códigos de salida estándar de sysexits.h
    • Debe incluir --help y páginas de manual en el binario
  • Información sobre atajos de teclado de readline/emacs

    • En macOS se pueden usar Ctrl-E, Ctrl-W y Ctrl-U
    • Se puede instalar el programa rlwrap para agregar funciones de edición de línea
  • Consejos sobre el uso de colores

    • No debe usar más de 16 colores
    • Los colores deben ser configurables
  • Problema que ocurre al usar Ctrl-D en GHCi

    • Se debe salir con el comando :q
  • Explicación sobre tratar ~ como directorio home

    • En el shell funciona, pero en la API POSIX no
  • Debe evitar que los programas agreguen archivos al directorio home

    • Debe respetar XDG_CONFIG_HOME
  • Opinión sobre la consistencia de la CLI

    • La CLI es más consistente que la GUI
    • Llevar esta propiedad a la GUI es difícil
  • Los procesos de larga duración deben recargar su configuración con SIGHUP

  • Consejo útil para conexiones SSH

    • Se puede usar ~. para cerrar la sesión SSH