Valid XHTML     Valid CSS2    

Cours CMI / L2 - séance 1

 

Résumé de la séance 1

On y apprend ce qu'est le système d'exploitation Linux avec ses principales commandes, comment accéder à MySQL et comment transférer des fichiers dont des fichiers de commandes MySQL pour assurer l'import et l'export de bases et de tables de données. La production de fichiers Excel sera également abordée.

 

1. Le système d'exploitation Linux

          non su

Linux est un système d'exploitation comme Windows ou Mac OS. Son but est de gérer l'ensemble des ressources matérielles (écran, clavier, mémoire, disque dur...) et logicielles (traitements de textes, tableurs, navigateurs, explorateurs de fichiers, jeux...).

Ce qui caractérise Linux est sa gratuité, la disponibilité de ses sources et son très grand nombre de développeurs et d'utilisateurs. De plus c'est un système complet prévu pour plusieurs utilisateurs et capable d'être serveur de nombreuses applications à distance (serveur Web, connexion utilisateurs, messagerie, serveur de fichiers distants...).

Si historiquement Linux s'utilisait en ligne de commandes via une console, Linux dispose aujourd'hui d'interfaces logicielles et de menus tout à fait comparables à ceux disponibles sur les ordinateurs Windows et Mac Intosh. Les menus et interfaces sont incomparables lorsqu'il s'agit de découvrir les possibilités d'un logiciel mais ils ont deux gros défauts : ils s'utilisent via le clavier et la souris (ce qui les rend difficilement automatisables) et ils sont visuels (ce qui fait qu'en général ils ne produisent aucun fichier de résultat pour conserver une trace de ce qui a été fait). De plus ils ne permettent pas toujours simplement de résoudre des problèmes simples, comme par exemple trouver les cinq derniers fichiers .txt écrits dans un répertoire donné. C'est pourquoi il est d'usage d'apprendre à utiliser la ligne de commandes sous Linux, réalisant ainsi une espèce de tchat avec le système d'exploitation.

Pour mémoire, la connexion au serveur forge se fait en local à la faculté des sciences d'Angers par


     ssh -YC VOTRE_LOGIN_ICI@forge.info-ua
     

Par contre, à l'extérieur du département informatique, la connexion au serveur forge doit se faire avec la commande


     ssh -YC VOTRE_LOGIN_ICI@forge.info.univ-angers.fr
     

Si vous utilisez Windows, vous pouvez vous connecter au serveur forge à l'aide du logiciel putty qui est gratuit et téléchargeable à l'adresse officielle latest putty ou sur le site français putty 01.net.

          non su

          non su

Héritier des systèmes Unix les commandes de Linux peuvent être simples, comme cp pour copier des fichiers, ou excessivement techniques lorsqu'on les enchaine, comme par exemple la commande


      ls -al | sort -n -r -k 5 -k 9 | head -n 20
     

Il est donc conseillé de commencer en douceur avec les principales commandes Unix dont les 20 commandes usuelles listées ici avant d'essayer de maitriser les commandes de base pour ensuite connaitre les 101 commandes indispensables sous Linux.

Il restera enfin à pratiquer, pratiquer et pratiquer encore afin de devenir à l'aise avec toutes les subtilités des commandes Unix, de leur automatisation en shell, sachant que maitriser les commandes et comprendre le système de fichiers et les manipulations fichiers demande du temps.

          non su

          non su

Enfin, pour les plus courageuses et les plus courageux, on pourra tenter de choisir et installer un Linux sur son ordinateur, après avoir vérifié qu'on en maitrise bien les commandes fondamentales.

En particulier ce qu'on nomme la redirection des sorties permet de sauvegarder dans un fichier le texte produit par une commande et la redirection des entrées permet de lire dans un fichier ce qu'on devrait en principe taper au clavier, ce qui permet d'automatiser et de reproduire des traitements. Pour découvrir ce sujet, on pourra lire dans cet ordre les pages redir 1 et redir 2. Pour le maitriser, on viendra lire la page flux puis la page redirections.

                              non su

2. SQL et MySQL

Vu du coté utilisateur, SQL et MySQL sont "juste" des logiciels, un peu comme Excel et assimilés, pour stocker des données et les restituer, mais de façon sophistiquée et avec une gestion forte des droits d'accès aux données. Même s'il existe des logiciels, des interfaces graphiques et des pages Web pour gérer des données MySQL, le moyen le plus simple et le plus direct pour dialoguer avec MySQL reste la ligne de commandes.

Nous n'en dirons pas plus ici, car nous avons écrit un tuteur à ce sujet, adapté à la configuration locale du département informatique. On pourra bien sûr lire d'autres textes, dont cours MySQL, cours BDD ou mysql_tutorial.pdf avant de passer à la lecture d'ouvrages plus spécialisés, comme ceux que l'on peut trouver sur le Web avec une recherche sur Google telle que celle-ci :

