TP1: Environnement Linux et Programmation

50 cards

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 cards

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

    Start a quiz

    Test your knowledge with interactive questions