Arborescence¶

Equipe pédagogique : P. François, M. Genete, C. Toffano-Nioche, E. Jacquemet, G. Le Corguillé, J. Seiler, D. Puthier, T. Denecker et tout le staff¶

Définition¶

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 en suivant les branches.

L'arbre ci-dessous est ancré par sa racine, le dossier /

Drawing

En suivant les branches, nous observons que le dossier / contient notamment :

  • Un dossier shared

Drawing

  • Qui lui-même contient un dossier bank

Drawing

  • Qui lui-même contient un dossier homo_sapiens

Drawing

Ainsi, on peut dire que le chemin du dossier homo_sapiens est /shared/bank/homo_sapiens

Drawing

Comment retrouver son chemin dans ce labyrinthe ?¶

1. Savoir se repérer¶

Pour savoir où vous êtes dans cette arborescence, vous pouvez utiliser la commande pwd qui signifie print work directory

In [1]:
# Afficher le chemin absolu où l'on se trouve
pwd
/shared/ifbstor1/projects/2422_ebaii_n1/cours_commun/TP_linux

Nous sommes dans une branche différente de celle dont nous venons de parler.

2. Changer de chemin¶

Ici c'est la commande cd qui va devenir notre meilleure alliée. Vous verrez vite que ce change directory est surement la commande que nous utiliserons le plus. Il est important de bien comprendre son fonctionnement.

D'abord sa structure : cd chemin_de_destination

a. Le chemin absolu¶

Lorsque l'on spécifie le chemin depuis la racine jusqu'à notre dossier d'arrivée, on parle de chemin absolu.

Selon vous, pour nous rendre dans le dossier homo_sapiens, quel est le chemin absolu ?

Drawing

/shared/bank/homo_sapiens

Essayons de nous y rendre avec la commande cd

In [2]:
# Commande pour nous rendre dans le dossier /shared/bank/homo_sapiens
cd /shared/bank/homo_sapiens

Vérifiez où vous êtes avec une des commandes vu précédemment

In [3]:
# Afficher le chemin absolu où l'on se trouve
pwd
/shared/bank/homo_sapiens

b. Le chemin relatif¶

