102 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| # -*- 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
 | |
| }
 |