Voici une description détaillée de ce que fait cette ligne :
@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -n 's/^\(.*\):.*##\s*\(.*\)/\1:\2/p' | awk -F: '{ gsub(/^[ \t]+/, "", $$2); printf " $(GREEN)%-10s$(NC) %s\n", $$1, $$2 }'-
fgrep -h "##" $(MAKEFILE_LIST):fgrep: Recherche des chaînes fixes (plus rapide quegreppour des chaînes simples).-h: N'affiche pas les noms des fichiers où les chaînes sont trouvées (utile lors de la recherche dans plusieurs fichiers)."##": La chaîne à rechercher.$(MAKEFILE_LIST): Une variable interne demakequi contient le nom duMakefileen cours d'exécution (et tout autre fichier inclus).
-
fgrep -v fgrep: Filtre pour éliminer les lignes contenant le motfgreppour éviter les faux positifs. Utile surtout si cette ligne est dans le Makefile et que vous recherchez les commentaires "##". -
sed -e 's/\\$$//': Supprime les fins de ligne d'échappement (comme\\) qui pourraient être présentes. -
sed -n 's/^\(.*\):.*##\s*\(.*\)/\1:\2/p': Capture les règles et leurs descriptions :^\(.*\):: Capture tout avant le:..*##\s*: Capture et ignore tout entre le:et le##ainsi que les espaces après le##.\1:\2: Récupère et reformate les règles et leurs descriptions pour avoirrule:description.
-
awk -F: '{ gsub(/^[ \t]+/, "", $$2); printf " $(GREEN)%-10s$(NC) %s\n", $$1, $$2 }': Formate et colore la sortie :-F:: Définit le caractère:comme séparateur de champs pourawk.gsub(/^[ \t]+/, "", $$2): Supprime les espaces au début des descriptions.printf " $(GREEN)%-10s$(NC) %s\n", $$1, $$2: Affiche les règles en vert (ou une autre couleur de votre choix) et les aligne, puis affiche la description.