Fonctions personnelles
mercredi 18 mai 2011
par
Le fichier « /.bash_functions »
Les fonctions présentent 2 caractéristiques importantes :
- Contrairement à un alias, une fonction permet l’utilisation de variables, donc des arguments ailleurs qu’à la fin.
- Contrairement à un script, une fonction n’ouvre pas un nouveau processus shell
Appel
Il est appelé de la même façon que mon fichier /.bash_aliases, par /.bash_rc qui contient les lignes suivantes :
# Définitions de fonctions
# Contrairement aux alias, laes fonctions prennent des variables en argument
if [ -f ~/.bash_functions ]; then
. ~/.bash_functions
fiContenu
function TrouverCommande () {
### Afficher la commande ( responsable d'un processus ) qui occupe un fichier spécial
if [ ! -z $1 ] ; then
if [ -c $1 ] ; then
DEV=$1
#---# echo "DEBUG: avec paramètre en ligne:"
echo "Le fichier spécial $DEV est occupé par la commande: "
echo -en '\033[47;34m'
ps -p $(fuser -v "$DEV" 2>&1 | egrep "$DEV" | awk '{print $3}') -o command=
echo -en '\033[0m'
else
echo "$1 n'est pas un fichier spécial"
exit 1
fi
else
# Fichier spécial son par défaut
#^#---# echo "DEBUG: paramètre par défaut:"
DEV='/dev/snd/pcmC0D0p'
if [ -a "$DEV" ] ; then
echo "Le fichier spécial "$DEV" est occupé par la commande: "
echo -en '\033[47;34m'
ps -p $(fuser -v "$DEV" 2>&1 | egrep "$DEV" | awk '{print $3}') -o command=
echo -en '\033[0m'
else
( echo " syntaxe: TrouverCommande 'fichier_special' (ex: 'TrouverCommande /dev/snd/pcmC0D0p' ) " ; exit )
fi
fi
}
### Mesure le total de la taille d'une liste de fichiers avec find (motif unique pour name)
# Cette fonction calcule le total apparent avec find "printf %s" , comme ls et ne tient pas compte de l'occupation des blocks
# Pour connaître l'occupation réelle, il faudrait utiliser "printf %b" * 512
function OccupationFichiers {
### Syntaxe: OccupationFichiers 'motif' ou: OccupationFichiers "motif" -Guillemets ou Apostrophes obligatoires.
### $2 doit être i ou -i ( faire iname au lieu de name ) [ ou -l ou -whole etc..]
opt=${2#[-]}
#---# echo "DEBUG $opt"
find ./ -${opt}name "$1" -printf "%s %p \n" | awk 'BEGIN {s=0; n=0} ; { s=s+$1; n=n+1 ;print "+ " $1 " \t =" s "\t" $2 }; END {print "TOTAL:\t" n " fichiers pour " s/1000 " Ko, " s/1000000 " Mo" }'
}
### Mesure le total de la taille d'une liste de fichiers avec find (motif unique pour name)
# Cette fonction calcule le total apparent avec find "printf %s" , comme ls et ne tient pas compte de l'occupation des blocks
# Pour connaître l'occupation réelle, il faudrait utiliser "printf %b" * 512
function OccupationFichiers+ {
### Syntaxe: OccupationFichiers 'motif' ou: OccupationFichiers "motif" -Guillemets ou Apostrophes obligatoires.
### $2 doit être i ou -i ( faire iname au lieu de name ) [ ou -l ou -whole etc..]
if [[ $# < 1 ]]
then
echo "Il manque au moins un argument pour find ./ -name "
else
opt=${2#[-]}
#---# echo "DEBUG $opt"
#---# echo "DEBUG $# "
if [[ $# < 3 ]]
then
#---# echo "DEBUG 1 ou 2 arguments = liste complete"
## 1 ou 2 argument = liste complete
find ./ -${opt}name "$1" -printf "%s %p \n" | awk 'BEGIN {s=0; n=0} ; { s=s+$1; n=n+1 ;print "+ " $1 " \t =" s "\t" $2 }; END {print "TOTAL:\t" n " fichiers pour " s/1000 " Ko, " s/1000000 " Mo" }'
elif [[ $3 == "-q" ]]
then
#---# echo "DEBUG: Totaux seulement"
## 3e argument -q = totaux seulement
find ./ -${opt}name "$1" -printf "%s %p \n" | awk 'BEGIN {s=0; n=0} ; { s=s+$1; n=n+1 ;}; END {print "TOTAL:\t" n " fichiers pour " s/1000 " Ko, " s/1000000 " Mo" }';
fi
fi
}
function OccupationFichiersBlocks {
### Syntaxe: OccupationFichiers 'motif' ou: OccupationFichiers "motif" -Guillemets ou Apostrophes obligatoires.
opt=${2#[-]}
#---# echo "DEBUG $opt"
find ./ -${opt}name "$1" -printf "%b %p \n" | awk 'BEGIN {s=0; n=0} ; { s=s+$1; n=n+1 ;print "+ " $1 " \t =" s "\t" $2 }; END {print "TOTAL:\t" n " fichiers pour " s " Blocks, soit: " s*512/1000 " Ko, " s*512/1000000 " Mo" }'
}
function OccupationSystem {
### Occupation physique du système (pas des données /home, ni de /tmp en memoire (tmpfs)
df | egrep -v '/home|tmpfs|media|^/dev/mapper/|^Sys|^udev\s' | awk 'BEGIN {b=0} {a=NF-4 ; b=b+$a ; print $NF "\t" $a/1000 " Mo" } END { print "TOTAL: " b " Ko, " b/1000 " Mo, " b/1000000 " Go"}'
}
################################### FIN DES FONCTIONS #####################################
# Fonction AideFonctions à compléter
function AideFonctions {
echo -en '\033[47;34m'
echo -n 'TrouverCommande'
echo -en '\033[0m'
echo ' ### Afficher la commande ( responsable d un processus ) qui occupe un fichier spécial'
echo ' # Syntaxe: TrouverCommande [Fichier spécial] - par défaut: fichier son /dev/snd/pcmC0D0p - '
echo -en '\033[47;34m'
echo -n 'OccupationFichiers'
echo -en '\033[0m'
echo " ### Taille apparente avec total d'une liste de fichiers avec find (motif unique pour name, option 'i' ou '-i' pour iname)"
echo ' # Syntaxe: OccupationFichiers ' "'motif' [[-]i]" ' ou: OccupationFichiers "motif" [[-]i] - Guillemets ou Apostrophes obligatoires - '
echo -en '\033[47;34m'
echo -n 'OccupationFichiers+'
echo -en '\033[0m'
echo " ### Taille totale apparente d'une liste de fichiers avec find (motif unique pour name, option 'i' ou '-i' pour iname)"
echo ' # Syntaxe: OccupationFichiers ' "'motif' [[-]i]" ' ou: OccupationFichiers "motif" [[-]i] - Guillemets ou Apostrophes obligatoires - '
echo -en '\033[47;34m'
echo -n 'OccupationFichiersBlocks'
echo -en '\033[0m'
echo " ### Taille totale par blocs d'une liste de fichiers avec find (motif unique pour name, option 'i' ou '-i' pour iname)"
echo ' # Syntaxe: OccupationFichiers ' "'motif' [[-]i]" ' ou: OccupationFichiers "motif" [[-]i] - Guillemets ou Apostrophes obligatoires - '
echo -en '\033[47;34m'
echo -n 'OccupationSystem
echo -en '\033[0m'
echo ' ### Occupation physique du système (pas des données /home, ni de /tmp en memoire (tmpfs)'
echo ' # Syntaxe
##### Modèle à copier pour créer l'aide d'une fonction:
#echo -en '\033[47;34m'
#echo -n 'nom de la fonction'
#echo -en '\033[0m'
#echo ' ### Définition'
#echo ' # Syntaxe
#####
}
################################### FIN DES FONCTIONS #####################################
echo 'Fonctions de ~/.bash_function activées (faire AideFonctions) 'Son utilisation la plus simple est la mise à disposition de ligne de commande un peu compliquée ou longue à reconstituer.
webmaster
Articles de cet auteur
Accueil du site |
Contact |
Plan du site
| Se connecter |
Statistiques du site |
Visiteurs :
22 /
13140
fr
GNU, LINUX, BSD, LL
AIDES GNU/LINUX
BASH
?
