Petit guide de bioinfo

© Groupe de Travail: Formation Interne BioInfo

Home page UNIX Assemblage Alignement de séquences

Le guide de survie unix

L'objet de ce cours n'est bien évidemment pas d'expliquer dans le détail toutes les commandes unix... ce serait bien trop long, et puis il y a d'excellents livres ou d'excellents sites là-dessus. Les programmes que nous présentons dans ce cours de bioinformatique fonctionnent tous sous unix... il vous faudra donc connaître un minimum de commandes, simplement pour "survivre" dans votre environnement informatique, avant même de travailler.

Avant de démarrer...

Il vous faudra un fichier texte afin d'essayer les commandes suivantes. Afin de vous faire la main, nous vous proposons d'utiliser la swissprot au format fasta; vous la trouverez ici.




Le sommaire

Unix, ça sert à quoi ?

Unix est un système d'exploitation. Windows est un autre système d'exploitation. Donc unix ça joue le même rôle que Windows... mais ça le joue différemment:

Travailler à distance

Vous êtes à Toulouse, mais manque de bol l'ordinateur que vous devez utiliser est à ... New York. Pas simple sous Windows... sous unix, ce n'est pas plus difficile que si votre ordi était sur votre bureau. Il vous faudra juste:

La ligne de commandes

Vous avez probablement l'habitude de cliquer pour activer un programme, puis de recliquer sur un menu pour contrôler ce programme, etc.... vous utilisez plus souvent la souris que le clavier. Vous pouvez parfaitement travailler de cette manière sous Unix, tout au moins avec les applications qui le permettent. Il faut utiliser un interface graphique. Ce cours ne parle pas d'interfaces graphiques: ce n'est déjà plus de la survie... et après tout, l'intérêt de l'interface graphique est qu'on peut travailler en auto-apprentissage (en principe...). Nous ne parlerons ici que de la ligne de commande unix. Certains disent que la ligne de commande constitue un interface "affreusement pas convivial"... peut-être; il faut reconnaître que la ligne de commande nécessite un certain apprentissage, rebutant pour certains. Oui mais une fois l'étape d'apprentissage franchie, vous vous apercevrez que vous travaillez bien plus efficacement avec la ligne de commande qu'avec l'interface graphique: plus vous travailler, plus ça va vite. Pour certains programmes en tous cas, la ligne de commande est un outil de travail infiniment plus agréable et performant que la souris.

Scripts

