Contenu | Rechercher | Menus

Annonce

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".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

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

nesthib

[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 Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

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

sputnick

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);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

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

nesthib

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

bien vu sputnick wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

Haut de page ↑