CYGWIN
Sommaire :
Généralités :
Cygwin est un projet dont le but est de faire tourner sous MS Windows les programmes Unix. C’est avant tout un portage sous Windows du compilateur GCC. De ce fait on dispose de la plupart des commandes shell classiques dans une "fenêtre DOS".
Cygwin a plus d’un attrait ; entre autres :
- Disposer d’un compilateur C/C++ pour Windows (cf infra l’option -mno-cygwin).
- Pouvoir tester simultanément un traîtement en invite de commande pour Windows et un script shell pour exécution sous Linux et Unix.
- Utiliser la formidable bibliothèque des outils libres GNU. Voir ci-dessous les exemples d’utilisation.
Installation :
Site de Cygwin : http://www.cygwin.com. On télécharge un programme setup.exe qu’on lance ensuite pour choisir le mode d’installation : installation directe des packages depuis le site de Cygwin, ou récupération préalable. Dans ce dernier cas, on procèdera ensuite à l’installation depuis les packages téléchargés (option "…from Local Directory").
On peut commencer par une installation minimale (groupe de packages BASE et SHELLS), qu’on accroîtra au fil des besoins. Si des packages supplémentaires doivent être installés pour cause de dépendance, le programme de setup les détectera et les incluera automatiquement.
On disposera alors d’un raccourci sur le "bureau" pour ouvrir un fenêtre "shell" mais cette ouverture n’est même pas indispensable, il suffit d’avoir "l’invite de commande" DOS et d’avoir fait quelques aménagements. Cygwin étant supposé installé dans c:\cygwin :
- Ouvrir une session donnant les droits d’administrateur
- Modifications dans les variables d’environnement : sous Windows 98, adapter le fichier autoexec.bat ; sous Windows 2000 ou NT : Démarrer > Paramètres > Panneau de configuration > Système > Avancé > Variables d’environnement
- Ajouter une variable système dont le nom est CYGWIN et la valeur ntsec tty
- Ajouter à la fin de la variable PATH la valeur " ;c:\cygwin\bin "
- Appliquer immédiatement cet ajout : set PATH=%PATH%;c:\cygwin\bin
- Les commandes UNIX peuvent maitenant être lancées directement !
Administration :
adduser n’est pas supporté, il faut utiliser la gestion d’utilisateur de Windows. Lancer /etc/group et /etc/passwd pour créer les groupes et psw.
Accès aux unités windows dans le Shell Unix : voir sous /cygdrive, par exemple cd /cygdrive/c puis ls -l liste les dossiers du volume C:\
Programmation :
- Compilation c
- gcc -c nom_programme.c crée un nom_programme.o
- gcc -o nom_programme nom_programme.o crée un nom_programme.exe
- Compilation c pour exécution sous Windows sans Cygwin
- gcc -c -mno-cygwin nom_programme.c
- gcc -o nom_programme -mno-cygwin nom_programme.o
- Commande de vérification de portabilité
- objdump -p nom_programme.exe | grep "DLL Name"
- Compilation c++
- c++ -c nom_programme.cpp
- c++ -o nom_programme nom_programme.o
Erreur à l’exécution "EOF in Backquote substitution" : on a lancé le premier module .o (compilé mais pas lié).
Exemples d’utilisation
Avec Cygwin, les classiques et surpuissantes commandes bash deviennent accessibles sous le très répandu système Windows. Voir aussi notre page http://www.dg77.net/tekno/manuel/utilit.htm
Dans certains exemples, on utilise une valeur d’environnement pour indiquer le chemin d’accès aux fonctions de Cygwin ; par exemple : set CYGW=C:\cygwin\bin\. Le but est d’utiliser Cygwin et non pas la commande « DOS » qui porte le même nom.
- Somme de contrôle (checksum)
- openssl md5 [fichier] > [sortie.txt]
- Résultat (exemple) : MD5(fichier.txt)= 54fff2e624298228e0717ea239538202
- Horodatage
- %CYGW%date
- Résultat (exemple) : Mon Aug 7 12:41:22 2008
- %CYGW%date --rfc
- Résultat (exemple) : Mon, 07 Aug 2008 12:51:04 +0100
- Tri et élimination de doublons dans un fichier texte.
:: D'abord transformer backslash/antislash en slash : set TRAV=%TMP% set TRAV=%TRAV:\=/% %CYGW%sort -u %TRAV%listfic.txt > %TRAV%sortie.txt
- Liaisons cryptées par SSH
- Voir la page ad-hoc. [http://www.dg77.net/tekno/securite/sshwin32.htm].
- Récupération de l’adresse internet, puis affichage et sortie avec horodatage dans un fichier log quelconque :
CURL -s ifconfig.me/ip > intip.txt SET /p INTIP=<intip.txt ECHO %INTIP% ECHO Adresse internet le %DATE% à %TIME% : %INTIP% >> d:\save\var\log\rasplog.txt