-
Ú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-Des algo que el programa debe implementar explícitamente
- Por ejemplo, salir de un REPL al presionar
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-Ccumple otra función
Regla 2: las TUI deben salir al presionar q
- Los programas TUI como
lessohtopsalen al presionarq
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-Den 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-Wno 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
Comentarios de Hacker News
Debe respetar el color predeterminado de primer plano y de fondo del usuario
Recomiendan las Command Line Interface Guidelines
-para stdin y desactivar colores en pipesReglas adicionales para herramientas de línea de comandos
sysexits.h--helpy páginas de manual en el binarioInformación sobre atajos de teclado de readline/emacs
rlwrappara agregar funciones de edición de líneaConsejos sobre el uso de colores
Problema que ocurre al usar Ctrl-D en GHCi
:qExplicación sobre tratar
~como directorio homeDebe evitar que los programas agreguen archivos al directorio home
Opinión sobre la consistencia de la CLI
Los procesos de larga duración deben recargar su configuración con SIGHUP
Consejo útil para conexiones SSH
~.para cerrar la sesión SSH