Puisque nous allons travailler avec des commandes (c'est-à-dire que nous allons taper des mots), rien ne nous empêche de mettre ces mots à la suite les uns des autres dans un fichier: cela s'appelle un script, cela permet d'automatiser des tâches, et tout doucement, sans même vous en rendre compte... vous devenez un programmeur !




Unix, c'est...

...Toujours pareil ...

Quelque soit le processeur, quelque soit le constructeur, à partir du moment où la machine tourne sous Unix, on se retrouvera en terrain connu. Les commandes seront presque les mêmes, que la machine soit vendue par IBM, SUN, Silicon Graphics, que votre ordinateur soit la machine la plus puissante du monde ou le vieux P.C. trouvé dans une poubelle sur lequel vous avez installé linux, si vous avez lu ce guide, vous ne serez pas perdu.

...mais toujours différent !

Tout est dans le presque... en effet, il y aura souvent de petites différences dans la manière d'utiliser les commandes, certaines commandes existent sur une machine et pas sur une autre, etc. Il est donc important de connaître les commandes standard d'unix, celles que l'on retrouvera partout. Il est aussi important de connaître les commandes qui vous permettront de lire la documentation, pour savoir comment on fait telle ou telle chose sur une machine particulière.

Unix, c'est...

Multitâche

Je peux lancer plusieurs programmes en même temps. Nous allons bientôt voir comment.

Multiutilisateurs

Nous somme plusieurs à nous partager la machine. en même temps, et chacun d'entre nous a l'impression d'avoir la machine pour lui tout seul.




Les premières commandes, quand on est perdu

Je ne garantis pas que tout cela marche partout, mais ce serait bien le diable si l'une des trois commandes ci-dessus au moins n'était pas fonctionnelle:

Lire le manuel

Le manuel est en principe toujours accessible:

man ls
pour lire la documentation au sujet de la commande ls.

Afficher l'aide d'une commande

Il est souvent plus rapide de lire l'aide succincte d'une commande plutôt que la documentation complète. Dans ce cas, vous pouvez essayer l'une des trois solutions ci-dessous:

ls --help
cp -h
cp

--help ou -h permet dans beaucoup de cas d'afficher l'aide en ligne, ne pas spécifier de paramètres pour une commande qui a besoin de paramètres peut éventuellement produire le même effet.

Rechercher des informations dans le manuel:

Si vous avez oublié que la commande pour lire la liste des fichiers s'appelle ls, les astuces ci-dessus ne vous seront d'aucune utilité. Par contre, vous savez qu'il s'agit d'un truc qui concerne les répertoires (directory en anglais):

apropos directory

(hé oui, parfois ces anglais arrivent à causer français !).




Vous avez dit multitâche ?

Pour lancer un programme en s'arrangeant pour que la machine vous rende la main tout en exécutant le programme en tâche de fond, il vous faut mettre le signe & à la fin de la commande. C'est particulièrement utiler lorsqu'on travaille en environnement graphique: au lieu de cliquer sur une icône pour appeler le programme qui dessine une horloge, par exemple, ou pour ouvrir une nouvelle fenêtre terminal, vous pouvez taper:

xclock &
xterm &

Si vous lancez un programme de calcul qui prend beaucoup de temps d'exécution (quelques minutes, voire quelques jours ou quelques heures), vous pouvez également utiliser cette technique, afin de ne pas bloquer votre clavier et votre écran (ou simplement votre fenêtre en environnement graphique).


Métacaractères

Un bien grand mot pour des caractères qui sont bien utiles, car ils permettent de nombreux raccourcis. Voici les principaux:

.Répertoire courant
(relatif)
..Répertoire au-dessus
(relatif)
~Mon "home directory"
(absolu)
~duchmolLe "home directory" de duchmol
(absolu)
/Racine du système de fichiers
(absolu)
*N'importe quel suite de caractères:
peut remplacer zéro, un ou plusieurs caractères.
?N'importe quel caractère.
Attention ! N'importe lequel, mais un seul



Un système de fichiers est un arbre

                                  |
       -------------------------------------------------------
      /                           |                           \
     bin                         usr                         home
                                  |                            |
                                  |                            |
                                local                      formation
                                /                              |
                               /                               |
                             bin                               |
                                                               |
                               --------------------------------
                              /       |      |       |         |
                             /        |      |       |         | 
                          anemone   rose   aster   bleuet   narcisse

Le chemin d'accès au répertoire bleuet est:


/home/formation/bleuet



Chemins d'accès aux fichiers

Un chemin (path en anglais) de fichier est l'ensemble des répertoires et sous-répertoires permettant d'accéder à ce fichier. Le chemin peut être absolu ou relatif:

Un chemin de fichier absolu:

C'est un chemin qui commence par le caractère /: on précise le point de départ, soit la racine du système de fichiers.
ATTENTION: sous Windows on précise avant le chemin une lettre (C:, D/, ...) pour dire de quel disque on parle. Sous Unix, cette lettre est absente: lorsque vous passez d'un répertoire à l'autre, peut-être changez-vous de disque... mais vous ne vous en rendez pas compte. Cela permet de masquer l'architecture physique (les disques) de la machine sous une architecture logique, unique. C'est très pratique: lorsqu'un disque est plein et qu'on en rajoute un autre, les applications ne s'en rendent même pas compte !!!

/home/formation/rose/tmp/fichier

Un chemin de fichier relatif:

C'est un chemin relatif... par rapport au répertoire courant. Si je change de répertoire, le chemin correspondra à un autre nom de fichier; dans l'exemple ci-dessous, on supposera que le répertoire courant est /home/formation/rose/tmp/:

../../tulipe/tmp/fichier

signifie:

Bien sûr, comme lorsque vous indiquez son chemin à quelqu'un (première à gauche, première à droite etc.) ça ne marchera qu'à partir d'un certain endroit (d'un certain répertoire) dans le système de fichiers.
Par contre, si je change de place toute une hiérarchie, par exemple si je fais passer l'ensemble du répertoire formation de /home vers /maison le chemin absolu de tous les fichiers de la hiérarchie sera modifié, alors que pour aller sur tulipe à partir de rose, le chemin relatif indiqué ci-dessus reste toujours valide. On peut "jongler" avec les chemins aboslus et reatifs, afin que ces chemins restent le plus possible inchangés, quqoi'uil puisse arriver.




