TP1: Environnement Linux et Programmation

50 carte

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 carte

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

    Inizia un quiz

    Testa le tue conoscenze con domande interattive