Linux pour l’utilisateur

Pages en cours d'écriture ...

Comme sous Windows, on peut faire beaucoup de manipulations avec le bureau fourni par Linux. Cet interface graphique permet de lancer des logiciels ; copier, déplacer, renommer, supprimer ... des objets et bien d'autres choses encore. Cependant beaucoup de nos utilisateurs dont le cœur de métier n'est pas l'informatique se retrouvent un jour ou l'autre à devoir lancer la fenêtre Terminal et à passer des commandes Linux voire à entrer dans le code d'un ensemble de commandes.

C'est pour eux que ces pages tentent d'expliciter les commandes et leurs options les plus couramment utilisées.

Ces pages s'appuient sur :
- les diapositives des supports de cours de la plateforme bioinfo de Genotoul
- le cours Unix réalisé par la plateforme Migale en 2005 à la SGQA
- le document "B.A.-ba pour l'utilisation d'Unix au CTIG" mis à jour en 2010
Ces 3 cours ont permis de réaliser une synthèse qui a été utilisée lors de la migration d'AIX (Unix IBM) vers Linux en 2012 pour les utilisateurs du CTIG.

Ces pages sont là pour valoriser le travail effectué lors de la migration AIX->Linux et pour aider ceux qui les liront ;-)

Linux, les objets

Se déplacer dans l'arborescence

     |---usr
     |
     |---etc
     |
     |---tmp
     |                        |---temp
 / --|          |---mdupont---|
     |          |             |---cmp
     |---home---|                         |---brouillons
     |          |             |---doc-----|---encours
     |          |---testutl---|           |---archives
     |                        |---donnees
     |---travail
     |
     |---projet1

Les objets sont répartis sous forme d'une arborescence. Pour faire simple, les répertoires contiennent des fichiers et des répertoires. Les premiers répertoires de l'arborescence (usr, etc, tmp, home ...) sont nommés les file-system, on peut les assimiler à des disques virtuels. Tout démarre à la racine (ou root) symbolisé par le caractère "/".

Commande pwd - où suis-je ?

Avant de savoir où aller il faut connaître où l'on est. La commande pwd (print working directory) affiche le chemin du répertoire courant.

# pwd

/home/testutl/doc/encours

Le chemin affiché est le chemin absolu car il commence à la racine ou autrement dit par le caractère "/".
On peut utiliser des chemins relatifs qui démarrent à partir du répertoire courant, exemple : doc/archives ceci à partir de /home/testutl.

Commande cd - changement de répertoire

La commande cd (change directory) permet de se déplacer dans l'arborescence, on précise le répertoire où l'on veut aller soit avec le chemin absolu soit avec le chemin relatif. Si on est perdu ... la commande sans destination ramène à la maison, sous son répertoire de base (ou home directory), celui où l'on est arrivé après s'être connecté.

# pwd
/home/testutl

#  cd doc/archives
# pwd
/home/testutl/doc/archives

# cd /home/testutl/doc/encours
# pwd
/home/testutl/doc/encours

# cd 
# pwd
/home/testutl

Les caractères ".." permettent de remonter au niveau supérieur de l'arborescence dans le répertoire "père".

# pwd
/home/testutl/doc

# cd encours
# pwd
/home/testutl/doc/encours

# cd ../archives
# pwd
/home/testutl/doc/archives

Connaître les objets

Les options d'un commande se placent après le nom de la commande, elles sont précédées du caractère "-". La plupart du temps l’ordre des options dans la commande n’a pas d’importance, la commande ls –lh est équivalent à ls –hl. Les options sont cumulatives.

