Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

Si vous avez des soucis pour rester connecté, déconnectez vous et reconnectez vous depuis ce lien en cochant le case
Me connecter automatiquement lors de mes prochaines visites.

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#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