<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" >
<linuxdoc>
 
<article>

<title>Introduction aux commandes de base sous UNIX
<author>--
<date>Atelier DNS AfTLD Yaoundé 2004
<p>

- Exemple d'un session (se logger, exécuter des commandes, se délogger)
- Les commandes de base

<sect>Une session avec un "shell" sous UNIX
<p>
Une session sous UNIX est composé de trois parties:
<itemize>
<item>Se logger (<tt>login: / password:</tt>)
<item>Exécuter des commandes (interaction avec l'interpréteur de commandes)
<item>Se délogger (<tt>logout / exit</tt>)
</itemize>
<p>

<sect1>Exemple d'invite typique
<p>
<verb>
MonOS (machine.reseau.local) ttyp0
login: robert
Password:

Last login: Tue Oct 14 06:03:14 on ttyp0

/utilisateurs/robert$ _
</verb>

<descrip>
<tag/<em/login://
L'invite de login demande à l'utilisateur de taper son identificateur
<tag/<em/Password://
Après l'identificateur, l'utilisateur doit taper son mot de passe.
Le mot de passe n'apparait pas quand on le tape.
</descrip>

Une fois loggé, utiliser les commandes pour interagir avec l'interpréteur
("shell").
<p>

<sect1>Exemple de commande simple
<p>
Une commande utile: la commande <tt/date/ pour connaître... la date
et l'heure:

<verb>
/utilisateurs/robert$ date
Tue Oct 14 14:07:06 PST 1997
/utilisateurs/robert$ _
</verb>

Une fois le travail terminé, se délogger.
<p>

<sect1>Fin de session
<p>
La commande <tt/exit/ ou <tt/logout/ met fin à la session en cours, et
l'invite réapparait, en attente d'une nouvelle session:

<verb>
/utilisateurs/robert$ exit
MonOS (machine.reseau.local) ttyp0

login:
</verb>

<sect>Les commandes de base
<p>
Les commandes suivantes constituent un minimum nécessaire à la navigation
dans le système de fichiers (l'arborescence) UNIX.

<itemize>
<item>cd / pwd: changer de répertoire / afficher le répertoire courant
<item>ls: afficher la liste des fichiers et sous-répertoires d'un répertoire 
donné ou du répertoire courant par défaut
<item>cp: faire une <em/copie/ d'un fichier vers un nouvel endroit 
<item>mv: <em/déplacer/ un ou plusieurs fichiers d'un endroit à un autre
<item>rm: effacer un ou plusieurs fichiers
<item>mkdir / rmdir: créer un nouveau répertoire ou en supprimer un existant 
</itemize>
<p>

<sect>Droits et permissions
<p>
Notions d'<em/utilisateurs/ et de <em/groupes/: UNIX distingue trois
classes d'utilisateurs: le propriétaire du fichier (<em/owner/), le groupe
d'utilisateurs auquel appartient le fichier (<em/group/), et le reste
du monde (<em/others/).  Rappel: un fichier ne peut appartenir à plus d'un
utilisateur et d'un groupe à la fois.

Les commandes pour manipuler les droits:

<itemize>
<item><tt/chmod/ <it/les droits/ <tt/le_fichier/ 
<item><tt/chown/ <it/nouveau_propriétaire/ <tt/le_fichier/ -- ne peut être
utilisé que par le super-utilisateur 
<item><tt/chgrp/ <it/groupe_cible/ <tt/le_fichier/ -- on doit appartenir
au groupe cible.
</itemize>

<em/Exercices:/

1. Examiner les droits du fichier .profile dans votre répertoire --
en profiter pour le rendre accessible en écriture pour le groupe auquel
appartient ce fichier.

Ensuite, essayer de changer le propriétaire de ce fichier.

2. Exécuter les commandes suivantes:

<itemize>
<item>créer un répertoire <tt/dossier/
<item>passer super-utilisateur et changer les droits de ce répertoire
pour qu'il appartienne à l'utilisateur <tt/root/ et au groupe <tt/bin/
<item>toujours en tant que super-utilisateur, créer dans ce répertoire
un fichier nommé <tt/test/.  Changez le propriétaire du fichier afin
qu'il vous appartienne (votre compte).
<item>quitter la session super-utilisateur (<tt/exit/) et tenter de
supprimer ce fichier
</itemize>

3. Dans un répertoire quelconque, exécuter la commande: <p>
   <verb>
	 touch un_nom_de_fichier
	 </verb>

	 Afficher les permissions de ce fichier avec la commande: <p>
	<verb>
	ls -l un_nom_de_fichier
	</verb>

<sect>Enchaînement et redirections
<p>
La commande <tt/wc/ permet de compter le nombre de lignes, mots et  caractères
que contient un fichier texte.  Utiliser la commande <tt/ls -l/, le pipe
(|) et <tt/wc/ pour connaître le nombre de fichier dans le répertoire
<tt/etc/.

Rediriger la <it/sortie standard/ de la commande ci-dessus vers un fichier
de votre choix.

Ajouter la date du jour <em/à la fin de ce fichier/ en utilisant la
commande <tt/date/.

<sect>Le système de fichier UNIX -- arborescence, montage et liens
<p>
Le système de fichiers sous UNIX a une racine unique (<tt>/</tt>).
Des partitions peuvent être montées à la place de répertoires.
Des liens peuvent pointer sur des fichiers ou répertoires présents ailleurs
dans l'arborescence.

1.  Utiliser la commande <tt/mount/ pour examiner les partitions
montées sur le système de fichier.

2. Déterminer la nature du répertoire <tt>/home</tt>

3.  Examiner les répertoires /var/tmp et /usr/tmp.  Remarquer dans quel
répertoire on se trouve si l'on fait:
<verb>
	cd /usr/tmp
	cd ..
	pwd
</verb>

4. Créer dans le répertoire <tt>/tmp</tt>, un lien symbolique pointant
sur lui-même.  Utiliser la commande <tt/ln/ -- voir le <tt/man/ correspondant.
Observer ce qui se passe lorsque l'on essaye de faire 
<tt/cd le_lien_symbolique/.

<sect>Un éditeur de texte: <tt/vi/
<p>
<tt/vi/ est un éditeur dit modal:  il existe deux modes d'exécution:

<itemize>
<item>le mode <em/entrée/: on peut taper du texte comme on le ferait sur 
un éditeur quelconque.
<item>le mode <em/commande/: permet d'exécuter des commandes de manipulation
du texte, de déplacement, de recherche et de sauvegarde / chargement du texte.
</itemize>

<sect1>Commandes de base
<p>
Pour passer du mode <em/entrée/ au mode <em/commande/ -- touche <tt/[ESC]/
Pour passer du mode <em/commande/ au mode <em/entrée/ -- plusieurs touches:

<itemize>
<item><tt/i/: insérer du texte à l'endroit du curseur (INSERT)
<item><tt/a/: insérer du texte <it/après/ le curseur (AFTER)
<item><tt/I/: insérer du texte en <it/début/ de ligne
<item><tt/A/: insérer du texte en <it/fin/ de ligne
<item><tt/o/: commencer une nouvelle ligne <it/après/ la ligne courante
<item><tt/O/: commencer une nouvelle ligne <it/avant/ la ligne courante
</itemize>

<sect1>Se déplacer dans <tt/vi/:
<p>
On peut utiliser les touches flêchées pour se déplacer.  De plus,
on peut utiliser certaines commandes pour aller plus vite.
<itemize>
<item><tt/w/: un mot vers l'avant (WORD)
<item><tt/b/: un mot vers l'arrière
</itemize>
La plupart des commandes peuvent prendre un argument numérique avant
leur exécution.  Par exemple, pour avancer de 10 mots, taper:
<tt>10w</tt>.

<sect1>Copier/couper/coller du texte:
<p>
<itemize>
<item><tt/yy/: copier la ligne courante dans le tampon (ex: <tt/5yy/ -> copier
5 lignes dans le tampon)
<item><tt/p/: coller le contenu du tampon <it/après/ la ligne courante.
<item><tt/P/: coller le contenu du tampon <it/avant/ la ligne courante.
<item><tt/D/: détruire le reste de la ligne depuis le curseur (et coupe dans le tampon)
<item><tt/dd/: détruit entièrement la ligne courante (et coupe dans le tampon)
<item><tt/dw/: effacer le mot à droite du curseur
<item><tt/db/: effacer le mot à gauche du curseur
</itemize>

<sect1>Charger / sauver
<p>
<itemize>
<item><tt/:r fichier_à_insérer/ -- insère le fichier indiqué à l'endroit
du curseur
<item><tt/:e fichier_à_éditer/ -- charge un nouveau fichier afin de l'éditer
<item><tt/:w/ -- sauve le fichier sous le nom courant, ou sous un autre
nom si il est précisé
<item><tt/:q/ -- quite <tt/vi/, à la condition que le texte n'a pas été
modifié depuis son chargement
<item><tt/ZZ/ -- sauver ET quitter <tt/vi/.
</itemize>

Pour les commandes précédentes, il est possible de forcer certaines commandes
(ex: <tt/:q!/ pour quitter en abandonnant les changements), ou de les
combiner (ex: <tt/:wq/, qui est équivalent à <tt/ZZ/).

1. S'entraîner à manipuler des fichiers textes avec <tt/vi/ (couper / copier
des lignes et des mots, insérer un autre texte au milieu du texte courant,
sauver sous le même nom, un autre nom, etc...)

<sect>Détail des commandes de base
<p>

<descrip>
<tag><tt>cd / pwd </tt></tag>
Syntaxe: <tt/cd/ <it/nouveau_répertoire/
<p>
Changer de répertoire courant.  Par exemple, pour se positionner dans le 
répertoire <tt>/usr/local/bin</tt>, il suffit de taper:

<tt>cd /usr/local/bin</tt>
<p>
Syntaxe: <tt/pwd/
<p>
Afficher le répertoire courant.  Exemple:

<verb>
$ pwd
/utilisateurs/norbert
</verb>

<tag/ls/
Syntaxe: <tt/ls/ <it/[répertoire | fichier]/
<p>
Afficher la liste des fichiers et des sous-répertoires d'un répertoire
donné, ou du répertoire courant si aucun argument n'est précisé.
Exemple:

<verb>
ls /etc/
ls /etc/passwd
</verb>

<tag/<tt/cp//
Syntaxe: <tt/cp/ <it>source [source2] destination</it>
<p>
Copier un ou plusieurs fichiers vers un autre répertoire, ou copier un fichier 
vers un autre nom.  Exemple:

<verb>
cp lettre.txt lettre_2.txt
cp lettre.txt /utilisateurs/robert/
cp lettre_1.txt lettre_2.txt lettre_3.txt /utilisateurs/public/
</verb>

<tag/<em/mv//
Syntaxe: <tt/mv/ <it/fichier1 [fichier2] ... destination/
<p>
Déplacer un, ou plusieurs, fichiers, vers un répertoire cible.  Exemple:

<verb>
mv lettre.txt /tmp/
mv lettre_1.txt lettre_2.txt /tmp/
</verb>

<tag/<em/rm//
Syntaxe: <tt/rm/ <it/fichier1 [fichier2] .../
<p>
Effacer un ou plusieurs fichiers sur le disque.  Exemple:

<verb>
rm lettre.txt
rm /tmp/lettre_1.txt
rm lettre_2.txt lettre_3.txt
</verb>

<tag><em>mkdir / rmdir</em></tag>
Syntaxe: <tt/mkdir/ <it/nom_du_répertoire/
<p>
Crée un répertoire du nom précisé.  Exemple:

<verb>
mkdir Lettres
mkdir /utilisateurs/robert/Travail
</verb>

Syntaxe: <tt/rmdir/ <it/nom_du_répertoire/
<p>
Efface le répertoire du nom précisé.  <tt/rmdir/ n'efface pas les répertoires
qui contiennent des fichiers.  Exemple:

<verb>
rmdir Lettres
rmdir /utilisateurs/robert/Travail
</verb>

</descrip>

<p>
</article>