Enchaîner les commandes comme on joue aux legos

Unix fournit un ensemble de commandes élémentaires (des "briques" de legos); toutes ces commandes ont tout ce qu'il faut pour pouvoir "s'assembler" entre elles:
>Rediriger la sortie vers un fichier.
>>Rediriger la sortie vers un fichier en mode ajout,
sans supprimer les données existant déjà
<Rediriger l'entrée d'une commande
(afin de lui faire lire un fichier plutôt que le clavier).
|Relier deux commandes entre elles
(la sortie de la première est envoyée sur l'entrée de la seconde).



Tout savoir sur mes fichiers

Quelques commandes permettant de lire le contenu des répertoires et de savoir la taille et la date des fichiers;

Liste des fichiers

Pour faire la liste des fichiers se trouvant dans le répertoire courant (chemin relatif):

ls

Quelle est la taille du fichier appelé elephant ?

La commande suivant donne la taille d'un fichier, on nomme le fichier par son chemin absolu:

ls -l /home/formation/rose/elephant

Lister d'abord les fichiers les plus récents

La commande suivante liste les répertoires d1 et d2 se trouvant dans le répertoire courant; les fichiers se trouvant dans ces répertoires sont listés également, la taille de chaque fichier est donnée, le tout en commançant par le fichier modifié (ou créé) le plus récemment.

ls -lt d1 d2

Lister aussi les fichiers cachés

Les fichiers ou les répertoires "cachés" sous unix sont déclarés très simplement: il suffit que le nom de fichier commence par le caractère . pour que le fichier n'apparaisse pas dans la commande ls, ou dans de nombreuses applications. Ces fichiers sont le plus souvent des fichiers de configuration ou de démarrage d'une application. Il est toutefois possible de les voir en utilisant un commutateur particulier de la commande ls; la commande suivante permet de lister tous les fichiers et répertoires cachés se trouvant dans mon home directory:

ls -lat ~

Combien de lignes dans ce fichier ?

Il est souvent utile de compter le nombre de lignes (ou de mots) d'un fichier texte: cela donne une meilleure indication de sa taille que le nombre de caractères. Très simple grâce à la commande wc:

wc -l elephant



Se promener dans le système de fichiers

Créer un nouveau répertoire:

mkdir nouveau_dossier

NOTE Sous Windows ou sous macOS, on l'habitude de mettre des espaces dans les noms de fichiers, ainsi que des caractères accentués, etc. Il est vrai que cela est bien pratique, mais cela pose quelques problèmes (y compris sous ces systèmes d'exploitation). Sous Unix, l'espace est à prohiber car il signifie "séparation" entre plusieurs mots dans une commande; on remplace généralement l'espace par le caractère souligné _. il est préférable également d'éviter les caractères accentués, car ils peuvent poser quelques soucis, en fonction du jeu de caractère utilisé sur la machine (l'informatique a été inventée par des anglais, c'est une malédiction dont on n'arrive pas encore à se défaire. -;)

mkdir nouveau_repertoire

Aller dans le répertoire:

La commande suivante permet de faire en sorte que nouveau_repertoire soit le répertoire courant.

cd nouveau_repertoire

Remonter:

Pour retourner dans le répertoire juste au-dessus, taper:

cd ..

Où j'en suis, maintenant ?

Pour savoir quel est mon répertoire courant:

pwd



Copier fichiers et répertoires