non su

Pour mémoire, la connexion MySQL se fait en local à la faculté des sciences d'Angers par


      mysql --host=localhost --user=anonymous --password=anonymous
     

et il faut ensuite choisir la base de données à utiliser avec  USE laBase ; .

3. Import et export de données

3.1 Via des commandes SQL

Pour importer et exporter des données MySQL, on dispose en général de deux techniques : soit utiliser des instructions SQL ce qui permet de "rejouer" le code d'insertion ou d'exportation, soit passer par des fichiers-textes selon différents formats en profitant de ce que l'on nomme la redirection des entrées et des sorties en ligne de commandes. Ainsi la commande MySQL nommée mysqldump génère tout le code MySQL nécessaire à recréer toute une table. Voici sa syntaxe de base :


     Usage: mysqldump [OPTIONS] database [tables]
     OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
     OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
     For more options, use mysqldump --help
     

On trouvera ici les détails des options de cette commande, détails obtenus via mysqldump --help.

Ainsi, pour sauvegarder toute la base de données LEAPdb, on peut utiliser le code


     mysqldump --host=localhost --user=***** --password=******* LEA >  dumpLEA.txt
     

à condition de disposer des droits suffisants, bien sûr.

On trouvera dans le fichier dumpLEA.txt le résultat de cette commande (taille du fichier : environ 5 Mo).

3.2 A l'aide de fichiers formatés

Comme le montrent les options de la commande mysql obtenues via mysql --help et mises dans le fichier mysql.txt via mysql --help > mysql.txt MySQL dispose de nombreuses options de sorties, dont les formats HTML et XML sachant que par défaut les valeurs des champs sont séparés par le caractère de tabulation \t, ce qu'Excel et assimilés savent gérer.

Ainsi pour obtenir le fichier export01.csv lisible par Excel pour les cinq premiers enregistrements (par ordre d'accession) de la table proteins si on limite aux champs accession, length et reign, soit l'instruction SQL (mise dans le fichier export.sql) :


     SELECT  accession, length, reign FROM proteins ORDER BY accession LIMIT 5 ;
     

on pourra écrire


     mysql LEA < export.sql > export01.csv
     

De même, pour obtenir le fichier export02.html de ces mêmes informations, on écrira


     mysql LEA --html < export.sql > export02.html
     

Enfin, pour produire le fichier export03.xml équivalent, on écrira


     mysql LEA --xml < export.sql > export03.xml
     

4. Les commandes Linux par la pratique

Pour vous entrainer à la pratique du terminal, voici quelques commandes à lire (ou à déchiffrer ?) et quelques commandes à écrire pour des scénarios courants :

Question 4.1

Expliquer ce que font les commandes suivantes :


     ls      *.sql
     ls -al  *sql
     ls -alt *sql
     ls -al  | sort -n -r -k 5,5 | head -n 20
     

Question 4.2

A quoi sert la commande locate ? Expliquer ce que fait la commande suivante :


      locate office
     

Question 4.3

A quoi sert la commande find ? Quels sont ses paramètres ? Expliquer ce que fait l'enchainement de commandes suivant :


      find . | grep -i "xls$"
     

Question 4.4

Je voudrais faire une copie de sauvegarde du fichier listeProteines.txt et nommer la copie listeProteines_sov.txt. Quelle commande dois-je écrire ?

Question 4.5

Quelle commande Linux ne faut-il jamais écrire sous peine de perdre tous les fichiers de tous les répertoires ?

Question 4.6

Je voudrais créer une archive au format ZIP nommée sauvegardeExcel.zip de tous les fichiers Excel (formats xls et xlsx) du répertoire courant. Quelle commande dois-je écrire ? Et si j'avais voulu aussi sauvegarder tous les fichiers Excels de tous les sous-répertoires du répertoire courant (avec le chemin d'accès relatif), que faut-il modifier dans cette commande ?

Question 4.7

J'aimerais connaitre le nom de toutes les tables de la base statdata et le nombre d'enregistrements des tables LEA.proteins et HSP.proteins. Quelles commandes MySQL faut-il écrire ? Je voudrais générer un fichier rapportTables.txt qui contient la date et l'heure puis les informations précédentes. Comment dois-je faire ?

Et si je voulais que le fichier soit automatiquement nommé d'après la date du jour, par exemple rapportTables.15_02_2014.txt, que faudrait-il écrire ?

Question 4.8

Je dois récupérer un fichier qui est sur le Web et dont je connais l'URL, comme par exemple cmds01.txt ou image linux/manchot. Comment dois-je faire ? On pourra penser à utiliser le menu copy link location / copier l'adresse du lien du navigateur pour obtenir l'URL.

Solutions :    afficher les solutions  

 

Cliquer  ici  pour revenir à la page de départ des cours CMI / L2.

 

 

retour gH    Retour à la page principale de   (gH)