Commandes de base¶

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¶

Nous savons dorénavant ce qu'est le bash, comment trouver de l'aide et comment nous déplacer dans l'arborescence.

C'est donc le moment d'apprendre comment créer des fichiers, des dossiers, les déplacer etc...

Rappel avant toute chose : Où stocker vos fichiers/dossiers ?¶

Attention, cela peut varier selon les plateformes. Renseignez-vous bien en amont !¶

Sur votre nouveau cluster préféré de l'IFB :

❌ Là où vous jurez solennellement de ne pas faire d'analyse et de ne pas y stocker de fichiers volumineux

C'est votre “maison”, représentée par ~ (e.g. /shared/home/votre_id)

  • Ce dossier est très limité en stockage (Quota de 5Go)
  • Utiliser la commande cd (sans argument ou avec ~) pour vous rendre dans ce dossier

✅ Votre dossier projet (e.g /shared/projects/mon_projet)

  • C’est LE dossier dans lequel vous avez téléverser vos données
  • C’est LE dossier pour lancer vos analyses …
  • C'est LE dossier pour suivre vos TP

Créer de nouveaux dossiers¶

Maintenant que nous savons où écrire, nous allons essayer de créer un nouveau dossier.

La commande est simple : mkdir nom_du_dossier (make directory)

Vérifiez que vous êtes dans votre dossier projet, sous-dossiers cours_commun/TP_linux

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

Créez le dossier chip-seq

In [2]:
# Création du dossier chip-seq
mkdir chip-seq

Vérifiez le contenu de votre dossier pour voir si le nouveau dossier chip-seq est bien apparu.

Tips : Si vous ajoutez l'option -p à votre commande, les dossiers apparaissent avec un / à la fin, les rendant plus facilement identifiable !¶
In [3]:
# Contenu du dossier
ls -l
total 2192
-rw-rw----+ 1 pfrancois pfrancois    452 Nov  5 15:02 00_jupyter.ipynb
-rw-rw----+ 1 pfrancois pfrancois 366388 Nov 13 15:14 01_bash_et_la_ligne_de_commande.correction.ipynb
-rw-rw----+ 1 pfrancois pfrancois 365708 Nov 12 15:36 01_bash_et_la_ligne_de_commande.ipynb
-rw-rw----+ 1 pfrancois pfrancois  26567 Nov 12 15:37 02_demander_de_l_aide.correction.ipynb
-rw-rw----+ 1 pfrancois pfrancois   8591 Nov 12 15:37 02_demander_de_l_aide.ipynb
-rw-rw----+ 1 pfrancois pfrancois 640821 Nov 12 16:01 03_arborescence.correction.ipynb
-rw-rw----+ 1 pfrancois pfrancois 634091 Nov 12 16:01 03_arborescence.ipynb
-rw-rw----+ 1 pfrancois pfrancois  26232 Nov 13 15:20 04_commandes_de_base.correction.ipynb
-rw-rw----+ 1 pfrancois pfrancois  21367 Nov 12 17:12 04_commandes_de_base.ipynb
-rw-rw----+ 1 pfrancois pfrancois  94176 Nov 13 21:20 05_manipuler_un_fichier.ipynb
-rw-rw----+ 1 pfrancois pfrancois   1427 Nov 13 15:38 05_short.bed
-rw-rw----+ 1 pfrancois pfrancois    520 Nov 12 12:22 06_controle_qualite.ipynb
-rw-rw----+ 1 pfrancois pfrancois    509 Nov 12 12:22 07_mapping.ipynb
drwxrwx---+ 2 pfrancois pfrancois   4096 Nov 13 21:21 chip-seq

S'il est possible de créer un dossier vide, il est possible de le supprimer !

La commande est presque la même : rmdir nom_du_dossier (remove directory)

Essayons de supprimer le dossier chip-seq pour créer un nouveau dossier rna-seq (vous devez obtenir deux lignes de commande)

In [4]:
# Suppression du dossier vide
rmdir chip-seq
# Création du nouveau dossier
mkdir rna-seq

Afin d'organiser votre dossier vous vous déplacez dedans

In [5]:
# Déplacement dans le nouveau dossier créé
cd rna-seq

Vous créez un dossier ref et un fasta (en une seule ligne)

In [6]:
# Création de deux dossiers d'un coup
mkdir ref fasta

Vérifiez que les dossiers se sont bien créés

In [7]:
# Liste du contenu
ls -l
total 8
drwxrwx---+ 2 pfrancois pfrancois 4096 Nov 13 21:21 fasta
drwxrwx---+ 2 pfrancois pfrancois 4096 Nov 13 21:21 ref

Parfait, maintenant remontons d'un cran dans l'arborescence !

In [8]:
# Déplacement un cran en arrière
cd ..

Sans changer d'emplacement, vous pouvez créer un dossier et l'ensemble de ses sous-dossiers. Pour cela, on utilise l'option -p et on écrit le chemin que l'on souhaite créer.

Essayons donc de créer le dossier output et à l'intérieur le sous-dossier bam, sans utiliser la commande cd !

In [9]:
# Création d'une succession de dossiers imbriqués
mkdir -p rna-seq/output/bam

Quelle commande utiliser pour vérifier notre arborescence complète ?

