-
Recentemente, passei a pensar que tudo o que acontece no terminal é uma combinação dos quatro elementos a seguir
- o papel do sistema operacional
- o papel do shell
- o papel do emulador de terminal
- o papel do programa em execução (
top,vim,catetc.)
-
Os programas se comportam de forma surpreendentemente consistente
- O POSIX define principalmente como o emulador de terminal, o SO e o shell funcionam, mas não há um padrão para como programas individuais devem se comportar
- Ainda assim, os programas de terminal em geral funcionam de maneira consistente
-
Essas regras são descritivas, não prescritivas
- Não se trata de convencer autores de programas de terminal de que eles devem seguir essas regras
- É útil conhecer as regras básicas que você pode esperar ao usar um novo programa de terminal
-
Às vezes, a responsabilidade do programa não é clara
- Por exemplo, encerrar um REPL ao pressionar
Ctrl-Dé algo que o programa precisa implementar explicitamente
- Por exemplo, encerrar um REPL ao pressionar
Regra 1: programas não interativos devem encerrar ao pressionar Ctrl-C
- Programas não interativos, em geral, encerram quando
Ctrl-Cé pressionado - Em programas interativos,
Ctrl-Ccumpre outro papel
Regra 2: TUIs devem encerrar ao pressionar q
- Programas TUI como
lessehtopencerram ao pressionarq
Regra 3: REPLs devem encerrar ao pressionar Ctrl-D em uma linha vazia
- A maioria dos REPLs encerra quando
Ctrl-Dé pressionado em uma linha vazia
Regra 4: não se deve usar mais de 16 cores
- Programas de terminal quase não usam cores além das 16 cores ANSI padrão
Regra 5: deve haver suporte aproximado aos atalhos de teclado do readline
- A maioria dos programas oferece suporte aos atalhos de teclado do
readline
Regra 5.1: Ctrl-W deve apagar a última palavra
- Quase não existem programas em que
Ctrl-Wnão apague a última palavra
Regra 6: cores devem ser desativadas ao escrever em um pipe
- A maioria dos programas desativa as cores ao escrever em um pipe
Regra 7: - significa stdin/stdout
-
Se
-for passado em vez de um nome de arquivo, o programa lê de stdin ou escreve em stdout -
Leva tempo para aprender essas regras
- É preciso aprender onde as regras se aplicam, reconhecer exceções e assimilar os padrões de forma inconsciente
- Escrever essas regras explicitamente pode ajudar outras pessoas a aprendê-las mais rápido
1 comentários
Comentários no Hacker News
Deve respeitar as cores padrão de primeiro plano e de fundo do usuário
Recomenda as Command Line Interface Guidelines
-para stdin e desativar cores em pipesRegras adicionais para ferramentas de linha de comando
sysexits.h--helpno binário e páginas de manualInformações sobre atalhos de teclado do readline/emacs
rlwrappara adicionar recursos de edição de linhaConselhos sobre o uso de cores
Problema que ocorre ao usar Ctrl-D no GHCi
:qExplicação sobre tratar
~como diretório homeO programa não deve adicionar arquivos ao diretório home
XDG_CONFIG_HOMEOpinião sobre a consistência da CLI
Processos de longa duração devem recarregar a configuração ao receber SIGHUP
Dica útil para conexões SSH
~.