[[lien:bash:perso:utilitaires|retour]] ====== Voir ====== #!/bin/bash # ver pour voir ou modifier un fichier #utilisation de getopts les options avec - # si on a les couleurs on les utilise if [ -f $(dirname $0)/echo_couleur.sh ] then . echo_couleur.sh aff=cecho else aff=echo fi aide() { $aff " Les options de voir " $vert $aff "0) sans option affiche avec cat les fichiers de moins de 24 lignes" $bleu $aff " les fichiers de plus de 24 lignes sont affichés avec less " $bleu $aff "-h) affiche cette aide" $rouge $aff "-n nb) On peut changer le nombre de lignes; nb contient ce nombre" $jaune $aff "-c) force l'utilisation de cat" $cyan $aff "-l) force l'utilisation de less" $blanc $aff "-d) n'affiche pas les lignes de commentaires" $magenta $aff "-v) n'affiche pas les lignes vides " $bleu $aff " Les arguments de voir : il faut mettre un fichier " $vert $aff " Exemple voir -d -v voir " } message=$(echo " Il faut un argument, essayez : voir -h ") : ${1:?$message} while getopts ":hceldvn:" option do case $option in h) aide exit 0 ;; c) cmd=cat ;; e) cmd=vim ;; l) cmd=cat tube="$tube |less " ;; d) tube="$tube | sed -e '/^ *#[^!]/d' " ;; v) tube="$tube | sed -e '/^$/d' " ;; n) nb=$OPTARG ;; *) echo "l'option $1 n'existe pas" aide exit 0 ;; esac done shift $(($OPTIND -1)) if [ -z $cmd ] then max_lignes=${nb:=24} lignes=$(cat $1 |wc -l) cmd=cat if [ $lignes -gt $max_lignes ] then tube="$tube |less" fi fi eval "$cmd $1 $tube" echo "La commande était : $cmd $1 $tube" exit 0