Copier un fichier:

La commande suivante copie le fichier appelé source dans un autre fichier, appelé destination. Les deux fichiers se trouvent dans le répertoire courant.

cp source destination

Copier un ensemble de fichiers dans un répertoire:

En une seule commande, je peux copier une famille de fichiers dans un répertoire: la commande suivante copie les fichiers src1, src2, src3 ainsi que tous les fichiers commançant par f dans le répertoire nouveau_repertoire

cp src1 src2 src3 f* nouveau_repertoire

Copier toute une arborescence:

copier tout (dossiers et fichiers) ce qui se trouve dans le répertoire vieux_dossier dans un nouveau répertoire, appelé nouveau_dossier:

cp -r vieux_dossier nouveau_dossier



Bougez vos fichiers !

Changer le nom d'un fichier ou d'un répertoire:

mv fichier fichier_old
mv nouveau_dossier d1

Changer l'emplacement (le répertoire) d'un fichier:

La commande suivant déplace tous les fichiers dont le nom commence par src pour les mettre dans le répertoire d1 (il est par ailleurs fort possible que d1 soit sur un autre disque... voire sur une autre machine, si un disque réseau a été monté).
ATTENTION d1 est obligatoirement un dossier, sinon tous les fichiers src* seront renommés chacun son tour en d1... et à la fin il ne vous reste plus qu'un fichier. Efficace pour perdre des données...

mv src* d1



Faites du ménage (pas trop)

Supprimer plusieurs fichiers:

La commande suivante supprime tous les fichiers dont le nom commence par src (Dangereux à cause du caractère *)

rm src*

Supprimer une arborescence:

La commande suivante supprime tout ce qui se trouve en-dessous du répertoire d1, y compris celui-ci: c'est ce qu'on appelle de l'élagage d'arbres. (Dangereux à cause du -r)

rm -r d1

Supprimer un dossier vide:

La commande suivante supprimer le répertoire d2, à condition qu'il n'y ait rien en-dessous: moins efficace que la commande précédente, mais aussi bien moins dangereux...

rmdir d2
ATTENTION, IL N'Y A PAS DE POUBELLE

Toutes ces commandes font très bien leur travail, mais il n'est pas possible de revenir en arrière. (sinon en relisant les sauvegardes, bien entendu). Alors, attention à ce que vous faites.

Restons prudents

Les commandes qui précèdent sont dangereuses, essentiellement parce quelorsqu'on utilise le caractère * ou le commutateur -r, on dit à la machine de travailler (en l'occurrence le travail est la suppression) sur tout ce qu'elle va trouver: mais cela reste vague, savons-nous toujours parfaitement ce que recouvre ce "tout" ? D'où la recommandation suivante:

avant  rm -r d*

je tape toujours  ls -l d*

ls vous permet de visualiser tout ce qui sera supprimé par rm.




Partager... ou garder pour soi

Unix est un système multi-utilisateurs. Cela veut dire que plusieurs personnes auront accès à la machine: se pose alors la question de savoir si les fichiers sur lesquels vous travaillez pourront être lus, ou modifiés, par d'autres personnes que vous ? Et tout d'abord, comment savoir à qui appartient tel ou tel fichier ou répertoire ?
La réponse est simple: il suffit d'utiliser la commande ls -l, que nous avons déjà vue plus haut:

ls -l /home/formation

total 10
drwxr-x---    8 anemone  formatio      570 oct 10 12:28 anemone/
drwxr-x---    8 aster    formatio      515 jun 11  2002 aster/
drwxr-x---    8 bleuet   formatio      617 oct 10 11:53 bleuet/
drwxr-x---   11 iris     formatio      659 oct 10 12:26 iris/
drwxr-x---    8 muguet   formatio      515 jun 11  2002 muguet/
drwxr-x---   11 narcisse formatio      750 oct 10 12:10 narcisse/
drwxr-x---   10 pensee   formatio      759 oct 10 12:27 pensee/
drwxr-x---   11 rose     formatio      640 jun 12  2002 rose/
drwxr-x---   11 tulipe   formatio      754 oct 10 12:28 tulipe/
drwxr-x---   11 violette formatio      886 oct 10 12:28 violette/

