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
|
|
}
|