Attention : Linux fait la différence entre les majuscules et les minuscules (option -r différente de l'option -R).

Commande ls

Pour voir ce qu'un répertoire contient on utilise la commande ls. Ses options précisent les caractéristiques des objets ou leur mode d'affichage.
-a : affiche les fichiers cachés
-l : utilise le format long
-h : taille dans un format lisible par un humain (ex: 1K, 234M ou 2G)
-t : trie sur la date et l'heure
-r : inverse l'ordre
-R : applique la commande sur tous les sous-répertoires de l'arborescence.
-d : affiche les caractéristiques du répertoire et pas son contenu

# ls
Aeffacer  doc  documents.txt  donnees

# ls -l
total 48
-rw-r--r-- 1 testutl ugen 27053  5 août  16:08 Aeffacer
drwxr-xr-x 5 testutl ugen  4096  5 août  14:58 doc
-rw-r--r-- 1 testutl ugen  9866  5 août  16:07 documents.txt
drwxr-xr-x 2 testutl ugen  4096  5 août  16:06 donnees

L'affichage se fait avec l'ordre aplhabétique par défaut.
Les caractéristiques sont : type d'objet (- pour fichier, d pour répertoire ...), droits (ex: rwxr-xr-x), nombre de liens, propriétaire, groupe, taille en octets, date de dernière mise à jour et nom de l'objet.
# ls -lh
total 48K
-rw-r--r-- 1 testutl ugen  27K  5 août  16:08 Aeffacer
drwxr-xr-x 5 testutl ugen 4,0K  5 août  14:58 doc
-rw-r--r-- 1 testutl ugen 9,7K  5 août  16:07 documents.txt
drwxr-xr-x 2 testutl ugen 4,0K  5 août  16:06 donnees

# ls -ltr
total 48
drwxr-xr-x 5 testutl ugen  4096  5 août  14:58 doc
drwxr-xr-x 2 testutl ugen  4096  5 août  16:06 donnees
-rw-r--r-- 1 testutl ugen  9866  5 août  16:07 documents.txt
-rw-r--r-- 1 testutl ugen 27053  5 août  16:08 Aeffacer

# ls -a
.              .bash_profile  doc            .gconfd         .gvfs            .local     .pulse-cookie        .Xauthority
..             .bashrc        documents.txt  .gnome2         .ICEauthority    .mozilla   .recently-used.xbel
Aeffacer       .cache         donnees        .gnote          .icons           .nautilus  .ssh
.bash_history  .config        .emacs         .gnupg          .imsettings.log  .nx        .themes
.bash_logout   .dbus          .gconf         .gtk-bookmarks  .kshrc           .pulse     .thumbnails

Les fichiers cachés sont les fichiers dont le nom commence par le caractère ".", ce sont la plupart du temps des fichiers contenant des paramétrages de logiciels.

# ls -lhR
.:
total 48K
-rw-r--r-- 1 testutl ugen  27K  5 août  16:08 Aeffacer
drwxr-xr-x 5 testutl ugen 4,0K  5 août  14:58 doc
-rw-r--r-- 1 testutl ugen 9,7K  5 août  16:07 documents.txt
drwxr-xr-x 2 testutl ugen 4,0K  5 août  16:06 donnees

./doc:
total 12K
drwxr-xr-x 2 testutl ugen 4,0K  5 août  14:58 archives
drwxr-xr-x 2 testutl ugen 4,0K  5 août  16:26 brouillons
drwxr-xr-x 2 testutl ugen 4,0K  5 août  16:27 encours

./doc/archives:
total 0

./doc/brouillons:
total 16K
-rw-r--r-- 1 testutl ugen 8,4K  5 août  16:26 fichier1
-rw-r--r-- 1 testutl ugen   33  5 août  16:26 fichier2

./doc/encours:
total 0
-rw-r--r-- 1 testutl ugen 0  5 août  16:27 notes.txt

./donnees:
total 0

Sur beaucoup de Linux, la commande ll est un alias de la commande ls -lh

Pour en savoir plus sur la commande, tapez : ls --help

Linux, manipulations des objets

On peut être très efficace en utilisant des commandes, le prix à payer est d'avoir une bonne mémoire et/ou les utiliser assez souvent. C'est pour palier à ces contraintes que les interfaces graphiques existent et on peut être efficace aussi en les utilisant. Cependant lorsqu'on doit automatiser des actions, le plus naturel est d'utiliser des commandes et des enchainements de commandes, nommés script.

Création/suppression d'objet

Commande touch

La commande touch crée un fichier vide s'il est inexistant ou met à jour la date de dernière mise à jour d'un objet déjà existant.

# touch fichier1

# ll f*
-rw-r--r-- 1 testutl ugen 0  7 août  16:41 fichier1

Commande mkdir - création d'un répertoire

La commande mkdir crée un répertoire.

# mkdir repertoire1

# ls
Aeffacer  Desktop  doc  documents.txt  donnees  fichier1  repertoire1

L'option -p permet de créer une arborescence de répertoires.

# mkdir -p repertoire2/sousRep2

# ls -R repertoire2

repertoire2:
sousRep2

repertoire2/sousRep2:

Commande rm - suppression

La commande rm (remove) supprime un ou des objets.

Le fichier documents.txt a été effacé.

# ls
Aeffacer  Desktop  doc  documents.txt  donnees  fichier1  repertoire1

# rm doc*
rm: impossible de supprimer « doc »: est un dossier

# ls
Aeffacer  Desktop  doc  donnees  fichier1  repertoire1

Le répertoire doc et toute son arborescence seront supprimés avec l'option -R.

# rm -R doc

# ls
Aeffacer  Desktop  donnees  fichier1  repertoire1

Attention, pas de corbeille avec la ligne de commande ! Utiliser l'option -i pour demander une confirmation.

# rm -i fichier1
rm : supprimer fichier vide « fichier1 » ? o

# ls
Aeffacer  Desktop  donnees  repertoire1

Commande cp - copie

La commande cp permet de copier un fichier ou un répertoire vers un espace cible, elle permet aussi de renommer le fichier.

Copie du fichier ficDepart dans le répertoire donnees avec le nouveau nom Data01.csv.

# cp ficDepart donnees/Data01.csv

# ls -R
.:
Aeffacer  donnees  ficDep1  ficDepart  repertoire1

./donnees:
Data01.csv

./repertoire1:

Copie du répertoire donnees et de son contenu dans le répertoire repertoire1.
# cp -R donnees/ repertoire1/

# ls -R
.:
Aeffacer  donnees  ficDep1  ficDepart  repertoire1

./donnees:
Data01.csv

./repertoire1:
donnees

./repertoire1/donnees:
Data01.csv

Avec l'option -p, les caractéristiques des objets à copier seront préservées (propriétaire, groupe, date... ).

Commande mv - déplacement/renommage

La commande mv déplace les objets, elle sert aussi à renommer un objet.

Déplacement du répertoire Data01 et de son contenu dans le répertoire repertoire1 et renommage de ficDepart en FicResult-130812.

# ll
total 44K
-rw-r--r-- 1 testutl ugen  27K  7 août  16:43 Aeffacer
drwxr-xr-x 2 testutl ugen 4,0K 12 août  13:11 Data01
-rw-r--r-- 1 testutl ugen   33 12 août  12:45 ficDepart
drwxr-xr-x 4 testutl ugen 4,0K 12 août  13:10 repertoire1

# mv Data01/ repertoire1/
mv ficDepart FicResult-130812

# ll -R
.:
total 40K
-rw-r--r-- 1 testutl ugen  27K  7 août  16:43 Aeffacer
-rw-r--r-- 1 testutl ugen   33 12 août  12:45 FicResult-130812
drwxr-xr-x 5 testutl ugen 4,0K 12 août  13:11 repertoire1

./repertoire1:
total 12K
drwxr-xr-x 2 testutl ugen 4,0K 12 août  13:11 Data01

./repertoire1/Data01:
total 8,0K
-rw-r--r-- 1 testutl ugen 33 12 août  13:11 fic01
-rw-r--r-- 1 testutl ugen 33 12 août  13:11 fic02

les facilitateurs de commande

Il est utile de connaître les facilitateurs d'utilisation de commande tels que les caractères spéciaux ou la complétion.

Les caractères spéciaux

Quelques caractères ont une signification particulière pour Linux :

caractère signification exemple
.. répertoire père cd ../archives
. répertoire courant (celui où l’on se trouve) ls -ld .
~ répertoire de base (home directory) cd ~/doc
Les jokers ou métacaractères
* remplace 0,1,des caractères dans les noms des fichiers ls Data*
? remplace un caractère dans les noms des fichiers ls bov?.seq
[ ] remplace un caractère parmi une sélection ls [123]*
Les redirections
> dirige le résultat de la commande au début d'un fichier date > liste01
>> ajoute le résultat de la commande à la fin d’un fichier ls -l >> liste01
2> dirige les messages d’erreurs de la commande dans un fichier ls ficTest 2> list-err
&> pour rediriger en même temps la sortie standard et la
sortie erreur
ls -l ficTest? &> suivi01
| passe le résultat de la commande à la commande suivante ls -l | more
Les commandes
& permet de lancer une commande en arrière plan, la ligne de commande n’est pas bloquée xterm &
; enchaine les commandes sur la même ligne cd ~;pwd

La complétion

Le shell permet à l'utilisateur de dialoguer avec le système. Quand vous ouvrez une fenêtre Terminal, vous êtes dans un shell qui attends votre commande. Le shell interprète les commandes, les exécute, gère l’environnement (variables, alias) et les ouvertures/fermetures de connexion.
Il existe plusieurs types de shell. Sous Linux, le shell bash est utilisé par défaut.

L’utilisation du shell est plus confortable notamment avec la complétion, en effet le shell bash peut deviner une commande ou un nom de fichier s'il est unique. Il peut compléter automatiquement les noms de fichiers que vous êtes en train de saisir sur la ligne de commande. Il suffit de taper le début du nom de fichier suivi d'une pression sur la touche <tabulation> ou <tab>.
En cas de conflit (plusieurs noms qui commencent de la même façon), donnez alors un caractère supplémentaire ou plusieurs.

Commande history

La commande history affiche l'ensemble des commandes en mémoire liées au shell en cours d'exécution.
Les flèches verticales permettent un rappel séquentiel des dernières commandes. Il est alors possible soit de valider pour exécuter à nouveau une commande précédemment appelée, soit de la modifier avant validation.
On peut aussi rappeler et exécuter une commande par son numéro d'historique :

# history

  144  cd 
  145  pwd
  146  cd doc/archives
  147  pwd
  148  cd ..
  149  pwd
  150  cd encours
  151  pwd
  152  cd ../archives
  153  pwd

# !146
cd doc/archives

# pwd
/home/testutl/doc/archives

Pour interrompre une commande en cours d'exécution, on envoie un signal via l'appui simultané sur les touches Contrôle et C.

Conseils pour nommer les objets

Quelques conseils pour se simplifier la vie notamment en cas d’échange de fichiers avec d’autres systèmes d’exploitation :
  • ne pas utiliser de caractères accentués,
  • ne pas utiliser le caractère espace car il s'agit du caractère séparateur. Sinon mettre le nom comprenant un blanc entre le caractère double-quote ( " ),
  • utiliser uniquement les caractères alphanumériques, n'insérez pas les caractères comme / et \ ou !
  • Linux fait la différence entre les lettres minuscules et majuscules. Ainsi, les noms « Resultat », « RESULTAT » et « resultat » sont tous les trois différents,
  • la taille d'un nom de fichier est de 256 caractères maximum,
  • ne pas hésiter à utiliser des extensions (suffixes) logiques en fonction du type de fichier. Exemple : projet.out pour le résultat,
  • utiliser le point « . », le tiret « - « ou le souligne « _ » ainsi que la majuscule comme délimiteur dans un nom de fichier. Exemple : Data-T012012 ou bovResultat2013err.csv .

A vous de jouer

A la fin de cette séquence d'exercices, vous êtes en mesure de vous déplacer correctement dans l'arborescence du serveur, connaître les objets que vous voyez, vous savez utilisez la complétation et utilisez les commandes élémentaires de manipulation des objets.

Séquence 01

les droits

contrôle de l'espace disque

Manipulation à l'intérieur des objets

Les transferts d'une machine à une autre

Linux, le contexte

Un système d'exploitation

Un système d'exploitation libre

Un peu d'histoire