Dans notre dossier courant (celui où nous nous trouvons à l'instant T) se trouve le dossier hg19/star-2.7.5a.

C'est un chemin relatif. On ne repart pas de la racine, on se situe par rapport à notre emplacement actuel.

Drawing

Essayez maintenant de vous rendre dans le dossier hg19/star-2.7.5a.

In [4]:
# Commande pour nous rendre dans le dossier hg19/star-2.7.5a
cd hg19/star-2.7.5a

Vérifions où nous sommes

In [5]:
# Afficher le chemin absolu où l'on se trouve
pwd
/shared/bank/homo_sapiens/hg19/star-2.7.5a

Nous sommes bien toujours dans /shared/bank/homo_sapiens. Nous sommes juste parti plus loin dans l'architecture

C. Remonter dans l'arborescence¶

Par mégarde, vous êtes descendu dans la mauvaise branche. Vous souhaitiez vous rendre dans le dossier fasta.

cd autorise de remonter dans l'arborescence en utilisant ..

Vérifions encore une fois où nous sommes, puis remontons d'un cran, vérifions à nouveau, descendons dans le dossier fasta et vérifions une dernière fois. Vous devez avoir cinq lignes de commandes dans le bloc ci-dessous :

In [6]:
# Afficher le chemin absolu où l'on se trouve
pwd
# Commande pour remonter d'un cran dans l'arborescence
cd ..
# Afficher le chemin absolu où l'on se trouve
pwd
# Commande pour nous rendre dans le dossier fasta
cd fasta
# Afficher le chemin absolu où l'on se trouve
pwd
/shared/bank/homo_sapiens/hg19/star-2.7.5a
/shared/bank/homo_sapiens/hg19
/shared/bank/homo_sapiens/hg19/fasta

Remontons cette fois de deux crans et descendons de suite dans le dossier hg38. Vérifiez que vous êtes au bon endroit ensuite. Vous devez n'avoir que deux lignes de commandes.

In [7]:
# Commande pour remonter de deux crans et resdescendre dans le dossier hg38 
cd ../../hg38
# Afficher le chemin absolu où l'on se trouve
pwd
/shared/bank/homo_sapiens/hg38

Les ../.. peuvent être enchainés autant que nécessaire et être suivis de chemin relatif.

Tips pour gagner du temps¶

Ecrire un chemin complet est fastidieux et source d'erreur.

Si vous voulez gagner du temps et épater vos proches, vous pouvez utiliser l'autocomplétion !

C'est simple, double taper sur la touche tabulation et les noms de dossier possible s'afficherons. Pour "filtrer" un peu, vous pouvez taper la première lettre du nom du dossier de destination.

Ne soyez pas étonné de nous entendre répéter toute la semaine <TAB><TAB>, c'est le signal pour penser à tabuler et gagner de précieuses secondes.

Dans le bloc ci-dessous nous vous avons écrit le début du chemin, à vous de vous rendre dans le dernier dossier schizosaccharomyces_pombe sans taper plus de deux lettres !

In [8]:
# Commande pour nous rendre dans le dossier /shared/bank/schizosaccharomyces_pombe
cd /shared/bank/

En ajoutant simplement le s et éventuellement le c, vous attérissez dans le bon dossier.

Visualiser l'arbre¶

S'y retrouver avec tous ces dossiers n'est pas évident. Heureusement deux commandes importantes nous permettrons de visualiser un peu mieux le contenu des dossiers.

1. Voir tout l'arbre¶

L'ulisation du mot "arbre" pour décrire notre entremêlement de dossiers n'était pas anodine. En effet, la commande pour visualiser tout ça est tree. Elle s'accompagne de plusieurs options.

(Pour rappel quelle est la commande permettant d'afficher l'aide d'une commande ?)

Nous ne l'exécuterons pas car sa sortie est trop verbeuse. Vous aurez l'occasion de tester par vous même plus tard. Pour le moment, essayons l'option -d.

Elle permet de ne lister que les dossiers.

In [9]:
# On retourne dans le dossier d'homo sapiens
cd ../homo_sapiens/

Ecrivez et executez la commande

In [10]:
# Afficher l'arborescence
tree -d
.
├── GRCh37
│   ├── bowtie2
│   ├── bwa
│   ├── fasta
│   ├── gff
│   ├── picard
│   ├── snpeff
│   ├── star -> star-2.7.2b
│   ├── star-2.6
│   ├── star-2.7.2b
│   └── star-2.7.5a
├── GRCh38
│   ├── bwa
│   ├── fasta
│   ├── gff3
│   ├── gnomad
│   │   ├── 2.1
│   │   │   ├── exomes
│   │   │   └── genomes
│   │   └── 3.0
│   │       └── genomes
│   ├── gtf
│   ├── star -> star-2.6.1a
│   ├── star-2.6.1a
│   ├── star-2.7.5a
│   └── trinity
│       ├── __chkpts
│       └── ref_genome.fa.star.idx
├── GRCh38.p14
│   ├── Ensembl_110
│   │   ├── fasta
│   │   ├── gff3
│   │   ├── gtf
│   │   └── indexes
│   │       ├── bowtie2-2.5.1
│   │       ├── star-2.7.10b
│   │       └── star-2.7.11a
│   ├── RefSeq_2023_10
│   │   ├── fasta
│   │   ├── gff
│   │   ├── gtf
│   │   └── indexes
│   ├── latest_ensembl -> Ensembl_110
│   └── latest_refseq -> RefSeq_2023_10
├── hg19
│   ├── bowtie
│   ├── bowtie2
│   ├── bwa
│   ├── fasta
│   ├── gtf
│   ├── hisat2
│   ├── picard
│   ├── snpeff
│   │   └── hg19
│   ├── star-2.6
│   ├── star-2.7.2b
│   └── star-2.7.5a
├── hg38
│   ├── bmtool
│   ├── bowtie2
│   ├── fasta
│   ├── hisat2
│   ├── srprism
│   ├── star-2.6
│   ├── star-2.7.2b
│   └── star-2.7.5a
└── latest_genome -> GRCh38.p14

67 directories

2. Connaître le contenu de notre dossier¶

C'est sûrement la seconde commande la plus utile à retenir : ls

Elle permet tout simplement de lister le contenu d'un dossier.

Voici ses options les plus utiles :

  • -l : long/lot = Donne beaucoup d'informations sur les fichiers.
  • -a : all = Montre tous les fichiers, y compris ceux cachés.
  • -t : time = Trie par date de modifications.
  • -h : human-readable = Affiche la taille des fichiers en unités lisibles par l'humain.
  • -r : reverse = Inverse l'ordre de tri.

On peut combiner les options, par exemple, pour afficher beaucoup d'informations et tous les fichiers : ls -l -a ou directement ls -la

N.B. : On oublie pas l'espace entre la commande et ses options !¶

Vous pouvez essayer toutes ces options dans le dossier GRCh37/fasta/. Déplacez vous dans le dossier dans le bloc de code ci-dessous :

In [11]:
# Commande pour se déplacer dans le dossier GRCh37/fasta/
cd GRCh37/fasta/

Listez absolument tous les fichiers présents en affichant un maximum d'information sur les fichiers, la taille des fichiers devant être lisible par l'humain.

In [12]:
# Lister tout le contenu du répertoire avec toutes les infos et lisible par l'humain 
ls -alh
total 39G
drwxrwxr-x  2 glecorguille bank_admin 4.0K Sep 15  2020 .
drwxrwxr-x 11 glecorguille bank_admin 4.0K Sep 15  2020 ..
-rwxrwxr-x  1 glecorguille bank_admin 3.0G Oct 31  2018 Homo_sapiens.GRCh37.dna.primary_assembly.fa
-rwxrwxr-x  1 glecorguille bank_admin 6.5K Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.amb
-rwxrwxr-x  1 glecorguille bank_admin 7.4K Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.ann
-rwxrwxr-x  1 glecorguille bank_admin 2.9G Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.bwt
-rwxrwxr-x  1 glecorguille bank_admin 2.7K Oct 31  2018 Homo_sapiens.GRCh37.dna.primary_assembly.fa.fai
-rwxrwxr-x  1 glecorguille bank_admin 740M Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.pac
-rwxrwxr-x  1 glecorguille bank_admin  119 Oct 31  2018 Homo_sapiens.GRCh37.dna.primary_assembly.fa.readme
-rwxrwxr-x  1 glecorguille bank_admin 1.5G Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.sa
-rwxrwxr-x  1 glecorguille bank_admin  31G Oct 30  2018 Homo_sapiens.GRCh37.dna.toplevel.fa
-rwxrwxr-x  1 glecorguille bank_admin  12K Oct 30  2018 Homo_sapiens.GRCh37.dna.toplevel.fa.fai
-rwxrwxr-x  1 glecorguille bank_admin  106 Oct 30  2018 Homo_sapiens.GRCh37.dna.toplevel.fa.readme

Listez maintenant les fichiers non cachés avec toutes leurs informations en les triant du plus ancien au plus récent.

In [13]:
# Lister le contenu du répertoire avec toutes les infos et trié par date de modification du plus ancien au plus récent 
ls -ltr
total 40187756
-rwxrwxr-x 1 glecorguille bank_admin         106 Oct 30  2018 Homo_sapiens.GRCh37.dna.toplevel.fa.readme
-rwxrwxr-x 1 glecorguille bank_admin 32570478447 Oct 30  2018 Homo_sapiens.GRCh37.dna.toplevel.fa
-rwxrwxr-x 1 glecorguille bank_admin       11646 Oct 30  2018 Homo_sapiens.GRCh37.dna.toplevel.fa.fai
-rwxrwxr-x 1 glecorguille bank_admin  3153507220 Oct 31  2018 Homo_sapiens.GRCh37.dna.primary_assembly.fa
-rwxrwxr-x 1 glecorguille bank_admin         119 Oct 31  2018 Homo_sapiens.GRCh37.dna.primary_assembly.fa.readme
-rwxrwxr-x 1 glecorguille bank_admin        2743 Oct 31  2018 Homo_sapiens.GRCh37.dna.primary_assembly.fa.fai
-rwxrwxr-x 1 glecorguille bank_admin  3101804844 Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.bwt
-rwxrwxr-x 1 glecorguille bank_admin   775451186 Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.pac
-rwxrwxr-x 1 glecorguille bank_admin        7503 Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.ann
-rwxrwxr-x 1 glecorguille bank_admin        6577 Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.amb
-rwxrwxr-x 1 glecorguille bank_admin  1550902424 Sep 15  2020 Homo_sapiens.GRCh37.dna.primary_assembly.fa.sa