Le répertoire anemone appartient à l'utilisateur anemone et au groupe d'uitlisateurs formation (la commande ls tronque le nom de groupe et d'utilisateurs lorsque ceux-ci sont trop longs pour être complètement affichés). Les codex un peu bizarres de début de ligne permettent de savoir si ces répertoires (ou ces fichiers) peuvent être partagés, et de quelle manière:

Les permissions d'accès dans le cas d'un fichier:

-rwxr-x---

Indique quel type d'objet est listé: ici un fichier

-rwxr-x---

Indique les droits du propriétaire du fichier: ici, le propriétaire a le droit de lire le fichier (read), de le modifier (write), de l'exécuter s'il s'agit d'un programme ou d'un script.

-rwxr-x---

Indique les droits des membres du groupe auquel appartient le fichier: ici, ils ont le droit de lire le fichier, ou encore d'exécuter le programme associé, mais en aucun cas ils n'ont le droit de modifier son contenu. ATTENTION Le fichier est protégé contre toute modification, il n'est pas protégé contre la suppression: pour protéger un fichier contre la suppression, il faut s'assurer que les droits d'accès du répertoire dans lequel il se trouve sont correctement fixés (cf. ci-dessous).

-rwxr-x---

Indique les droits des "autres": les utilisateurs qui ne sont ni propriétaires du fichier, ni membres du groupe auquel appartient le fichier. Ici, c'est bien simple: ils n'ont aucun droit.

Les permissions d'accès dans le cas d'un répertoire:

drwxr-x---

Indique quel type d'objet est listé: ici un répertoire (directory)

drwxr-x---

Indique les droits du propriétaire du fichier: ici, le propriétaire a le droit de lire le contenu du répertoire (c'est-à-dire d'utiliser la commande ls dessus), de créer de nouveaux fichiers ou de supprimer des fichiers existants dans ce répertoire (write), de faire un cd dedans).

drwxr-x---

Indique les droits des membres du groupe du fichier: ici, ils ont le droit d'utiliser la commande ls sur le répertoire, ou encore de faire un cd afin d'aller dans ce répertoire. Mais ils n'ont pas le droit de créer un nouveau fichier, ni de supprimer un fichier existant dans ce répertoire: les fichiers se trouvant dans le répertoire sont protégés contre toute suppression par un membre du groupe.

drwxr-x---

Indique les droits des "autres": les utilisateurs qui ne sont ni propriétaires du fichier, ni membres du groupe auquel appartient le fichier. Ici, c'est bien simple: ils n'ont aucun droit.




Modifier les permissions d'accès

Comment modifier les permissions d'accès de mes fichiers, afin de partager l'information... ou au contraire d'empêcher les autres utilisateurs de mettre le nez dans mes affaires ? Les commandes suivantes fontionneront pour tous les fichiers ou répertoires qui vous appartiennent.

Un fichier pour moi tout seul

chmod go= fichier_perso

Les membres de mon groupe, ainsi que tous les autres (others) n'ont aucun droit sur fichier_perso.

Les gens du groupe ont le droit de me lire, mais c'est tout

chmod g=r fichier_passiperso

Les utilisateurs appartenant au groupe de ce fichier pourront lire (read) son contenu. Mais ils ne peuvent pas le modifier, ni l'exécuter.

Personne ne peut le modifier

chmod a-w fichier_important

La permission w (write) a été retirée pour tous (all) les utilisateurs: le fichier est donc protégé, en ce sens que personne (pas même son propriétaire) ne peut modifier son contenu.

Moi, je peux le modifier

chmod u+w fichier_important

La permission w (write) a été ajoutée pour l'utilisateur propriétaire du fichier.

Aucune restriction d'accès

chmod a=rwx fichier_commun

Tout le monde (all) peut faire n'importe quoi (read, write, execute) avec ce fichier: attention, cette situation est considérée comme très dangereuse, car on ne peut plus du tout garantir l'intégrité du fichier.

