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 ?
- Principales caractéristiques d'Unix
- Les premières commandes, quand on est perdu...
- Métacaractères: * . ? et les autres
- Un système de fichiers est un arbre
- Chemins d'accès aux fichiers
- Enchaîner les commandes comme on joue aux legos
- Tout savoir sur mes fichiers
- Se promener dans le système de fichiers
- Copier fichiers et répertoires
- Bougez vos fichiers
- Faites du ménage
- Partager ... ou garder pour soi
- Compresser, décompresser
- Tarer, détarer
- Lire des morceaux de fichiers
- Recoller les morceaux
- Lire des fichiers à l'écran (more ou less)
- Y a-t-il ce que je cherche dans ce fichier ?
- Ces fichiers sont-ils différents ?
- Editer un fichier (vi sans peine)
- Ecrire un script
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:
- Une connexion internet
- Un micro-ordinateur sur votre bureau (lui peut très bien travailler sous windows, sous macOS, etc.)
- Utiliser un programme pour se connecter: soit
telnet
, soit plus probablementssh
(connexion sécurisée, ce que vous tapez ne peut pas être espionné).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 lspour lire la documentation au sujet de la commandels
.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)~duchmol
Le "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 narcisseLe 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/fichierUn 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/fichiersignifie:
- Partir du répertoire courant (
/home/formation/rose/tmp/
)- Remonter d'un cran (
..
, on arrive sur/home/formation/rose/
)- Remonter une nouvelle fois d'un cran (
..
, on arrive sur/home/formation/
)- Redescendre dans le répertoire
tulipe
(on arrive sur/home/formation/tulipe
)- Redescendre dans le répertoire
tmp
(on arrive sur/home/formation/tulipe/tmp/
- S'intéresser au fichier appelé
fichier
qui se trouve là.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épertoireformation
de/home
vers/maison
le chemin absolu de tous les fichiers de la hiérarchie sera modifié, alors que pour aller surtulipe
à partir derose
, 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;
ls
= listwc
= word countListe des fichiers
Pour faire la liste des fichiers se trouvant dans le répertoire courant (chemin relatif):
lsQuelle 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/elephantLister d'abord les fichiers les plus récents
La commande suivante liste les répertoires
d1
etd2
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 d2Lister 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
cd
= change directorymkdir
= make directorypwd
= print working directoryCréer un nouveau répertoire:
mkdir nouveau_dossierNOTE 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_repertoireAller dans le répertoire:
La commande suivante permet de faire en sorte que
nouveau_repertoire
soit le répertoire courant.cd nouveau_repertoireRemonter:
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
cp
= copy-r
= recursivelyCopier 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 destinationCopier 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 parf
dans le répertoirenouveau_repertoire
cp src1 src2 src3 f* nouveau_repertoireCopier 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 !
mv
= moveChanger le nom d'un fichier ou d'un répertoire:
mv fichier fichier_old mv nouveau_dossier d1Changer 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épertoired1
(il est par ailleurs fort possible qued1
soit sur un autre disque... voire sur une autre machine, si un disque réseau a été monté).
ATTENTIONd1
est obligatoirement un dossier, sinon tous les fichierssrc*
seront renommés chacun son tour end1
... 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)
rm
= remove-r
= recursivelyrmdir
= remove directorySupprimer 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 d1Supprimer 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 d2ATTENTION, IL N'Y A PAS DE POUBELLEToutes 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é parrm
.
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 commandels -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'utilisateuranemone
et au groupe d'uitlisateursformation
(la commandels
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 uncd
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_persoLes 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_passipersoLes 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_importantLa 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_importantLa permission w (write) a été ajoutée pour l'utilisateur propriétaire du fichier.
Aucune restriction d'accès
chmod a=rwx fichier_communTout 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_importantLa 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.
Commande Nom du fichier produit Commentaire compress fichier fichier.ZCompatibilité totale: existe sur toutes les machines unix
compress -d fichier.Z fichier uncompress fichier.Z fichier
uncompress
est un raccourci pourcompress -d
gzip sprot.fas sprot.fas.gzPlus 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.bz2Encore 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 dossierTous 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.tarExtraire les fichiers de l'archive
tar xvf dossier.tarL'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.ZLire 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.fasLire les 100 dernières lignes
tail -100 sprot.fasRecopier dans un autre fichier les 150 premières lignes
head -150 sprot.fas > sprot.fas.debutRecopier les lignes 800 à 1000 uniquement
head -1000 sprot.fas | tail -200 > sprot.fas.milieuLa première commande:
head
lit les 1000 premières lignes desprot.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 fichiersprot.fas.milieu
. Vous n'avez pas l'impression de jouer aux legos ?Voir le fichier grossir au fur et à mesure
tail -f fichierquigrossitCette 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 commandetail -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.debutAttention, 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_entierLe fichier appelé
fichier_entier
contient les fichers suivants, mis bout à bout:
debut
- tous les fichiers s'appelant
milieu_
n'importe quoifin
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 | catDans 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 fichiermore f1 f2 f3uncompress < f1.gz | moremore 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 commande Son effet /humanRechercher un mot (ici human) vers le bas
?humanRechercher un mot (ici human) vers le haut
/nRechercher la prochaine occurrence (tioujours dans le même sens)
espace, entrée, ou flèchesAvancer d'une page ou d'une ligne
b ou flèchesRemonter d'une page
1G ou GAller à la ligne 1 (tout en haut), ou à la dernière ligne (tout en bas)
:n :pVisualiser le fichier suivant (n) ou précédent (p), lorsqu'n a spécifié plusieurs fichiers sur la ligne de commande
qQuitter
Lire un texte à partir d'une chaîne de caractères donnée
more +/human sprot.fasest 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.fasMême chose, mais on ignore la casse:
grep -i HUman sprot.fasCombien de séquences humaines dans la swissprot ?
grep '>' sprot.fas | grep -i human | wc -lLe 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 -lCette 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 | morediff afficher les différences entre
.f1.new
etf1.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 commande Son effet iPasser en mode insertion: tout ce que vous tapez est maintenant inséré en-dessous du curseur.
RPasser en mode remplacement: tout ce que vous tapez remplacera le texte courant.
EchapPasser 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 espaceTouches 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,GTouches 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-BTouches 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,ddSuppressions: x pour le caractère courant, dd pour la ligne courante
p,Pp remet ce qui vient d'être supprimé sur la ligne juste au-dessous du curseur, P le remet juste au-dessus.
uAnnule la dernière action. Attention, on ne peut annuler que la toute dernière action. Intérêt un peu limité, donc.
/humanRechercher un mot (ici human) vers le bas
?humanRechercher un mot (ici human) vers le haut
nRechercher la prochaine occurrence (toujours dans le même sens)
:n :pEditer le fichier suivant (n) ou précédent (p), lorsqu'on a spécifié plusieurs fichiers sur la ligne de commande
:wSauve (write) le fichier
:qQuitte vi sans sauver
:wqSauve 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:
- Mettre la permission execution (x) au moins pour l'utilisateur sur le fichier que vous venez d'éditer.
- Appeler le fichier en utilisant son chemin absolu.
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