# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 ##@cooked nocomments module: base.tools "Fonctions de base: outils divers" function: mkdirof 'Créer le répertoire correspondant au fichier $1' function mkdirof() { mkdir -p "$(dirname -- "$1")" } function __la_cmd() { [ $# -gt 0 ] || set '*' local arg local cmd="/bin/ls -1d" for arg in "$@"; do arg="$(qwc "$arg")" cmd="$cmd $arg" done cmd="$cmd 2>/dev/null" echo "$cmd" } function: ls_all 'Lister les fichiers ou répertoires du répertoire $1, un par ligne Les répertoires . et .. sont enlevés de la liste $1=un répertoire dont le contenu doit être listé $2..@=un ensemble de patterns pour le listage Seuls les noms des fichiers sont listés. Utiliser l'\''option -p pour inclure les chemins' function ls_all() { local withp f b if [ "$1" == -p ]; then withp=1; shift; fi b="${1:-.}"; shift ( cd "$b" || exit eval "$(__la_cmd "$@")" | while read f; do [ "$f" == "." -o "$f" == ".." ] && continue recho "${withp:+$b/}$f" done ) } function: ls_files 'Lister les fichiers du répertoire $1, un par ligne $1=un répertoire dont le contenu doit être listé. $2..@=un ensemble de patterns pour le listage Seuls les noms des fichiers sont listés. Utiliser l'\''option -p pour inclure les chemins' function ls_files() { local withp f b if [ "$1" == -p ]; then withp=1; shift; fi b="${1:-.}"; shift ( cd "$b" || exit eval "$(__la_cmd "$@")" | while read f; do [ -f "$f" ] && recho "${withp:+$b/}$f" done ) } function: ls_dirs 'Lister les répertoires du répertoire $1, un par ligne Les répertoires . et .. sont enlevés de la liste $1=un répertoire dont le contenu doit être listé. $2..@=un ensemble de patterns pour le listage Seuls les noms des répertoires sont listés. Utiliser l'\''option -p pour inclure les chemins' function ls_dirs() { local withp f b if [ "$1" == -p ]; then withp=1; shift; fi b="${1:-.}"; shift ( cd "$b" || exit eval "$(__la_cmd "$@")" | while read f; do [ "$f" == "." -o "$f" == ".." ] && continue [ -d "$f" ] && recho "${withp:+$b/}$f" done ) } function: quietgrep "tester la présence d'un pattern dans un fichier en mode silencieux" function quietgrep() { grep -q "$@" 2>/dev/null; } function: testsame "tester si deux fichiers sont identiques en mode silencieux" function testsame() { diff -q "$@" >&/dev/null; } function: testdiff "tester si deux fichiers sont différents en mode silencieux" function testdiff() { ! diff -q "$@" >&/dev/null; } function: should_update "faut-il mettre à jour le \$1 qui est construit à partir de \$2..@" function should_update() { local dest="$1"; shift local source for source in "$@"; do [ -f "$source" ] || continue [ "$source" -nt "$dest" ] && return 0 done return 1 }