Protéger tous les fichiers d'une hiérarchie

chmod -R a-w dossier_important

La permission w (write) a été retirée pour tous les utilisateurs (all), sur tous les fichiers et répertoires (de manière Récursive) qui se trouvent en-dessous de dossier_important, y compris celui-ci. Il sera alors impossible de modifier tout fichier de cette hiérarchie, mais aussi d'ajouter ou de supprimer un fichier, grâce à la protection sur les répertoires.




Compresser, décompresser

Chaque fichier peut être compressé ou décompressé. Le tableau suivant indique les différentes solutions, en allant de la méthode la moins efficace... mais la plus standard, à la méthode la plus efficace... mais la moins standard: ce critère de compatibilité est important si vous risquez de travailler sur plusieurs machines différentes: si vous voulez être sûr de toujours pouvoir les relire, il faut utiliser la méthode la plus standard.

CommandeNom du fichier produitCommentaire
compress fichier
fichier.Z

Compatibilité totale: existe sur toutes les machines unix

compress -d fichier.Z
fichier
uncompress fichier.Z
fichier

uncompress est un raccourci pour compress -d


gzip sprot.fas
sprot.fas.gz

Plus efficace que compress, gzip n'est pas toujours installé par défaut. Cependant, il est souvent présent car on trouve beaucoup de fichiers .gz en téléchargement sur internet.

gzip --fast sprot.fas
sprot.fas.gz

--fast produit un taux de compression relativement faible, mais rapide.

gzip --best sprot.fas
sprot.fas.gz

--best produit un taux de compression important, mais ça dure nettement plus longtemps...

gzip -d sprot.fas.gz
sprot.fas

gunzip est un raccourci pour gzip -d

gunzip fichier.gz
fichier

bzip2 fichier
fichier.bz2

Encore plus efficace que gzip, bzip2 est un programme assez récent: il est donc moins souvent installé sur la machine. On trouve de plus en plus de fichiers .bz sur le net.

bzip2 -d fichier.bz2
fichier
bunzip2 fichier.bz2
fichier

bunzip2 est un raccourci pour bzip2 -d




Tarer - détarer

Transformer une hiérarchie en fichier

tar cvf dossier.tar dossier

Tous les fichiers, sous-répertoires etc. se trouvant en-dessous de dossier sont incorporés au fichier dossier.tar, en respectant l'ensemble de la hiérarchie. Attention toutefois, aucune compression n'est activée par défaut.

Lire le contenu du fichier tar

tar tvf dossier.tar 

Extraire les fichiers de l'archive

tar xvf dossier.tar 

L'ensemble des fichiers et repéertoires qui avaient été tarrés se retrouve alors dans la même hiérarchie que la hiérarchie initiale.

En profiter pour compresser

Transformer une hiérarchie en fichier compressé

tar cvf - dossier | compress > dossier.tar.Z

Lire le contenu du fichier tar compressé

uncompress < dossier.tar.Z | tar tvf - 

Extraire les fichiers de l'archive

uncompress < dossier.tar.Z |tar xvf - 


Lire des morceaux de fichiers

Si vous manipulez des fichiers textes (mais c'est le cas général lorsqu'on travaille avec des programmes de calcul scientifique), il vous sera très simple de lire le fichier, ou lorsqu'il s'agit de gros fichiers, de lire des morceaux du fichier. Voici quelques astuces:

Lire le début (la tête) d'un fichier

head sprot.fas

Lire les 100 dernières lignes

tail -100 sprot.fas

Recopier dans un autre fichier les 150 premières lignes

head -150 sprot.fas > sprot.fas.debut

Recopier les lignes 800 à 1000 uniquement

head -1000 sprot.fas | tail -200 > sprot.fas.milieu

La première commande: head lit les 1000 premières lignes de sprot.fas; elle les envoie (grâce au symbole |) à la commandetail, qui elle va tout jeter... sauf les 200 dernières lignes. Elle recopie alors ces lignes (grâce au symbole >) dans le fichier sprot.fas.milieu. Vous n'avez pas l'impression de jouer aux legos ?

