26 avril 2022

Modèle d'entête de script sous Linux avec Vim

Voici un moyen simple de proposer un en-tête personnalisé pour les scripts shell nouvellement créés dans l'éditeur Vi (Vim sous Linux). 

1) Rédiger le modèle, le déposer dans le $HOME : par exemple

vi $HOME/.vim/sh_header.temp
#!/usr/bin/env ksh
#-------------------------------------------------------------------------------
#@(#) Write a title for this script shell here
#-------------------------------------------------------------------------------
#@(#) Syntax  :  ... {SIMUL*|EXEC} PARAM2 [PARAM3]
#@(#) {A*|B} choice, * defaut, X mandatory, [Y] optional
#@(#)    - PARAM1       : Execution mode (SIMUL defaut)
#@(#)    - PARAM2       : Parametre 2 (mandatory)
#@(#) - PARAM3 : Parametre 3 (optional)
#@(#) #@(#) Example : ksh ... #------------------------------------------------------------------------------- # Updates : # Date Author Feature details, issue fixed # 01/01/20.. John DOE Initialization #------------------------------------------------------------------------------- # Trace mode : export Trace=${Trace:-false} # export "Trace=true" to activate Unix traces # -------------------- CONSTANTS --------------------
#  --------------------       FUNCTIONS        --------------------

function check_parameters {
   ${Trace:-false} && set -x

   echo "<I> Checking parameters"

   case "${PARAM1}" in
   (SIMUL)  : ;;
   (EXEC)   : ;;
   (*)      echo "<W> Parameter 1 invalid (SIMUL, EXEC)"; return 1 ;;
   esac

   # ...

   return 0
}

function just_do_it {
   ${Trace:-false} && set -x

   echo "<I> just do it"

   # ...

   return 0
}

#  --------------------          MAIN          --------------------

function main {
   ${Trace:-false} && set -x
   echo "<I> PARAM1=${PARAM1}"
   echo "<I> PARAM2=${PARAM2}"
echo "<I> PARAM3=${PARAM3}"
check_parameters || return 1 just_do_it || return 1 return 0 } # -------------------- PARAMETRES -------------------- PARAM1=${1:-SIMUL} PARAM2=${2:?Parameter 2 not set !} PARAM3=${3:-DEFAULT} # -------------------- EXECUTION -------------------- LOGFILE="${LOG}/$(basename $0 .sh).$(date +'%Y-%m-%d-%H.%M.%S').log" echo "<I> Logfile is : ${LOGFILE}" RETFILE=${TMP}/returnCode.$$ { rm -f "${RETFILE}"; main; echo $? > "${RETFILE}"; } | tee "${LOGFILE}" RETCODE=$(cat "${RETFILE}") echo "<I> Return code : ${RETCODE:-255}" rm -f ${TMP}/*.$$ ${TMP}/$$.* ${TMP}/*.$$.* exit ${RETCODE:-255}

2) Ajouter dans le fichier de configuration de Vim une ligne pour votre "autocommande" :

vi $HOME/.vimrc
autocmd bufnewfile *.sh,*.ksh 0r $HOME/.vim/sh_header.temp

C'est à dire :

  • En cas de nouveau fichier
  • Dont le nom est *.sh ou *.ksh
  • Lire et ajouter en ligne 0 le contenu de sh_header.temp

3) L'opération est à répéter sur chacun des environnements de développement


Dès lors, si vous ouvrez sous Linux avec Vi / Vim un nouveau fichier suffixé par ".sh" ou ".ksh" ce fichier sera initialisé avec votre l'entête.


Merci à www.tecmint.com

Plus d'informations sur vimdoc.sourceforge.net

Aucun commentaire:

Enregistrer un commentaire