In [10]:
# Afficher l'arborescence
tree
.
├── 00_jupyter.ipynb
├── 01_bash_et_la_ligne_de_commande.correction.ipynb
├── 01_bash_et_la_ligne_de_commande.ipynb
├── 02_demander_de_l_aide.correction.ipynb
├── 02_demander_de_l_aide.ipynb
├── 03_arborescence.correction.ipynb
├── 03_arborescence.ipynb
├── 04_commandes_de_base.correction.ipynb
├── 04_commandes_de_base.ipynb
├── 05_manipuler_un_fichier.ipynb
├── 05_short.bed
├── 06_controle_qualite.ipynb
├── 07_mapping.ipynb
└── rna-seq
    ├── fasta
    ├── output
    │   └── bam
    └── ref

5 directories, 13 files

Copier, coller et supprimer des fichiers ou dossiers¶

ATTENTION : La ligne de commande permet beaucoup de chose et est beaucoup moins protégée que le clique-bouton de Windows.¶
Le shell ne vous demandera pas 20 fois si vous êtes sûr.e.s de vouloir écraser un fichier, il le fera.¶
Ainsi, la plus grande prudence est de mise !¶

Copier/coller un fichier¶

cp est l'équivalent du copier-coller.

Elle prend obligatoirement deux arguments : cp fichier_source destination

La destination peut être le nouveau nom de notre fichier si nous ne souhaitons pas garder son nom d'origine. Cela permet donc de copier-coller-renommer, en une seule ligne de commande !

Avec l'aide de l'option -r vous pouvez copier un dossier et tout son contenu au lieu d'un simple fichier.

Essayons ! Assurez vous de savoir où vous êtes. Puis copier le fichier /shared/bank/homo_sapiens/hg38/fasta/hg38.fa.fai dans le sous-dossier ref.

In [11]:
# Savoir où l'on est
pwd
# Copier le fichier uniquement dans le dossier rna-seq/ref
cp /shared/bank/homo_sapiens/hg38/fasta/hg38.fa.fai rna-seq/ref/
/shared/ifbstor1/projects/2422_ebaii_n1/cours_commun/TP_linux

Affichons un arbre de notre dossier rna-seq pour nous assurer que tout est bon.

In [12]:
# Afficher l'arbre du dossier rna-seq uniquement
tree rna-seq
rna-seq
├── fasta
├── output
│   └── bam
└── ref
    └── hg38.fa.fai

4 directories, 1 file

Couper/coller un fichier¶

mv est l'équivalent de couper/coller mais aussi de renommer.

Cette commande a donc deux usages :

  • Renommer : mv fichier_à_renommer nouveau_nom

  • Couper/coller : mv fichier_source destination

mv est une commande puissante, elle peut renommer un dossier sans option, faites donc bien attention.

Testons : il faut que vous déplaciez le fichier hg38.fa.fai dans le dossier output.

In [13]:
# Déplacer le fichier
mv rna-seq/ref/hg38.fa.fai rna-seq/output/

Un petit arbre pour vérifier

In [14]:
# Arbre du dossier rna-seq
tree rna-seq
rna-seq
├── fasta
├── output
│   ├── bam
│   └── hg38.fa.fai
└── ref

4 directories, 1 file

Et si depuis le début nous faisions fausse route ? Le dossier rna-seq devait bien s'appeler chip-seq ! Renommez-le.

In [15]:
# Renommer le dossier rna-seq en chip-seq
mv rna-seq chip-seq

Listons le contenu du dossier où nous sommes pour vérifier que tout est bon.

In [16]:
# Lister le contenu
ls
00_jupyter.ipynb
01_bash_et_la_ligne_de_commande.correction.ipynb
01_bash_et_la_ligne_de_commande.ipynb
02_demander_de_l_aide.correction.ipynb
02_demander_de_l_aide.ipynb
03_arborescence.correction.ipynb
03_arborescence.ipynb
04_commandes_de_base.correction.ipynb
04_commandes_de_base.ipynb
05_manipuler_un_fichier.ipynb
05_short.bed
06_controle_qualite.ipynb
07_mapping.ipynb
chip-seq

Supprimer un fichier ou dossier non vide¶

C'est sans nul doute la commande la plus traîte qui a fait pleurer au moins une fois chacun d'entre nous.

rm permet de supprimer un fichier et accompagnée de son option -r elle supprimera même un dossier.

Nous avons donc :

rm fichier pour la suppression d'un fichier

rm -r dossier pour la suppression (suspens...) d'un dossier !

Elle ne vous demandera pas avant suppression si vous êtes VRAIIIIMENT sûrs de vous. Mieux vaux donc relire deux fois le nom du fichier que l'on est sur le point de supprimer !

Tips : Vous pouvez faire un ls du fichier que vous souhaitez supprimer afin de vous assurer que c'est le bon. Ensuite vous modifiez simplement le ls en rm¶

Maintenant que vous êtes mis en garde, supprimons ce fichier hg38.fa.fai qui ne nous sert finalement pas...

In [17]:
# Supprimer le fichier
rm chip-seq/output/hg38.fa.fai

Vérifions une dernière fois que tout est bon (avec un arbre par exemple ?)

In [18]:
# Tracer l'arbre du dossier chip-seq
tree chip-seq
chip-seq
├── fasta
├── output
│   └── bam
└── ref

4 directories, 0 files