Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

#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


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

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