Sommaire
- Pourquoi vos regex ne fonctionnent jamais - 7 août 2019
- Analyse concurrentielle express : Semrush et Power query - 27 mars 2017
- Structures d’Urls, Urls relatifs et Urls absolus - 23 février 2017
Windows, je l’aime vraiment désormais…
Quiconque a subi les déclinaisons de Windows 3.1 (ou avant) à Windows 10, ne peut être que satisfait d’avoir désormais un système stable sous lequel travailler, en tout cas depuis ses trois dernières moutures : 7, 8 et 10 (non vous n’aviez pas loupé la 9).
Néanmoins si il reste une chose que j’envie particulièrement aux Linuxiens (et donc aux macs qui sont sous base Unix), c’est leur console et leurs outils de traitement de données (et que pourtant trop peu d’utilisateurs de mac utilisent à mon goût). Si windows a su corriger le tir en proposant une nouvelle version de sa console, la Powershell, qui offre un large panel de possibilités, je l’ai personnellement découvert sur le tard, et ai donc totalement migré sur les outils gnu, qui sont ceux proposés à majorité sur les environnements unix.
Mais pourquoi donc installer/apprendre des commandes consoles gnu/unix?
Essentiellement pour 5 raisons :
- On peut traiter des volumes de données qui ne pourraient de toute manière pas rentrer dans Excel, Libre Office, Google Spreadsheet ou même dans un simple éditeur de texte
- Il n’y a pas d’interface graphique, donc pas de perte de temps et de mémoire dans la représentation graphique des données, donc beaucoup plus rapide
- A partir du moment où l’on sait réaliser des traitement élémentaires, il est très facile de grouper le tout dans des scripts et ainsi automatiser son travail ( le mot magique du SEO)
- Tous les autres outils en ligne de commande que vous trouverez s’interfaçerons très simplement avec ceux-ci
- Si vous administrez des sites, vous serez content de retrouver ces différentes commandes que vous aurez apprises et que vous saurez maîtriser
Dans cet article, je ne donnerai peu d’exemples d’utilisation des commandes, mais essentiellement la procédure d’installation sous Windows qui servira de référence pour les autres articles détaillant l’utilisation de ces outils.
Comme vous l’avez compris, si vous êtes sous Linux ou sous Mac… vous êtes déjà bien nés, donc ceci ne vous concerne pas.
Les principaux packages à installer
Ces packages sont ceux que j’utilise quotidiennement, ou tout du moins assez souvent pour les avoir sur ma machine en permanence.
Coreutils
le package de base, il contient la majorité des fonctions unix courantes pour le traitement de texte et beaucoup d’autres choses
Findutils
Contient en particulier la commande « find » qui vous permettra de rechercher des fichiers/dossiers par patterns sur votre ordinateur et d’effectuer des actions dessus
Grep
Un Must-Have : permet de filtrer des textes selon des patterns plus ou moins avancés. Très utiles notamment pour filtrer des mots clés, des urls, des logs et encore plein d’autres chose. C’est un de mes meilleurs amis, je pense qu’il sera bientôt le vôtre ( je ne suis pas jaloux)
Sed
Un outil qui permet de faire des suppressions/remplacement de patterns dans des lignes de texte. Personnellement j’ai détourné son utilisation pour faire de la catégorisation de keyword ou d’url… On verra bientôt comment
gawk
Gawk est une évolution de awk et permet de traiter des fichiers texte de type tabulaire en appliquant des conditions par colonne. En réalité c’est même un langage de scripting complet permettant une grande puissance de traitement pour qui a le courage de se plonger sans sa doc
wget
wget un utilitaire de téléchargement en ligne de commande… mais pas que ! Il permet, entre autres, de crawler et d’aspirer entièrement un site en convertissant les liens internes pour les faire pointer en local
C’est parti pour l’installation !
Téléchargement des packages
Commencez déjà par télécharger l’ensemble des packages :
Installation des packages
Logiquement, vous devriez pouvoir installer les packages dans n’importe quel ordre, mais j’ai l’habitude de commencer par coreutils. A noter que votre profil utilisateur doit avoir des droits d’admin sur la machine pour réaliser l’installation. Si cela n’est pas le cas, il faudra passer par votre administrateur système qui se fera une joie (ou pas) de le faire pour vous.
Double-cliquez simplement sur un package pour l’installer et suivez la procédure. Personnellement je n’ajoute pas les programmes dans le start menu, cela n’a pas de réelle utilité
A la fin de l’ensemble des installations, vous devriez avoir l’ensemble des programmes installés dans C:\Program Files (x86)\GnuWin32
Une documentation est également disponible pour la plupart des programmes au format html dans ce répertoire C:\Program Files (x86)\GnuWin32\man\html
Rendre les programmes exécutables de n’importe quel endroit de votre machine
Par défaut, lorsque vous appelez un programme en ligne de commande, Windows va chercher dans le répertoire courant s’il trouve ce programme et sinon chercher dans la variable PATH de l’environnement, les différents répertoires contenant des exécutables sur la machine.
Etant donné que l’on ne va pas s’amuser à copier nos exécutables à chaque fois dans le répertoire de travail qui nous intéresse, on va donc ajouter le répertoire des exécutables GNU à notre variable PATH sur la machine.
On a en général deux variables PATH sur la machine, le PATH système et le PATH utilisateur. En réalité les deux sont mergés, avec le PATH utilisateur qui est ajouté au PATH système. Bien que ceci semble de moindre importance, cela a un impact sur la résolution des conflits, lorsque deux programmes avec le même nom sont présents et déclarés dans le PATH : Windows exécutera le premier trouvé, en passant par le PATH système, puis le PATH utilisateur.
Certaines commandes GNU doublonnent des noms de programmes windows, comme find ou sort, et ainsi il faudra déclarer le répertoire des exécutables en PREMIER dans le PATH système pour que le programme GNU soit appelé prioritairement. Cela « peut » éventuellement générer des problèmes dans de rares cas, mais personnellement je n’en ai jamais eus. Si tel était le cas il vous faudra simplement déplacer le répertoire GNU dans la variable PATH ou simplement le supprimer temporairement.
Ajouter les exécutables GNU au PATH
Le répertoire à ajouter au PATH de windows est le suivant : C:\Program Files (x86)\GnuWin32\bin
Ici les captures d’écran sont données avec windows 10. Si vous avez une version antérieure, il y aura quelques différences mais vous devriez ne pas trop vous perdre.
Commencez par chercher « ordinateur » dans la barre de recherche du menu et trouvez l’icône « Ce PC »… sur les versions antérieures ce sera l’icône « ordinateur », puis clic-droit « Propriétés »
puis allez dans les « paramètres systèmes avancés
puis dans « variables d’environnement »
Normalement vous devriez vous retrouver avec un écran similaire au mien, dans lequel vous pourrez vois la variable PATH utilisateur et la variable PATH système. Sélectionnez la variable PATH système et cliquez sur modifier
C’est là ou vous devriez avoir la plus grande différence de présentation si vous êtes sur une version antérieure de Windows. Sur Windows 10, la variable est présentée comme un tableau, avec chaque élément sur une ligne. Sur les versions antérieures, il s’agit d’un champ texte, ou chaque répertoire est séparé par un point virgule « ; ».
Vous devrez donc éditer ce champ, en ajoutant C:\Program Files (x86)\GnuWin32\bin au tout début, suivi d’un « ; » –> C:\Program Files (x86)\GnuWin32\bin;
sur Windows 10, c’est un peu plus propre. Cliquez sur « Nouveau »
puis ajoutez C:\Program Files (x86)\GnuWin32\bin
et ensuite déplacez cette valeur en cliquant sur « Déplacer vers le haut » jusqu’à ce qu’elle se retrouve au dessus de la première ligne contenant « system32 » puis validez sur ok
Validez et fermez tout… normalement on est ok !
Tester que tout fonctionne correctement
Maintenant vient l’heure de tester la configuration. On va donc lancer la console depuis un répertoire.
Rendez vous dans un répertoire de votre PC contenant un fichier texte puis en maintenant la touche SHIFT, faites un clic doit sur un espace vide du dossier ( pas sur un fichier donc) et cliquez sur « ouvrir une fenêtre de commande ici »
Vous devriez vous retrouver à présent avec une belle console ouverte et au niveau de l’arborescence où vous aviez cliqué ( chez moi E:\clients)
Maintenant on peut tester deux-trois commandes de base. Supposons que votre fichier texte s’appelle monfichier.txt, testez les commandes suivantes ( sans les guillemets)
- « cat monfichier.txt » –> affichera l’ensemble du fichier dans la console
- « head monfichier.txt » –> affichera les 10 premières lignes
- « tail monfichier.txt » –> affichera les 10 dernières lignes du fichier
- « wc -l monfichier.txt » –> affichera le nombre de lignes du fichier
- « head -n 2 monfichier.txt » –> affichera les 2 premières lignes du fichier
- « tail -n 3 monfichier.txt » –> affichera les 3 dernières lignes du fichier
- « head -n 5 monfichier.txt > sortie.txt » –> créera le fichier sortie.txt et recopiera les 5 premières lignes de monfichier.txt dedans (sans afficher dans la console)
- « tail -n 4 monfichier.txt >> sortie.txt » –> ajoutera à la suite de sortie.txt les 4 dernières lignes de monfichier.txt (sans afficher dans la console)
- « head monfichier.txt | tail -n 2 » –> ici on prends les 10 premières lignes qu’on passe ensuite à la commande « tail » qui ne récupérera que les 2 dernières, on affiche donc les lignes 9 et 10
- « head monfichier.txt | tail -n 2 > sortie.txt » –> comme précédemment, mais on rediriger la sortie vers « sortie.txt », en l’écrasant
- « head monfichier.txt | tail -n 2 >> sortie.txt » –> presque pareil, sauf qu’on ajoute à sortie.txt, donc si vous avez tapé les commandes dans l’ordre, sortie.txt contient à présent deux fois les lignes 9 et 10
Si vous êtes arrivés jusque là et que tout fonctionne, félicitations ! Tout ceci peut paraître un peu obscur pour le moment, mais je rentrerai dans plusieurs tutos plus fonctionnels ensuite, et cette installation vous servira ainsi de référence. N’hésitez pas, en attendant, à parcourir les manuels présents, qui vous donneront au moins un aperçu de ce qu’il est possible de réaliser avec ces outils.
Merci pour le partage.
Pour ma part j’avais tendance à utiliser Cygwin sur mes machines windows.
Votre article ne m’a rien appris, parce que j’utilise Windows et Linux depuis pas mal d’années, mais il a le mérite d’être très clair. Je vais en conseiller la lecture à un certain nombre de personnes 🙂 !