TP1: Environnement Linux et Programmation
50 cartePrésentation de l'environnement Linux/Unix, des commandes de base, des expressions régulières et de la manipulation de fichiers pour le cours BCM3553/BCM6010.
50 carte
Ripassa
La ripetizione spaziata ti mostra ogni carta al momento ottimale per memorizzare a lungo termine, con revisioni sempre più distanziate.
BCM3553/BCM6010 (Bases de la)Bioinformatique appliquée: Chapitre 1 – Une introduction à UNIX
Ce chapitre vise à introduire les concepts fondamentaux d'UNIX et Linux, essentiels pour la bioinformatique appliquée. Il couvrira l'environnementde travail sur serveur, la manipulation de fichiers et les techniques avancées de gestion des données textuelles.
Qu'est-ce qu'UNIX et Linux?
- UNIX:
- Système d'exploitation créé par AT&T au début des années 70.
- Conçu comme un système multiusagers et multitâches, permettant à plusieurs utilisateurs et processus de travailler simultanément.
- Toujours pertinent, surtout avec les processeurs modernes multi-cœurs.
UNIX a eu une vie mouvementée.
- Linux:
- Créé en 1991 par Linus Torvalds, c'est un système detype UNIX.
- Son code source est ouvert sous la licence GPL, signifiant que le code est accessible à tous et que toute modification doit être partagée avec la communauté.
- Il est gratuit et activement développé par une large communauté.
- Distributions Linux:Linux s'installe sous forme de distributions (ex: Fedora, Ubuntu, RHEL). Une distribution inclut un noyau (kernel) et divers logiciels adaptés à des buts spécifiques.
- Différences entre UNIX et Linux: Les différences sont minimes pour l'utilisateur non-administrateur. Nous utiliserons principalement Linux dans ce cours.
Comment travailler sur un serveur? Accéder au système
- Interfaces graphiques (GUI):
- Bien que traditionnellement axé sur la ligne de commande, Linux offre désormais des environnements de bureau comme GNOME, KDE, XFCE, LXDE, Cinnamon.
- Toutefois, pour les tâches de bioinformatique, l'utilisation de la console reste prédominante.
- La console et le shell:
- On accède au système via une console (Terminal ou PuTTY).
- Le shell est un programme intermédiaire entre l'utilisateur et le noyau du système (ex: bash, zsh, tcsh).
- Il permet d'exécuter des commandes.
- Il est possible de lancer plusieurs consoles/shells simultanément pour gérer différentes tâches.
- Le shell est configurable via des fichiers de paramétrage (ex: .zprofile, .bash_profile, .login, .zshrc, .bashrc).
Philosophie des commandes
- Prémisses:
- «Small is beautiful»: Les programmes doivent être petits et simples pour être faciles à comprendre et réutiliser.
- Concept KISS: Keep It Simple, Scientist!
- Les fonctions complexes sont obtenues par l'enchaînement de fonctions simples.
- Trouver les commandes:
- La variable d'environnement PATH</b> liste les répertoires contenant les applications disponibles.</li> <li>Cette liste peut être modifiée par les fichiers de configuration du shell.</li> </ul> </li> <li><b>Utiliser les commandes</b>: <ul> <li>Anatomie: <code>nomdelacommande -options arguments</code></li><li><code>nomdelacommande</code>: le nom du programme à exécuter.</li> <li><code>-options</code>: paramètres qui déterminent le comportement de l'exécution.</li> <li><code>arguments</code>: les données sur lesquelles l'application doit opérer.</li> </ul> </li> <li><b>Aide et documentation</b>: <ul> <li><code>man [commande]</code>: affiche le manuel pour la commande spécifiée.</li> <li><code>[programme] --help</code> ou <code>-h</code>: affiche une aide abrégée.</li> <li>Exécuter le programme sans argumentspeut parfois afficher des instructions d'utilisation.</li> <li>Google est un recours en dernier lieu.</li> </ul> </li> </ul> <h3>Gestion des tâches</h3> <ul> <li>Chaque tâche reçoit un <b>identificateur unique</b> (PID - Process ID).</li> <li><b>Tâches en arrière-plan</b>: Utiliser l'opérateur <code>&</code> à la fin d'une commande pour l'exécuter en arrière-plan et libérer la console.</li> <li><b>Commandes de gestion des tâches</b>: <ul> <li><code>ps</code>: affiche les processus en cours d'exécution.</li> <li><code>jobs</code>: affiche le statut des tâches dans la session actuelle.</li> <li><code>nice</code>: exécute un programme avec une priorité d'ordonnancement modifiée.</li> <li><code>nohup</code>: exécute une commande insensible aux déconnexions (hangups).</li> <li><code>kill [PID]</code>: envoie un signal de terminaison à un processus.</li> <li><code>kill -9 [PID]</code>: force la terminaison d'un processus (<i>kill with extreme prejudice</i>).</li> </ul> </li> <li><b>Historique des commandes</b>: <ul> <li><code>history</code>: affiche l'historique des commandes exécutées.</li> <li><code>![numéro_de_tâche]</code>: répète une commande spécifique de l'historique.</li> <li><code>!!</code>: répète la dernière commandeexécutée.</li> </ul> </li> </ul> <h3>Les fichiers sous Linux</h3> <ul> <li><b>Système de fichiers</b>: <ul> <li>Hierarchique: tous les fichiers sont organisés dans une arborescence.</li> <li>Chaque élément a ses propres privilèges d'accès.</li> <li>Opérateurs pratiques: <ul> <li><code>~</code>: représente la racine de <b>HOME (répertoire personnel).
.: représente le répertoire courant...: représente le répertoire parent (d'où l'on vient).
- Méthode absolue: Repère par rapport à la racine du système de fichiers (
/). Ex:/home/user/Documents. - Méthode relative: Repère selon la position actuelle en utilisant
.et... Ex: si dans/home/myUser,cp Documents/xyz.txt ./Textescopiexyz.txtdeDocumentsversTextes(dans le répertoire courant).
- Compartimentation des privilèges d'accès pour des raisons de sécurité et de partage.
- Notion de user / group / other (système).
- Les fichiers sont par défaut accessibles uniquement à leur créateur.
- Chaque utilisateur a un compte protégé par mot de passe et un répertoire personnel ($HOME) avec ses propres permissions.
- Types de permissions de base: Read (r), Write (w), Execute (x).
- La commande
chmodpermet de changer ces privilèges.- Méthode numérique (octale):
chmod [XYZ] nomdufichier, où X, Y, Z sontla somme des valeurs (r=4, w=2, x=1) pour l'utilisateur, le groupe, et les autres, respectivement. Refus est 0.Exemple:
chmod 640 xyz.txt(User: lecture/écriture ; Groupe: lecture ; Autres: aucun) - Méthode symbolique:
chmod [classe][opérateur][mode] nomdufichier.- Classe: u (user), g (group), o (other), a (all)
- Opérateur: + (donner le droit), - (enlever le droit)
- Mode: r, w, x
Exemple:
chmod go+r xyz.txt(Groupe et Autres: lecture)
- Méthode numérique (octale):
Format des fichiers de texte en bioinformatique
- L'information est majoritairement textuelle et structurée selon des formats spécifiques.
- Distinction entre la donnée (séquence, valeur numérique) et la méta-donnée(informations associées).
- Format FASTA:
- Format simple et très courant.
- Commence par
>suivi d'une ligne d'en-tête (méta-donnée), puis la séquence brute. - Exemple d'en-tête:
>gi|1E1E3797|ref|XM_OOE181.E| Homo sapiens emsl sequence (...) - Utilise l'alphabet IUPAC pour les nucléotides ou protéines.
- Formats riches (ex: Genbank):
- Méta-donnée détaillée sous forme de paires "clé => Valeur".
- Permet de stocker une grande richesse d'informations.
- Peut présenter des problématiques de standardisation entre formats.
Propriétés des noms de fichiers
- Long jusqu'à 256 caractères.
- Éviter les caractères accentués (é, à, ç) et les espaces.
- Être descriptif.
- La casse est importante (
MonFichiermonfichier). - Les fichiers dont le nom commence par un point (ex:
.monfichier) sont invisibles par défaut.
Édition des fichiers de texte
- Utiliser un éditeur de texte spécifiquement conçu pour les fichiers de code ou de données brutes, plutôt que des logiciels de traitement de texte (ex: MS Word).
- Éditeurs sur console:
vi: très puissant mais avec une courbe d'apprentissage raide.pico(ounano): plus simple et direct à utiliser.
- Éditeurs avec interface graphique:
emacs/xemacs: similaire à vi en complexité.nedit/kate/atom: plus proches de l'expérience pico/nano.
- Éditeurs de flux:
awketsed: Utiles pour des remplacements globaux de caractères ou de motifs sans ouvrir le fichier.- Exemple: remplacer les IDs de chromosomes dans les fichiers d'annotation.
Lecture des fichiers de texte
- Commandes pour observer le contenu:
cat [fichier]: concatène et affiche tout le contenu du fichier à l'écran.more [fichier]: affiche le contenu page par page.less [fichier]: similaire à more maispermet une navigation plus flexible (avant/arrière).head [fichier]: affiche les premières lignes d'un fichier (par défaut 10).tail [fichier]: affiche les dernières lignes d'un fichier (par défaut 10).
- Recherche dans les fichiers:
find [répertoire] -name "[pattern]": recherche de fichiers selon certains critères (ex: nom).grep "[pattern]" [fichier]: recherche un motif (expression régulière) dans un ou plusieursfichiers.
Manipulation des fichiers
- Création:
touch [nom_fichier]: crée un fichier vide ou met à jour la date de modification.
- Copie:
cp [source] [destination]: copie un fichier, laissant l'original intact.scp [source] [destination]: copie sécurisée de fichiers/répertoires entre deux ordinateurs.
- Déplacement/Renommage:
mv [source] [destination]: déplace ou renomme un fichier. Attention: si la destination existe, elle sera écrasée sans avertissement.
- Répertoires:
mkdir [nom_répertoire]: crée un nouveau répertoire.cd [répertoire]: change de répertoire.cdsans argument retourne au répertoire personnel.pwd: affiche le répertoire de travail actuel.ls: liste le contenu du répertoire.
- Suppression:
rm [fichier]: supprime un fichier.rm -r [répertoire]: supprime un répertoire (mêmes'il n'est pas vide).rmdir [répertoire]: supprime un répertoire vide.- ATTENTION: Aucune "corbeille" n'existe en ligne de commande sous Linux. Les fichiers supprimés sont perdus définitivement.
Pipeline, redirection et autres manipulations avancées
- Redirection:
- Utilisation de l'opérateur
>pour rediriger la sortie standard d'une commande vers un fichier.Exemple:
man grep > grep_help.txt(le résultat est un fichier texte contenant le manuel de grep). - Très utile pour sauvegarder la sortie d'une commande (qui s'afficherait autrement seulement sur la console).
- Utilisation de l'opérateur
- Addition (append):
- Utilisation de l'opérateur
>>pour ajouter la sortie d'une commande à la fin d'un fichier existant sans l'écraser.Exemple:
man grep > deux_fichiers_help.txtpuisman vi >> deux_fichiers_help.txt(le fichier contiendra les manuels de grep et vi).
- Utilisation de l'opérateur
- Pipeline:
- Utilisation de l'opérateur
|(barre verticale) pour chaîner les commandes. - La sortie standard d'une commande devient l'entrée standard de la commande suivante.
- Permet de réaliser des tâches complexes en combinant des commandes simples.
Exemple pourcompter les séquences dans un fichier FASTA:
cat fichier.fasta | grep ">" | wc -lcat fichier.fasta: affiche le contenu du fichier.grep ">": filtre les lignes commençant par ">" (en-têtes FASTA).wc -l: compte le nombre de lignes (nombre de séquences).
- Utilisation de l'opérateur
Comment avoir accès à un serveur Linux?
- Serveur universitaire: Accès via une connexion sécurisée (VPN) (nécessaire pour les travaux pratiques).
- Installation directe: Installer Linux sur un ordinateur dédié.
- Virtualisation: Utiliser un système de virtualisation (ex: VirtualBox, VMWare) pour installer Linux sur une machine virtuelle.
- Matériel dédié: Utiliser des mini-ordinateurs comme le Raspberry Pi, qui sont abordables et parfaits pour l'apprentissage et les projets personnels.
Le Raspberry Pi estune solution intéressante car il est compact, économe en énergie et puissant pour de nombreuses tâches bioinformatiques.
Inizia un quiz
Testa le tue conoscenze con domande interattive