Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

Déjà un an…

#1 Le 01/02/2010, à 00:06

[bash] annuler un déplacement/renommage de fichier

vous venez de déplacer/renommer un fichier avec la commande mv et vous souhaitez annuler ce mouvement ? (ne fonctionne pas en cas d'écrasement du fichier cible)

si la commande vient juste d'être lancée :

mv !:2 !:1

si d'autres commandes (sauf mv) ont été lancées entre temps

mv !:mv2 !mv:1

Ceci utilise les opérateurs de substitution d'historique de bash.

Limitation : impossible de scripter les substitution d'historique

une solution pour passer par une fonction :

function unmv () {
        command=$(history | tac | grep -m1 "^[^a-Z]*mv ")
        arg1=$(sed 's/^[^a-Z]*mv "*\([^"]*[^\"]\)"* "*\([^"]*\)"*/\1/' <<<$command)
        arg2=$(sed 's/^[^a-Z]*mv "*\([^"]*[^\"]\)"* "*\([^"]*\)"*/\2/' <<<$command)
        if [ -f "$arg2" ]; then
                mv -i "$arg2" "$arg1"
        else
                [ "${arg1}" = "${arg1%/*}" ] && arg="./" || arg="${arg1%/*}"
                mv -i "${arg2%/}/${arg1##*/}" "$arg"
        fi
}

(quelques bugs, notamment avec les fichiers comportant " ou \ dans le nom, si quelqu'un a une meilleure solution)


GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4

Hors ligne

#2 Le 01/02/2010, à 00:16

Re : [bash] annuler un déplacement/renommage de fichier

Il existe aussi cela que je trouve plus mnemonic :

mv foo bar
mv !$ !^
# equivalent à mv bar foo


bashfr.org(random);
<@remouk> youpi, une ampoule de sautée.
<@remouk> Comme vos mères.

Hors ligne

#3 Le 01/02/2010, à 01:15

Re : [bash] annuler un déplacement/renommage de fichier

bien vu sputnick wink


GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4

Hors ligne

Haut de page ↑