web-dev-qa-db-fra.com

Comment empêcher l'exécution des commandes modifiées avec fc

J'ai FCEDIT réglé sur vim. Si j'appelle la commande fc, elle ouvrira vim avec un fichier temporaire et le contenu de ce fichier sera la dernière commande exécutée de l'historique.

Le problème est que même si je quitte sans enregistrer, la commande est toujours exécutée. Par exemple:

$ printf "\nHelloAskubuntu\n\n"

HelloAskubuntu

$ fc # opens vim, I do :q!
printf "\nHelloAskubuntu\n\n"

HelloAskubuntu

Comment puis-je éviter cela?

3
Sergiy Kolodyazhnyy

Cela se produit car le contenu est déjà stocké dans le fichier temporaire /tmp/bash-fc-*. En le fermant directement, fc exécutera quand même ce Shell.

Une approche de travail que j'ai pu tester dans Ubuntu 16.04.

  1. Créer une commande proxy (nouvel éditeur)

    Sudo vim /usr/local/bin/vim2
    

    Ouvrez-le dans vim puis videz-le sur le disque. Ainsi, le contenu est uniquement dans vim si vous ne l'enregistrez pas, fc ne fonctionnera rien

    #!/bin/sh
    
    sh -c "sleep 1; echo -n ''>$1" &
    vim $1
    

    Fixer l'autorisation

    Sudo chmod +x /usr/local/bin/vim2
    
  2. Définissez FCEDIT sur vim2 ou temporairement pour tester export FCEDIT=vim2

Le seul espoir est que vous n'êtes pas plus rapide que moi, pour fermer vim avant 1 seconde.

0
user.dz