Astuce de développement : copiez automatiquement la sortie de la console dans le presse-papiers¶
Catégorie : Productivité Linux / Shell
Plateforme : Linux (zsh + Konsole/KDE)
Le problème¶
Lorsque vous travaillez avec des assistants IA, vous devez souvent copier la sortie du terminal et la coller dans le chat. Cela signifie généralement :
Exécuter la commande
Sélectionnez la sortie avec la souris
Copier
Passer au navigateur
Coller
Cela fait trop d’étapes.
La solution : capture automatique via preexec / precmd¶
Ajoutez ceci à votre ~/.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
}
Puis rechargez :
source ~/.zshrc
Résultat¶
Après chaque commande, le résultat est automatiquement dans votre presse-papiers, prêt à être collé dans votre chat AI avec Ctrl+V.
La sortie est également toujours enregistrée dans ~/t.txt pour référence.
Exigences¶
# Install xclip if not present
sudo pacman -S xclip # Manjaro/Arch
sudo apt install xclip # Ubuntu/Debian
⚠️ Ce qu’il ne faut PAS faire¶
Ne pas utiliser fc -ln -1 | bash pour réexécuter la dernière commande :
# ❌ DANGEROUS - do not use!
precmd() {
output=$(fc -ln -1 | bash 2>&1) # Re-executes last command!
echo "$output" | xclip -selection clipboard
}
Cela réexécute chaque commande une fois terminée, ce qui peut provoquer des effets secondaires destructeurs — par exemple l’écrasement de fichiers, la réexécution de git commit, la réexécution de sed -i, etc.
L’approche preexec/precmd ci-dessus capture la sortie pendant l’exécution — sûre et fiable.
Comment ça marche¶
Partie
Ce qu’il fait
preexec()S’exécute avant chaque commande, redirige la sortie vers
~/t.txtprecmd()S’exécute après chaque commande, restaure la sortie standard et copie dans le presse-papiers
tee ~/t.txtEnregistre la sortie dans un fichier tout en l’affichant dans le terminal
sed'...'Supprime les séquences d’échappement du titre de KDE Konsole (
]2;...]1;)xclipCopie la sortie nettoyée dans le presse-papiers