Voir le fichier grossir au fur et à mesure

tail -f fichierquigrossit

Cette commande est très utile lorsqu'on utilise un programme de calcul, dont l'exécution peut durer plusieurs heures, voire plusieurs jours: ce programme, lancé en tâche de fond (caractère &) écrit des lignes de résultats dans un "fichier log" (un journal); tail -f permet de surveiller l'écriture de ces lignes, donc l'exécution du programme de calcul. Lorsqu'on en a marre, ctrl-C permet d'arrêter l'exécution de la commande tail -f. Le programme de calcul, lui, ne s'est aperçu de rien...




Recoller les morceaux

Toujours des manipulations de fichiers textes: comment mettre bout à bout plusieurs fichiers, comment lire à l'écran un (petit) fichier, etc. La commande utilisée est cat (concatenate).

Lire à l'écran le contenu d'un ou de plusieurs fichiers

La commande cat permet d'envoyer un ou plusieurs fichiers à l'écran:

cat sprot.fas.debut

Attention, si le fichier est très gros, vous ne verrez pas grand-chose: dans ce cas, head, tail ou more (cf. ci-dessous) sont plus adaptées. Mais certains fichiers ne font que quelques lignes de long: dans ce cas, cat est très pratique.

Mettre plusieurs fichiers bout à bout

Alliée au caractère de redirection, cat permet de mettre bout à bout plusieurs fichiers:

cat debut milieu_* fin > fichier_entier

Le fichier appelé fichier_entier contient les fichers suivants, mis bout à bout:

Pas besoin d'utiliser un éditeur pour des manipulations de fichiers aussi simples... d'autant plus qu'un éditeur serait en pratique inutilisable sur des gros fichiers (plusieurs centaines de méga-octets).

Lire un fichier compressé

Cela se fait en combinant gunzip, < et |:

gunzip < f-entier.gz | cat 

Dans ce cas, f-entier.gz est simplement lu et décompressé puis passé à cat, mais le fichier reste inchangé sur le disque.




Lire des fichiers à l'écran (more ou less):

Pour lire le contenu d'un ou plusieurs fichiers textes:

more fichier
more f1 f2 f3
uncompress < f1.gz | more 

more est la commande standard, tandis que less, moins standard mais plus puissante, est préférable lorsqu'elle est disponible. Les deux commandes s'utilisent de la même manière, mais less reconnait généralement les touches de déplacement du clavier pour se déplacer dans le fichier, alors que more se pilote à l'aide de touches ordinaires: c'est moins pratiques, mais ça marche quelque soit le clavier....

Les touches de déplacement de more et less
La commandeSon effet
/human

Rechercher un mot (ici human) vers le bas

?human

Rechercher un mot (ici human) vers le haut

/n

Rechercher la prochaine occurrence (tioujours dans le même sens)

espace, entrée, ou flèches

Avancer d'une page ou d'une ligne

b ou flèches

Remonter d'une page

1G ou G

Aller à la ligne 1 (tout en haut), ou à la dernière ligne (tout en bas)

:n :p

Visualiser le fichier suivant (n) ou précédent (p), lorsqu'n a spécifié plusieurs fichiers sur la ligne de commande

q

Quitter

Lire un texte à partir d'une chaîne de caractères donnée

more +/human sprot.fas

est utilisé pour lire le fichier sprot.fas, à partir du mot human.




Y a-t-il ce que je cherche dans ce fichier ?

Les commandes suivantes permettent de rechercher un mot dans un fichier texte, sans ouvrir ce fichier: pratique pour savoir très rapidement s'il y a bien ce que je cherche dans un ou plusieurs fichiers, même très gros.

Rechercher une chaine de caractères

grep HUMAN sprot.fas

Même chose, mais on ignore la casse:

grep -i HUman sprot.fas

Combien de séquences humaines dans la swissprot ?

grep '>' sprot.fas | grep -i human | wc -l

