doinplace fonctionne comme la fonction. la version étendue est un lien nommé doinplacex
This commit is contained in:
parent
d6540ac596
commit
d661e439cb
38
doinplace
38
doinplace
|
@ -1,5 +1,16 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
TOOLS=(doinplacef doinplacex)
|
||||||
|
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
||||||
|
# créer les liens
|
||||||
|
scriptname="$(basename "$0")"
|
||||||
|
for tool in "${TOOLS[@]}"; do
|
||||||
|
ln -s "$scriptname" "$tool"
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire base
|
urequire base
|
||||||
|
|
||||||
|
@ -7,11 +18,10 @@ function display_help() {
|
||||||
uecho "$scriptname: filtrer en place un fichier à travers une suite de commandes
|
uecho "$scriptname: filtrer en place un fichier à travers une suite de commandes
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
$scriptname FILE COMMANDS...
|
$scriptname FILE COMMAND [ARGS...]
|
||||||
|
|
||||||
Une ou plusieurs commandes peuvent être spécifiées, séparées par //
|
Si on utilise une commande avec des options, penser à utliser '--' pour séparer
|
||||||
Si on utilise des commandes avec des options, penser à utliser '--' pour séparer
|
les options de ce script des options de la commande
|
||||||
les options de ce script des options des commandes
|
|
||||||
|
|
||||||
En plus des commandes systèmes, il est possible d'utiliser toute fonction de
|
En plus des commandes systèmes, il est possible d'utiliser toute fonction de
|
||||||
nutools qui effectue des traitement sur un flux comme stripnl, filter_empty,
|
nutools qui effectue des traitement sur un flux comme stripnl, filter_empty,
|
||||||
|
@ -19,11 +29,17 @@ merge_contlines, filter_comment, filter_conf, etc. Les fonctions nl2lf, nl2crlf,
|
||||||
nl2cr, latin1compat et noaccents sont aussi disponibles par convenance.
|
nl2cr, latin1compat et noaccents sont aussi disponibles par convenance.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
|
-p, --evalp
|
||||||
|
Evaluer la commande avec evalp(), ce qui permet de chainer plusieurs
|
||||||
|
commandes en les séparant par //. Cette option est automatiquement
|
||||||
|
activée si ce script est lancé avec le nom doinplacex
|
||||||
-g, --ignore-error, --replace-always
|
-g, --ignore-error, --replace-always
|
||||||
Normalement, le fichier n'est pas remplacé si la commande retourne une
|
Normalement, le fichier n'est pas remplacé si la commande retourne une
|
||||||
erreur. Avec cette option, le fichier est remplacé quel que soit le code
|
erreur. Avec cette option, le fichier est remplacé quel que soit le code
|
||||||
de retour de la commande. A utiliser par exemple avec des commandes
|
de retour de la commande. A utiliser par exemple avec des commandes
|
||||||
comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif."
|
comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif.
|
||||||
|
Cette option est automatiquement activée si ce script est lancé avec le
|
||||||
|
nom doinplacef"
|
||||||
}
|
}
|
||||||
|
|
||||||
function nl2lf() { _nl2lf; }
|
function nl2lf() { _nl2lf; }
|
||||||
|
@ -32,17 +48,27 @@ function nl2cr() { _nl2cr; }
|
||||||
function latin1compat() { _latin1compat; }
|
function latin1compat() { _latin1compat; }
|
||||||
function noaccents() { _noaccents; }
|
function noaccents() { _noaccents; }
|
||||||
|
|
||||||
replace=
|
[ "$scriptname" == doinplacex ] && evalp=1 || evalp=
|
||||||
|
[ "$scriptname" == doinplacef ] && replace=1 || replace=
|
||||||
args=(
|
args=(
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
|
-p,--evalp evalp=1
|
||||||
-g,--ignore-error,--replace-always replace=1
|
-g,--ignore-error,--replace-always replace=1
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
file="$1"; shift
|
file="$1"; shift
|
||||||
|
if [ -n "$evalp" ]; then
|
||||||
if [ -n "$replace" ]; then
|
if [ -n "$replace" ]; then
|
||||||
doinplacef "$file" evalp "$@"
|
doinplacef "$file" evalp "$@"
|
||||||
else
|
else
|
||||||
doinplace "$file" evalp "$@"
|
doinplace "$file" evalp "$@"
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
if [ -n "$replace" ]; then
|
||||||
|
doinplacef "$file" "$@"
|
||||||
|
else
|
||||||
|
doinplace "$file" "$@"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
exit $?
|
exit $?
|
||||||
|
|
|
@ -32,6 +32,7 @@ done
|
||||||
./uawk --nutools-makelinks
|
./uawk --nutools-makelinks
|
||||||
./udist --nutools-makelinks
|
./udist --nutools-makelinks
|
||||||
./ulink --nutools-makelinks
|
./ulink --nutools-makelinks
|
||||||
|
./doinplace --nutools-makelinks
|
||||||
|
|
||||||
# complétion programmable
|
# complétion programmable
|
||||||
rm -f ~/etc/bashrc.d/bash_completion.nutools # renommé
|
rm -f ~/etc/bashrc.d/bash_completion.nutools # renommé
|
||||||
|
|
Loading…
Reference in New Issue