Dica de desenvolvedor: copie automaticamente a saída do console para a área de transferência

Categoria: Produtividade Linux/Shell
Plataforma: Linux (zsh + Konsole/KDE)


O problema

Ao trabalhar com assistentes de IA, muitas vezes você precisa copiar a saída do terminal e colá-la no chat. Isso geralmente significa:

  1. Execute o comando

  2. Selecione a saída com o mouse

  3. Copie

  4. Mude para o navegador

  5. Cole

São muitos passos.


A solução: captura automática via preexec / precmd

Adicione isto ao seu ~/.zshrc:

# === AUTO-OUTPUT LOGGER ===
# Automatically saves console output to ~/t.txt and copies to clipboard.
# Toggle: set AUTO_CLIPBOARD=true/false
AUTO_CLIPBOARD=true

# Redirect stdout+stderr to ~/t.txt before each command
preexec() {
    case "$1" in
        sudo*|su*) return ;;
        *) exec > >(tee ~/t.txt) 2>&1 ;;
    esac
}


precmd() {
    exec >/dev/tty 2>&1
    if [ "$AUTO_CLIPBOARD" = "true" ] && [ -s ~/t.txt ]; then
        cleaned=$(cat ~/t.txt \
            | sed 's/\][0-9]*;[^]]*\][0-9]*;//g; s/^[0-9]*;//g' \
            | sed "s|$HOME|~|g" \
            | sed 's/[^[:print:]]//g' \
            | grep -v '^$')
        if [ -n "$cleaned" ]; then
            echo "$cleaned" | xclip -selection clipboard
            echo "[📋 In Zwischenablage kopiert]"
        fi
    fi
}

Então recarregue:

source ~/.zshrc

Resultado

Após cada comando, a saída é automaticamente na sua área de transferência — pronta para ser colada no seu chat de IA com Ctrl+V.

A saída também é sempre salva em ~/t.txt para referência.


##Como funciona

Parte

O que faz

preexec()

Executado antes de cada comando, redireciona a saída para ~/t.txt

precmd()

Executa após cada comando, restaura stdout e copia para a área de transferência

tee ~/t.txt

Salva a saída em um arquivo enquanto ainda a mostra no terminal

sed '...'

Remove sequências de escape de título do KDE Konsole (]2;... ]1;)

xclip

Copia a saída limpa para a área de transferência


Requisitos

# Install xclip if not present
sudo pacman -S xclip       # Manjaro/Arch
sudo apt install xclip     # Ubuntu/Debian

⚠️ O que NÃO fazer

Não use fc -ln -1 | bash para executar novamente o último comando:

CODE_BLOCO_3

Isso reexecuta cada comando após sua conclusão, o que pode causar efeitos colaterais destrutivos - por exemplo, sobrescrever arquivos, reexecutar git commit, reexecutar sed -i, etc.

A abordagem preexec/precmd acima captura a saída durante a execução — segura e confiável.