Introduction aux commandes Unix pour débutants
Introduction aux commandes Unix pour débutants
Et tout le staff !!
1
La connexion ssh vers le cluster
● ssh (secure shell)
○ Protocole sécurisé
■ les informations passant sur le réseau sont protégées (chiffrées)
○ Plusieurs outils pour la connexion
■ Via un terminal
● Linux ou MacOSX
● Windows 10 (Bash on Ubuntu on Windows)
■ Via une application réseau comme MobaXterm
● Windows
● Permet l'accès à un terminal
2
Se connecter depuis Windows avec MobaXterm (1)
3
Se connecter depuis Windows avec MobaXterm (2)
1. Session
ssh
2. Remote host
[Link]
3. Username
Indiquez votre login
4. Pressez OK
4
Se connecter depuis Mac OSX ou Linux
● MacOSX
○ Finder > Applications > Utilities > Terminal
○ Tapez la commande ci-dessous
● Linux
○ La localisation du terminal varie selon les bureaux
(Faites vous aider si vous ne trouvez pas).
○ Utilisez la commande ci-dessous
$ # Connection en ssh au serveur ABiMS
$ # Remplacez [login] par votre compte utilisateur
$ # Tapez votre mot de passe
$ ssh -Y [login]@[Link]
Remarques:
- Le caractère # indique un commentaire, qui sera ignoré par le shell.
- Le $ en rose représente l'invite de commande, qui varie selon les configurations.
- La commande à taper dans votre terminal commence juste après l'invite de commande: ssh …
5
- L’option -Y permet d’ouvrir des fenêtres graphiques à distance (e.g. éditeurs)
L'écran d'accueil (un peu sommaire)
● Prompt (invite de commande)
○ Nom d’utilisateur@hostname répertoire courant
6
Charger l'environnement logiciel
7
Le terminal…
Demo
Tapez 'ls' dans le terminal
(lister les fichiers)
11
Trouver de l'aide !
Appeler la police, appeler son collègue, chercher sur internet ou utiliser la
commande man (manuel)
# Demo
$ man ls # obtenir de l'aide sur la commande ls
$ man man # obtenir de l'aide sur la commande man ...
13
La commande ls et ses arguments
* Le comportement par défaut est de trier par ordre alphabétique en tenant compte de la casse (i.e majuscule minuscule).
15
** ATTENTION aux espaces, nécessaires entre la commande et ses arguments. La commande ls-l n'existe pas !
Arborescence de fichiers
16
L'arborescence du système de fichier
● Le système de fichier peut être vu comme un arbre dont les feuilles sont des
dossiers et fichiers. On peut se déplacer dans cet arbre.
● Cet arbre contient une racine, le dossier /
● Le dossier / contient notamment /
○ un dossier shared *
... shared ...
■ qui lui même contient un
dossier bank ... bank ...
● qui lui même contient un
dossier eba2018 uniprot eba2018 uniref90
● …
gff star fasta
● Chemin du dossier
○ /shared/bank/eba2018 hg19 hg38 mm9
17
Faire référence à un dossier ou fichier ?
dossier courant.
gff star fasta
■ ./star/hg38
hg19 hg38 mm9
19
Afficher l’arbre des sous-dossiers du dossier courant
● La commande tree affiche l’arbre de tous les
sous-dossiers du dossier courant.
20
Faire référence à un dossier ou fichier ?
21
Faire référence à un dossier ou fichier ?
● Chemin relatif
○ E.g pour aller dans le dossier uniprot /
depuis le dossier eba2018
■ ../uniprot ... shared ...
22
Autocompletion
● Si vous voulez briller en société ou en famille en donnant l'impression de taper vite, utilisez
l'auto-complétion
○ De manière plus générale c'est essentiel pour taper un chemin sans se tromper.
<TAB><TAB>
23
L'arborescence: Demo
On utilise ci-dessous la commande pwd (print working
directory) et la commande cd (change directory). *
26
* Si JvH est dans la salle d’à côté, vous pouvez aussi dire ‘uploader’ :)
Quels dossiers utiliser ?
27
Créer des répertoires
● On utilisera la commande mkdir (make directory).
$ cd /shared/projects/eba2018_cnorris
$ mkdir chip-seq # On crée le dossier
$ ls -l # Vérifier la création du dossier
$ cd chip-seq # Equivalent de cd ./chip-seq *
$ mkdir bam fastq # On crée deux dossiers d'un coup
$ ls -l # On a bien deux dossiers
$ cd fastq # On se déplace dans fastq
$ cd ../.. # On remonte de deux niveaux
$ mkdir -p rna-seq/output/bam # On créé un chemin vers un dossier ‘bam’
$ ls -R # On liste Récursivement les dossiers
28
* L'utilisation de ./ est souvent facultative.
Exercices
29
Exercice
30
A propos du serveur:
Un maître et des esclaves
31
Le cluster de calcul
● Regroupement de machines
○ Machines: "noeuds/node"
● Gestion transparente pour les utilisateurs
● Connexion depuis le monde entier
○ Nécessité de se connecter à distance
● Accès partagé
○ De nombreux utilisateurs
○ Nécessité d'adopter des règles.
■ Gestion des ressources de calcul
■ Gestion des ressources de stockage
32
Maître et esclaves
Master
Esclave
Users
33
Ne pas surcharger le maître de tâches
34
Demander à un noeud de travailler
● Un programme disponible sur le maître (SLURM) permet de réserver des
ressources (des processeurs sur des noeuds).
○ Comme à l'hôtel
■ On réserve des chambres dans des hôtels (des processeurs sur un
noeud)
● Mode interactif (on est redirigé sur le noeud cible).
○ Les ressources ne sont libérées qu'après avoir quitté (exit)
● Mode non interactif (on reste sur le maître).
○ Quand la tâche est réalisée les ressources sont libérées
35
SLURM: mode interactif
● On réserve un processeur sur un noeud par défaut.
● Utiliser sinteractive.
Le noeud qui m’a été assigné par
sinteractive, le vôtre est différent
36
Manipuler des fichiers
37
Télécharger et décompresser un fichier
● Pour le téléchargement, on pourra utiliser par exemple la commande wget.
● Pour la décompression on utilisera la commande gunzip si le fichier a été
compressé avec l'algorithme gzip (extension .gz)
38
Le fichier hg38_exons.bed
Contient les coordonnées (début/fin) des exons humains au format BED.
* Positions Start et End sont toujours données par rapport au sens 5'/3' du brin +. Les coordonnées sont 39
'zero-based, half-open'.
Visualiser le contenu d'un fichier
● On utilisera less ou more (*) pour parcourir le fichier ligne à ligne (logiciels de type 'pager').
● On utilisera head ou tail pour voir les n premières ou n dernières lignes d'un fichier.
● La commande cat permet de renvoyer tout le contenu d'un fichier sur la sortie standard
(l'écran). <ctrl> + c (cancel) pour arrêter.
● Les raccourcis clavier dans less sont les mêmes que pour la commande man.
Raccourcis dans less:
↑ : se déplacer vers le haut.
↓ : se déplacer vers le bas.
> : Aller à la première ligne.
< : Aller à la dernière ligne.
/truc : pour chercher le terme 'truc'.
n : (next) pour chercher la prochaine occurrence de 'truc'.
p: (previous) pour chercher l'occurrence précédente de 'truc'.
q : pour quitter.
40
(*) Less does more or less the same as more, but rather more than less, I like less more than more (an hommage to JvH)
Exercices
1. Utilisez la commande head pour regarder les 10 premières lignes du fichier
hg38_exons.bed
2. Utilisez la commande tail pour regarder les 10 dernières lignes du fichier
hg38_exons.bed
3. Promenez vous dans le fichier hg38_exons.bed en utilisant la commande less.
Quittez less.
4. Renvoyer le contenu du fichier à l'écran avec cat.
Truc: si la lecture vous fatigue, utilisez <ctrl> + c (cancel) pour arrêter le défilement.
41
Exercices
1. Utilisez la commande head pour regarder les 10 premières lignes du fichier
hg38_exons.bed
2. Utilisez la commande tail pour regarder les 10 dernières lignes du fichier
hg38_exons.bed
3. Promenez vous dans le fichier hg38_exons.bed en utilisant la commande less.
Quittez less.
4. Renvoyer le contenu du fichier à l'écran avec cat.
Truc: si la lecture vous fatigue, utilisez <ctrl> + c (cancel) pour arrêter le défilement.
# Solution
$ head -n 10 hg38_exons.bed
$ tail -n 10 hg38_exons.bed
$ less hg38_exons.bed
$ cat hg38_exons.bed
42
Compter les lignes d'un fichier
Utiliser la commande wc (word count) avec l'argument -l (line).
$ wc -l hg38_exons.bed # 1261870 exons
43
Extraire des colonnes
● Pour extraire des colonnes on utilisera la commande cut avec l'argument -f
(field)
● Les colonnes du fichiers doivent nécessairement être séparées par une
tabulation (sinon utiliser l'argument -d pour 'delimiter')
Truc: si la lecture vous fatigue, utilisez <ctrl> + c (cancel) pour arrêter le défilement.
46
Enchaînement de commandes
Entrée Sortie Entrée Sortie Entrée Sortie
48
Solution
49
Demo: enchaînements de commandes
$ # Obtenir la liste non redondante de chromosomes présents dans le fichier
$ cut -f1 hg38_exons.bed | sort | uniq
$ # Nombre de chromosomes différents
$ cut -f1 hg38_exons.bed | sort | uniq | wc -l
$ # Obtenir la liste des chromosomes présents dans le fichier et
$ # le nombre d'occurrence de chacun d'entre eux
$ cut -f1 hg38_exons.bed | sort | uniq -c # -c pour 'count'
$ # La liste des chromosomes présents dans le fichier et leur nombre trié
$ # par ordre décroissant (-r: reverse, -n: numeric, -k: ‘kolonne’)
$ cut -f1 hg38_exons.bed | sort | uniq -c | sort -n -r k 1,1
Note: La commande uniq permet d'éliminer les doublons dans un flux de texte trié. 50
Exercices (notés)
● En quoi la commande less diffère-t-elle de la commande more ? (15 pts)
● En utilisant la command grep indiquez : (5 pts)
● Combien y-a-t-il d'exons sur le chromosome 22 ?
● Combien de lignes correspondant aux exons présents sur le chromosome
chr22 contiennent le terme lincRNA ?
51
Exercices (notés)
En utilisant la command grep
● Q1: less does more or less the same as more, but rather more than less, I like
more less than more
● Combien y-a-t-il d'exons sur le chromosome 22 ?
● Combien de lignes correspondant aux exons présents sur le chromosome
chr22 contiennent le terme lincRNA ?
Solution
$ grep chr22 hg38_exons.bed | wc -l # n = 27854
$ grep chr22 hg38_exons.bed | grep lincRNA | wc -l # 846
52
Pour aller plus loin
● Supports de cours :
○ ABiMS : Linux Initiation, Linux Avancé, Cluster
● Agenda
○ ABiMS : [Link]
○ Genotoul : [Link]
53
Merci pour votre attention.
54
Exercice
● What is the genome fraction covered by exons ?
○ We must perform the operation below
● Ask for some help about the merge command (bedtools merge -h)
○ Looks at the arguments.
○ Read the note at the end of the command. Why is it important ?
Exercice with bedtools
● Ask for some help about the merge command (bedtools merge -h)
○ Looks at the arguments.
○ Read the note at the end of the command. Why is it important ?
●
Solution
u@m: bedtools -h # l’ensemble des sous commandes
u@m: bedtools merge -h # utiliser l’argument -i
# la note indique que les régions génomiques doivent être triées au
préalable.
Exercice
# Ou encore
awk 'BEGIN{FS="\t"; s=0}{s=s+$3-$2}END{print s}' hg38_exons_merged.bed
● Le critère pourra être une expression régulière (voir plus loin) ou une
expression logique
# exemples: test si a égal b. Imprime si vrai.
# La première ligne
u@m: awk 'NR == 1 {print}' hg38_exons_merged.bed
# La ligne 2 à 10
u@m: awk '{OFS=”\t”} NR >= 2 && NR <= 10 {print NR, $0}' hg38_exons_merged.bed
[ABc] A ou B ou c
^ Début de ligne.
$ Fin de ligne
x* 0 à n fois le caractères x.
x+ 1 à n fois le caractères x.
ˆ[A − Z].*\.txt$ Une chaîne débutant par une majuscule et finissant par ”.txt“
ˆ[ˆ0 − 9]*\.sh$ Une chaîne ne contenant pas de chiffres et se terminant par ”.sh“
Exercice
● En utilisant awk et un pattern, construire une expression régulière permettant
de récupérer, dans le fichier hg38_exons_merged.bed, les lignes dont la
colonne 1 contient chr1, chr2 et chr9 (et rien d’autre quoi que puisse contenir
le fichier).
Solutions
Vous pouvez surveiller vos calculs via les sorties Vous perdez la main donc vous devez "rediriger"
standard voir intervenir s'ils plantent ou s'ils les sorties de vos programmes dans des fichiers
demandent une intervention (confirmation ou
ajustement)
"Qui tue le père tue le fils" : quand le terminal Les calculs/jobs sont lancés, vous perdez la main
est fermé il met fin à tous les processus lancés dessus mais l'ordonnanceur le surveille pour vous
75
Note: sbatch (SLURM) == qsub (SGE)
A propos de
● C'est un gestionnaire de d'outils et packages
○ Tous les langages sont supportés : Python, R, Ruby, Java, Javascript, C, ...
● Les outils viennent pré-compilés avec toutes les library systèmes et dépendances.
Cela évite ainsi les problèmes d'installation
● Il permet la création d'environnement qui isole le ou les outils des autres. On peut
ainsi disposer de plusieurs versions d'un outil et éviter les conflits de versions de
dépendances.
● Les environnements sont exportables pour la reproductibilité
# Création d'un environnement conda (ici avec installation
# de star, salmon, deseq2
$ conda create -n rnaseq star==2.5.3 salmon bioconductor-deseq2