#!/usr/bin/env zsh function samelineprint { print -n -P -- "\r$*" } # avec 1 essai par seconde: 300 = 5 minutes maxessais=300 # try to create a directory until success function trymkdir { target="$1" print -- mkdir -p $target local essai=1 while ! mkdir -p $target; do samelineprint "Echec: essai n°$essai" ((essai++)) ((essai>maxessais)) && exit 5 done print } # try to copy until success function trycp { element="$1" target="$2" if [[ ! -d ${target:h} ]]; then trymkdir ${target:h} fi local essai=1 print -- cp $element $target while ! \cp $element $target; do samelineprint "Echec: essai n°$essai" ((essai++)) ((essai>maxessais)) && exit 5 done print } # try to remove until success function tryrm { target="$1" local essai=1 local options='' [[ -d $target ]] && options='-rf' print -- rm $options $target while ! rm $options $target; do samelineprint "Echec: essai n°$essai" ((essai++)) ((essai>maxessais)) && exit 5 done essai=1 while [[ -e $element ]]; do samelineprint "rm reussi mais fichier source non disparu n°$essai" sleep 1 ((essai++)) ((essai>maxessais)) && exit 5 done print } # try to rename until success function tryrename { element="$1" target="$2" local essai=1 while [[ -e $target ]]; do samelineprint "Echec n°$essai le fichier $target existe déjà" ((essai++)) ((essai>maxessais)) && exit 5 sleep 1 done print -- mv $element $target while ! mv $element $target; do samelineprint "Echec: essai n°$essai" ((essai++)) ((essai>maxessais)) && exit 4 done essai=1 while [[ -e $element ]]; do samelineprint "mv reussi mais fichier source non disparu n°$essai" sleep 1 ((essai++)) ((essai>maxessais)) && exit 5 done print } # try to move until success function trymv { element="$1" target="$2" local essai=1 print -- mv $element $target while ! mv $element $target; do samelineprint "Echec: essai n°$essai" ((essai++)) ((essai>maxessais)) && exit 5 done essai=1 while [[ -e $element ]]; do samelineprint "mv reussi mais fichier source non disparu n°$essai" sleep 1 ((essai++)) ((essai>maxessais)) && exit 5 done print }