Lektionen
Zu Diane

TP1: Environnement Linux et Programmation

50 Karten

Pré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 Karten

Wiederholen
Verteiltes Wiederholen zeigt dir jede Karte zum optimalen Zeitpunkt zum Auswendiglernen, mit schrittweise größer werdenden Wiederholungsabständen.
Frage
Comment afficher les 5 premières lignes d'un fichier data.csv?
Antwort
head -n 5 data.csv
Frage
Comment afficher les 10 dernières lignes d'un fichier log.txt?
Antwort
tail -n 10 log.txt
Frage
Comment compter le nombre de lignes dans un fichier?
Antwort
wc -l [fichier]
Frage
Quelle est l'utilité principale d'un lien symbolique créé avec ln -s?
Antwort
Créer un raccourci vers un fichier ou un répertoire sans le copier, économisant de l'espace disque.
Frage
Quelle commande permet de trouver toutes les lignes contenant un motif spécifique dans un fichier?
Antwort
grep [motif] [fichier]
Frage
Que signifie le caractère ^ dans une expression régulière (RegEx)?
Antwort
Il indique que le motif doit se trouver au début de la ligne.
Frage
Que signifie le caractère $ dans une expression régulière (RegEx)?
Antwort
Il indique que le motif doit se trouver à la fin de la ligne.
Frage
Quel outil en ligne de commande est particulièrement utile pour traiter des données en colonnes?
Antwort
awk
Frage
Quelle commande awk permet d'imprimer uniquement la première colonne d'un fichier?
Antwort
awk '{print $1}' [fichier]
Frage
Quel outil est utilisé pour effectuer des substitutions de texte dans un flux ou un fichier?
Antwort
sed (Stream Editor)
Frage
Quelle commande supprime définitivement un fichier?
Antwort
rm [fichier]. Attention, cette action est irréversible.
Frage
Comment renommer un fichier ancien.txt en nouveau.txt?
Antwort
Avec la commande mv ancien.txt nouveau.txt.
Frage
Quelle commande permet de copier un fichier?
Antwort
cp [source] [destination]
Frage
Comment afficher le contenu complet d'un fichier directement dans le terminal?
Antwort
cat [fichier]
Frage
Quelle commande est préférable à cat pour visualiser de longs fichiers page par page?
Antwort
less [fichier]
Frage
Quel est l'objectif principal des Travaux Pratiques (TP) en bio-informatique?
Antwort
Appliquer les notions théoriques et se familiariser avec les outils informatiques du domaine.
Frage
Sur quelle plateforme les étudiants peuvent-ils trouver les ressources et poser des questions?
Antwort
Sur la plateforme StudiUM, qui contient les notes, les ressources et un forum de discussion.
Frage
Quelle est la commande pour se connecter aux serveurs de l'UdeM via le terminal?
Antwort
ssh -l p0000000 frontaux-sens.dit.umontreal.ca
Frage
Quel est l'avantage principal de se connecter via un terminal (ssh)?
Antwort
C'est plus rapide et correspond mieux à l'environnement de travail réel d'un bio-informaticien.
Frage
Quelle commande permet d'afficher le manuel d'une autre commande?
Antwort
La commande man [commande] affiche le manuel pour la commande spécifiée.
Frage
Comment quitte-t-on l'affichage d'une page man?
Antwort
En appuyant sur la touche :q.
Frage
Quelle commande liste le contenu du répertoire courant?
Antwort
ls (List)
Frage
Quelle commande affiche le chemin complet du répertoire de travail actuel?
Antwort
pwd (Print Working Directory)
Frage
Avec quelle commande peut-on changer de répertoire?
Antwort
cd [répertoire] (Change Directory)
Frage
Comment créer un nouveau répertoire nommé TP1?
Antwort
mkdir TP1
Frage
Quelle commande supprime un répertoire vide?
Antwort
rmdir [répertoire] (Remove directory)
Frage
Que représente le symbole tilde (~) en ligne de commande?
Antwort
Il représente le répertoire personnel (home directory) de l'utilisateur.
Frage
À quoi sert le double point (..) dans un chemin de fichier?
Antwort
Il représente le répertoire parent (le répertoire juste au-dessus).
Frage
Quelle touche du clavier facilite l'auto-complétion des noms de fichiers ou de commandes?
Antwort
La touche de Tabulation (Tab).
Frage
Quelle est la commande la plus simple pour créer un fichier vide?
Antwort
touch [nom_du_fichier]
Frage
L'extension d'un fichier (ex: .txt) a-t-elle une importance capitale sous Linux?
Antwort
Non, elle sert surtout à la clarté pour l'utilisateur, mais n'est pas toujours nécessaire pour le système.
Frage
Que fait l'opérateur 'pipe' (|) entre deux commandes?
Antwort
Il enchaîne les commandes en utilisant la sortie de la première comme entrée pour la seconde.
Frage
Quelle est la différence entre les opérateurs de redirection > et >>?
Antwort
> écrase le contenu du fichier de destination, tandis que >> ajoute à la fin.
Frage
Quelle commande affiche l'historique des commandes que vous avez tapées?
Antwort
history
Frage
Comment créer une archive compressée nommée backup.tar.gz du répertoire Projet?
Antwort
tar -czf backup.tar.gz Projet
Frage
Dans la commande tar -czf, que signifie l'option c?
Antwort
L'option c signifie create, pour créer une nouvelle archive.
Frage
Dans la commande tar -czf, que signifie l'option z?
Antwort
L'option z indique que l'archive doit être compressée avec gzip.
Frage
Comment copier un fichier depuis un serveur distant vers sa machine locale en utilisant la ligne de commande?
Antwort
Avec la commande scp user@serveur:/path/to/file .
Frage
La casse (majuscules/minuscules) est-elle importante dans les noms de fichiers sous Linux?
Antwort
Oui, Fichier.txt et fichier.txt sont considérés comme deux fichiers distincts.
Frage
Quel est l'un des inconvénients potentiels de l'utilisation du bureau virtuel (accès-web)?
Antwort
Il peut être lent comparé à une connexion directe via le terminal.
Frage
Quelle est la structure de base d'une commande dans le terminal?
Antwort
[commande] {options} {arguments}
Frage
Comment la collaboration est-elle encouragée dans le cours?
Antwort
La collaboration est encouragée, mais la copie de travail est considérée comme du plagiat.
Frage
Que fait la commande wc -w monFichier.txt?
Antwort
Elle compte le nombre de mots (words) dans le fichier monFichier.txt.
Frage
Dans grep, comment rechercher les lignes contenant 'Carol' suivi de 'i' ou 'a'?
Antwort
grep 'Carol[ia]ne' [fichier]
Frage
Comment utiliser grep pour trouver des lignes qui ne contiennent pas la lettre 'a'?
Antwort
En utilisant le chapeau à l'intérieur des crochets: grep '[^a]' [fichier].
Frage
Que fait la commande history | grep 'ssh'?
Antwort
Elle cherche dans l'historique des commandes toutes celles qui contiennent le mot 'ssh'.
Frage
Pourquoi est-il conseillé d'éviter les espaces dans les noms de fichiers?
Antwort
Parce que l'espace est un séparateur d'arguments, ce qui complique la manipulation des fichiers en ligne de commande.
Frage
Quelle commande permet de voir l'utilisation de son quota d'espace disque?
Antwort
quota -s
Frage
Quelle est une méthode pour remettre un devoir sur StudiUM si on est connecté en ssh?
Antwort
Utiliser scp pour copier l'archive du serveur vers sa machine locale, puis la téléverser sur StudiUM.
Frage
Que fait cat fichier.txt | tr 'A' 'B'?
Antwort
Affiche le contenu de fichier.txt en remplaçant chaque caractère 'A' par un 'B'.

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).
  • Navigation:
    • 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 ./Textes copie xyz.txt de Documents vers Textes (dans le répertoire courant).
  • Permissions:
    • 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 chmod permet 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)
  • 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 (MonFichier \neq monfichier).
    • 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 (ou nano): 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:
      • awk et sed: 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. cd sans 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).
    • 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.txt puis man vi >> deux_fichiers_help.txt (le fichier contiendra les manuels de grep et vi).
    • 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 -l
        1. cat fichier.fasta: affiche le contenu du fichier.
        2. grep ">": filtre les lignes commençant par ">" (en-têtes FASTA).
        3. wc -l: compte le nombre de lignes (nombre de séquences).

    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.

    Quiz starten

    Teste dein Wissen mit interaktiven Fragen