Outils pour utilisateurs

Outils du site


linux:memo_bash

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
linux:memo_bash [10/09/2020 09:58] – [Memo BASH] daniellinux:memo_bash [28/08/2025 09:25] (Version actuelle) – [Commandes] daniel
Ligne 212: Ligne 212:
 Cf http://ss64.com/bash/ pour une liste de commandes bash et programmes gnu Cf http://ss64.com/bash/ pour une liste de commandes bash et programmes gnu
  
 +==== find / grep / awk ====
 +
 +Un exemple pour virer tous les ''?>'' à la fin d'un fichier php qui ne seraient pas précédés de ''<?='' sur la même ligne (attention quand même à bien contrôler les modifs faites avant de faire son commit)
 +
 +<code shell>
 +find . -type f -name '*.php' -exec perl -0777 -i -pe '
 +  if ( m{([^\n]*?)\?>\s*\z} ) {
 +    unless ( $1 =~ /<\?=/ ) { # si on a pas de "<?=" sur la ligne matchée
 +      s/\s*\?>\s*\z/\n/;      # remplace le "?>" (avec d'éventuels blancs avant) et tout ce qui suit par un \n
 +    }
 +  }
 +' {} +
 +</code>
 +
 +Pour lister toutes les fins de fichiers php qui contiendrait un ?> (même avec un ''<?='' devant)
 +  grep -rPlz '\?>[[:space:]]*\Z' --include='*.php' . | tr '\0' '\n'
 +
 +Pour virer les espaces (ou caractères BOM) qui précèderaient un ''<?php'' en début de fichier
 +
 +  grep -rPlz '\A(?:\xEF\xBB\xBF)?[[:space:]]+<\?php' --include='*.php' . \\
 +    | tr '\0' '\n' \\
 +    | xargs -r perl -0777 -pi -e 's/\A(?:\xEF\xBB\xBF)?[[:space:]]+(<\?php)/$1/s'
 +
 +  * ''-0777'' le -0xx fixe le séparateur d'enregistrement, c'est ''\n'' par défaut et ce ''-0777'' le met à ''undef'' ce qui passe perl en "slurp mode" (tout le fichier vu comme une seule ligne). Ça permet ici que le ''\z'' match la fin du fichier (et pas une fin de ligne)
 +  * -P pour grep c'est passer en perl regexp (pour avoir les ancres ''\A'' et ''\Z'' de début et fin de fichier, permettrait aussi le ''\s'' mais le ''[[:space:]]'' est préférable en utf8 et fonctionne aussi sans ''-P'')
 +  * -z affiche ''\0'' après chaque nom de fichier plutôt que \n (pour être sûr d'avoir bien un fichier par ligne sur la sortie après le tr)
 ==== vrac ==== ==== vrac ====
  
linux/memo_bash.txt · Dernière modification : 28/08/2025 09:25 de daniel