#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 function display_help() { uecho "$scriptname: déplacer, supprimer, copier un fichier ou un lien Quand on déplace ou qu'on copie un lien, la destination du lien est mise à jour USAGE $scriptname mv files... dest $scriptname cp files... dest $scriptname rm files... OPTIONS -d UPDATEDIR Chercher dans UPDATEDIR tous les liens qui pointent vers le fichier concerné, et mettre à jour ces liens après avoir déplacé le fichier, ou supprimer ces liens si le fichier est supprimé." } SCRIPT_ALIASES=(#alias:command umove:move udelete:delete ucopy:copy ) CMD_ALIASES=( mv:move rm:delete remove:delete del:delete cp:copy ) DEFAULT_CMD=move if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then # créer les liens scriptname="$(basename "$0")" for alias in "${SCRIPT_ALIASES[@]}"; do alias="${alias%:*}" ln -s "$scriptname" "$alias" done exit 0 fi source "$(dirname -- "$0")/lib/ulib/auto" || exit 1 # Traduire le nom du script for script_alias in "${SCRIPT_ALIASES[@]}"; do splitpair "$script_alias" src dest if [ "$scriptname" == "$src" ]; then eval "set -- $dest \"\$@\"" scriptname=ulink break fi done args=(--help '$exit_with display_help' -d:,--updatedir: .) parse_args "$@"; set -- "${args[@]}" # Traduire la commande [ -n "$*" ] || set -- "$DEFAULT_CMD" cmd= found_cmd= while [ -z "$found_cmd" ]; do cmd="$1"; shift; found_cmd=1 [ -n "$cmd" ] || break for cmd_alias in "${CMD_ALIASES[@]}"; do splitpair "$cmd_alias" src dest if [ "$cmd" == "$src" ]; then eval "set -- $dest \"\$@\"" found_cmd= break fi done done case "$cmd" in "") exit_with display_help;; move) base_umove ${updatedir:+-d "$updatedir"} "$@";; delete) base_udelete ${updatedir:+-d "$updatedir"} "$@";; copy) base_ucopy "$@";; *) die "$cmd: commande incorrecte";; esac