Le premier grep sélectionne les lignes du fichier qui commencent par >. On met le caractère > entre guillemets, car sinon c'est unix lui-même qui va l'interpréter et il y aura confusion... Ces lignes sont alors passées via le | au second grep, qui ne garde que les lignes contenant le mot human. Les lignes restantes sont alors passées à wc -l, qui va tout simplement les compter.

Combien de séquences non humaines ?

grep '>' sprot.fas | grep -iv human | wc -l

Cette commande est identique à la précédente, à l'exception du switch v qui se trouve dans le second grep: il impose de ne laisser passer que les lignes n'ayant pas le mot human.




Ces deux fichiers sont-ils différents ?

Afficher les différences entre deux fichiers

diff f1.new f1.old | more

diff afficher les différences entre f1.new et f1.old. Le | more peut être utile pour visualiser commodément les différences lorsqu'elles sont nombreuses

.


Editer un fichier (vi sans peine)

Il existe sous unix une très grande quantité d'éditeurs. Les uns ont besoin d'un terminal graphique pour fonctionner (X-Windows), les autres se contentent de la fenêtre texte: ceux-ci sont plus difficiles à manipuler, mais ils ont le mérite de fonctionner partout, quelque soit le terminal utilisé. Il existe enfin un éditeur standard, que vous trouverez sur toutes les machines unix. D'une utilisation assez peu "conviviale", il s'appelle vi. Nous expliquons ci-dessus les quelques commandes utiles en cas de besoin pressant...

Editer un fichier avec nedit

nedit fichier1 fichier2 &

nedit est parmis les éditeurs nécessitant un environnement graphique, l'un des plus simples à utiliser... parce qu'il colle d'assez près à ce que nous connaissons sous certains autres systèmes d'exploitation.

Editer un fichier avec vi

vi fichier1 fichier2 &
Les commandes de vi
La commandeSon effet
i

Passer en mode insertion: tout ce que vous tapez est maintenant inséré en-dessous du curseur.

R

Passer en mode remplacement: tout ce que vous tapez remplacera le texte courant.

Echap

Passer en mode commande: tout ce qui suit concerne le mode commande, il est donc prudent de taper Echap avant d'essayer les commandes décrites ci-dessous.

h,j ou entrée,k,l ou espace

Touches de déplacement du curseur: h pour se déplacer d'un caractère vers la gauche, j une ligne en-dessous, k une ligne au-dessus, l un caractère à droite. espace joue le même rôle que l et entrée le même rôle que j.

0,$

Touches de déplacement rapide du curseur: 0 pour aller en début de ligne, $ pour aller en fin de ligne.

nG,G

Touches de déplacement rapide du curseur: nG pour aller à la ligne n (1G en haut du fichier), G pour aller à la dernière ligne.

Ctrl-F, Ctrl-B

Touches de déplacement rapide du curseur: Ctrl-F pour aller vers l'avant (Forward) d'un écran, B pour revenir en arrière (Back) d'un écran.

x,dd

Suppressions: x pour le caractère courant, dd pour la ligne courante

p,P

p remet ce qui vient d'être supprimé sur la ligne juste au-dessous du curseur, P le remet juste au-dessus.

u

Annule la dernière action. Attention, on ne peut annuler que la toute dernière action. Intérêt un peu limité, donc.

/human

Rechercher un mot (ici human) vers le bas

?human

Rechercher un mot (ici human) vers le haut

n

Rechercher la prochaine occurrence (toujours dans le même sens)

:n :p

Editer le fichier suivant (n) ou précédent (p), lorsqu'on a spécifié plusieurs fichiers sur la ligne de commande

:w

Sauve (write) le fichier

:q

Quitte vi sans sauver

:wq

Sauve et quitte.




Ecrire un script

Mettez plusieurs commandes dans un fichier, vous obtenez un (petit) programme appelé script.

nedit un_script &

pour écrire le script. Pour exécuter le script, il vous faudra alors:

chmod u+x un_script
./un_script




Warning if you are not using a browser that supports tables such as Netscape 1.1 or later then this page will probably be very difficult to read.

© Groupe de Travail: Formation Interne BioInfo
Created 02/2003 .
Comments, suggestions, etc. Mail