Marcio Cunha

Como capturar notas e tarefas via CLI com Bash e Python

Aprenda a construir um fluxo de trabalho zero-mouse usando scripts em Bash e Python integrados com arquivos Markdown para capturar notas e tarefas direto do terminal.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • Fluxos baseados em terminal eliminam a necessidade de alternar janelas e reduzem distração no dia a dia
  • Scripts em Bash permitem criar atalhos rápidos para injetar texto bruto em arquivos estruturados
  • Interpretadores Python processam marcações customizadas e organizam metadados em arquivos Markdown
  • Estruturas padronizadas de frontmatter garantem compatibilidade com editores baseados em notas locais
  • A automação contínua de tarefas na linha de comando transforma o terminal em um hub de produtividade

Por que o terminal é o melhor lugar para capturar ideias

Quando uma ideia surge no meio de uma depuração de código ou enquanto revisamos um log do sistema, cada segundo gasto abrindo um aplicativo gráfico com interface de mouse quebra o nosso raciocínio. O fluxo zero-mouse consiste em manter as mãos firmemente apoiadas no teclado, utilizando o terminal para executar tarefas administrativas, testes e anotações rápidas. Na prática, isso significa escrever pequenas rotinas que capturam o pensamento e o salvam imediatamente em arquivos de texto simples, preservando o foco e a velocidade.

Trabalhar com arquivos Markdown — formato de texto leve que usa símbolos simples como asteriscos e hashtags para criar títulos e listas — garante que suas anotações sejam duradouras, portáteis e independentes de softwares proprietários. Antes de criarmos nossos scripts de captura, vale lembrar que a automação eficiente de processos locais muitas vezes caminha lado a lado com a segurança dos seus códigos, como quando aprendemos a revisar código com IA local antes do pull request usando Ollama, garantindo que nossas ferramentas de suporte operem sempre em harmonia.

Construindo o primeiro capturador de notas em Bash

O Bash é a linguagem padrão de interpretação de comandos em sistemas Unix e Linux, sendo ideal para criar utilitários rápidos que interagem com o sistema de arquivos. Para começar, vamos criar um script simples que recebe um argumento de texto no terminal e o acrescenta automaticamente a um arquivo de notas diárias, adicionando a hora exata da anotação para manter um registro cronológico preciso. Na prática, o script captura o que você digita após o comando e o joga no final de um arquivo Markdown sem que você precise abrir nenhum editor visual.

Abaixo está o código básico do script em Bash que realiza essa captura em milissegundos:

#!/usr/bin/env bash
NOTE_DIR="$HOME/Documents/Notes"
TODAY=$(date '+%Y-%m-%d')
FILE="$NOTE_DIR/$TODAY.md"

if [ ! -d "$NOTE_DIR" ]; then
  mkdir -p "$NOTE_DIR"
fi

echo "- [ ] $(date '+%H:%M') - $@" >> "$FILE"
echo "Nota adicionada com sucesso!"

Esse pequeno bloco verifica se o diretório de notas existe, cria a pasta caso necessário e anexa a tarefa com uma caixa de seleção markdown vazia. Assim, manter o controle das suas pendências diárias torna-se um hábito tão simples quanto teclar enter após escrever a linha de comando.

Processando tarefas complexas com Python

Embora o Bash seja excelente para tarefas lineares de texto, quando precisamos manipular estruturas de dados mais complexas, como extrair tags, formatar cabeçalhos ou categorizar tarefas por prioridade, o Python entra como a ferramenta perfeita. O Python possui uma sintaxe limpa e bibliotecas nativas robustas para manipulação de arquivos e expressões regulares, permitindo transformar uma frase solta em uma tarefa rica em metadados dentro do seu cofre de notas.

O script em Python a seguir lê um argumento de texto, identifica se há marcações de prioridade e gera um bloco estruturado em Markdown:

import sys
import datetime
import os

def main():
    if len(sys.argv) < 2:
        print("Uso: note 'Sua nota aqui'")
        return
    
    content = " ".join(sys.argv[1:])
    now = datetime.datetime.now()
    date_str = now.strftime("%Y-%m-%d")
    time_str = now.strftime("%H:%M")
    
    note_path = os.path.expanduser(f"~/Documents/Notes/{date_str}.md")
    
    os.makedirs(os.path.dirname(note_path), exist_ok=True)
    
    with open(note_path, "a", encoding="utf-8") as f:
        f.write(f"- [ ] **{time_str}** - {content}\n")
        
    print(f"Tarefa salva em {date_str}.md")

if __name__ == "__main__":
    main()

Ao executar esse script no terminal, você delega o trabalho pesado de formatação ao interpretador, garantindo que todas as notas sigam rigorosamente o mesmo padrão visual. Essa consistência estrutural é fundamental para manter seus arquivos organizados, conversando diretamente com a disciplina de manter sistemas limpos e previsíveis — uma preocupação constante que também aplicamos quando buscamos rastrear vazamentos de memória em APIs Go com pprof para manter o ecossistema saudável.

Integrando atalhos e aliases no seu ambiente

Para que a captura de notas via CLI seja realmente útil, o acesso a esses scripts deve ser imediato, sem que você precise digitar caminhos longos no terminal. A melhor forma de conseguir isso é registrando funções ou aliases no arquivo de configuração do seu shell, como o arquivo .bashrc ou .zshrc, transformando o seu script em um comando global do sistema.

Veja como configurar um atalho rápido adicionando uma função ao seu arquivo de inicialização do terminal:

  1. Abra o seu arquivo de configuração do shell com um editor de texto de sua preferência.
    nano ~/.zshrc
  2. Adicione a função que chama o seu script Python ou Bash passando os argumentos capturados.
    n() { python3 ~/bin/note.py "$@"; }
  3. Recarregue as configurações do terminal para aplicar a mudança imediatamente.
    source ~/.zshrc

Com essa configuração ativa, basta digitar n "Revisar documentação da API" de qualquer lugar do seu sistema operacional para que a tarefa seja gravada instantaneamente no seu arquivo de notas diárias. Essa abordagem elimina barreiras cognitivas e transforma o terminal em uma extensão natural do seu pensamento.

Considerações finais sobre o fluxo zero-mouse

Automatizar a captura de notas e tarefas via CLI utilizando Bash e Python transforma a maneira como interagimos com o conhecimento no dia a dia. Ao eliminar o uso do mouse e focar em ferramentas baseadas em texto plano e Markdown, ganhamos velocidade, portabilidade e controle absoluto sobre nossos dados. A construção desses pequenos scripts não apenas otimiza o tempo de desenvolvimento, mas também consolida um ambiente de trabalho minimalista e altamente eficiente.

Adotar essa filosofia exige apenas o hábito de registrar os pensamentos no momento em que eles surgem, deixando que a automação cuide da organização estrutural em segundo plano. Com o tempo, seu repositório de notas se tornará um acervo valioso e perfeitamente indexado, pronto para ser consultado ou processado por ferramentas auxiliares sempre que você precisar.