Le login.
Les systèmes compatibles Unix sont par définition multi-tâches et multi-utilisateurs, c'est à dire que plusieurs personnes peuvent travailler simultanément sur le même système.
Chaque utilisateur est identifié par un nom d'utilisateur (login) et un mot de passe (password).
Le login est associé à un numéro unique (le UID : User IDentifiant) et permet d'identifier chaque utilisateur. Il ne contient ni espace, ni caractères spéciaux.
Le mot de passe doit être choisi judicieusement : il doit mélanger des caractères en minuscule et majuscule, des chiffres et des caractères spéciaux.
Chaque utilisateur dispose d'un répertoire de travail (le Home Directory) dans lequel il a le droit de créer ses propres fichiers et répertoires. Ce répertoire de travail se situe généralement dans le répertoire home et porte le nom du login. Exemple : le répertoire de travail de l'utilisateur alex est /home/alex.
Il existe un utilisateur particulier : le root. Le root est l'administrateur du système, il dispose de tous les droits et s'occupe de la gestion du système : ajout et suppression des utilisateurs, installation et configuration du système et des logiciels ...
Le root a tous les pouvoirs sur le système, il peut tout faire, y compris tout casser. De ce fait, il faut donc choisir un mot de passe très sécurisé, et toujours bien vérifier a deux fois avant d’exécuter une opération avec l'utilisateur root.
Le root n'est pas une personne a proprement parler, il s'agit d'une fonction. Ainsi, il ne faut jamais travailler en permanence avec le compte root, mais utiliser son compte habituel, et passer root (via les commandes su ou sudo) que si l'on a besoin de réaliser une opération d'administration.
Contrairement aux autres utilisateurs, le répertoire de travail du root se situe à la racine du système (/root). L'explication est simple : en cas de problème avec la partition /home, l'utilisateur root pourra quand même accéder à son répertoire de travail.
Les commandes de base.
pwd (print working directory).
Affiche le répertoire courant.
 $ pwd
 /home/alex
id.
Affiche les informations relatives à l'utilisateur connecté.
 $ id
 uid=1000(alex) gid=1000(alex) groupes=20(dialout), 24(cdrom), 25(floppy), 29(audio), 44(video), 46(plugdev), 106(netdev), 109(powerdev), 1000(alex)
passwd.
Permet de changer son mot de passe
 $ passwd
 Changing password for alex
 (current) UNIX password:
 Enter new UNIX password:
 Retype new UNIX password:
 passwd : le mot de passe a été mis à jour avec succès
cd (change directory).
Pour se placer dans un répertoire
 $ cd . # . désigne le répertoire courant
 $ cd .. # .. désigne le répertoire parent
 $ cd / # / désigne le répertoire racine
 $ cd /tmp # désigne le répertoire tmp appartenant à la racine
 $ cd tmp # désigne le répertoire tmp du répertoire courant
 $ cd ../tmp # désigne le répertoire tmp du répertoire parent du répertoire courant
 $ cd ~ # permet de revenir dans son répertoire de travail (home directory)
 $ cd # idem
Connecté en root, la commande $ cd m'amène au répertoire /root qui est le répertoire de travail de l'utilisateur root.
Connecté avec l'utilisateur alex, $ cd m'amène au répertoire de travail de l'utilisateur alex, à savoir /home/alex.
ls.
Liste les fichiers d'un répertoire
 $ ls # liste les fichiers non cachés du répertoire courant 
 $ ls -l # (l : long) : liste détaillée des fichiers du répertoire courant 
 $ ls -a # (a : all) : liste tous les fichiers, y compris les fichiers cachés
On peut combiner plusieurs options, l'ordre n'est pas important. Les quatre commandes suivantes sont identiques :
 $ ls -a -l
 $ ls -l -a
 $ ls -la
 $ ls -al
mkdir (make directory).
Permet de créer un répertoire
 $ mkdir rep1 # crée un répertoire rep1 dans le répertoire courant
 $ mkdir /rep1 # tente de créer un répertoire rep1 à la racine,
 # le système refuse car je ne suis pas connecté en root
Exercice : je suis dans le répertoire "/var/log", je souhaite créer un répertoire "rep2" dans le répertoire "/home/alex", comment faire ?
J'ai 3 possibilités:
 $ mkdir ../../home/alex/rep2 # on utilise un adressage relatif à la position où je suis : 
 # on remonte dans l'arborescence jusqu'à la racine puis 
 # on redescend jusqu'au répertoire alex
 $ mkdir /home/alex/rep2 # on utilise un adressage absolu en partant de la racine
 $ mkdir ~/rep2 # on utilise ~ pour désigner le répertoire de travail
l'option -p permet de créer le(s) répertoire(s) parent(s).
 $ mkdir -p rep1/rep2 # crée un répertoire parent rep1 si il n'existe pas,
 # et crée dans rep1 un répertoire rep2
rmdir (remove directory).
Supprimer un répertoire vide
 $ rmdir rep1
find.
Permettre de retrouver des fichiers à partir de certains critères.
 $ find nom # cherche le fichier ou le répertoire appelée nom à partir du répertoire courant
 $ find . -name "nom.txt" -print > ./chemin/sortie.txt # cherche le fichier nom.txt récursivement à partir 
 # du répertoire courant et écrit le résultat dans le fichier 
 # sortie.txt situé sur le répertoire spécifié par chemin
cp (copy).
Copier un fichier
 $ cp /etc/passwd /tmp # copie le fichier /etc/passwd dans le répertoire /tmp
 $ cp /etc/passwd /tmp/nouveaunom # copie le fichier /etc/passwd dans le répertoire /tmp 
 # et le renomme en "nouveaunom"
Attention, si le fichier destination existe déjà, il sera remplacé et sans demander confirmation
Options courantes : 
 -i : si le fichier destination existe, demande confirmation avant de remplacer le fichier
Remarque : pour copier à travers un réseau TCP/IP, utiliser la commande "scp".
En cas d'erreur "cp: omission du répertoire", c'est qu'un répertoire doit être copié avec l'option "-r".
rm (remove).
Effacer un fichier
 $ rm lefichier # efface le fichier "lefichier"
Attention, le fichier est effacé et sans demander confirmation
Options courantes : 
 -i : demande confirmation avant d'effacer le fichier
mv (move).
Déplacer ou renommer des fichiers
 $ mv [Option] Source Destination(répertoire)
 $ mv [Option] Répertoire Source
 $ mv fichier_source fichier_cible # copie fichier_source dans fichier_cible
 $ mv fichier1 fichier2 # renomme le fichier fichier1 en fichier2
 # Attention si fichier2 existe, son contenu sera écrasé et 
 # remplacé par celui de fichier1
Par pécaution, on utilise l'option -i qui permet d'être averti par le système avant l'écrasement du fichier destination si celui-ci existe.
 $ mv -i fichier1 fichier2 # demande la confirmation avant d'effacer la destination
 $ mv rep1/fic1 rep2/fic2 # déplace le fichier fic1 situé dans le répertoire "rep1"
 # sous le nouveau nom fic2 situé dans le répertoire rep2
 $ mv rep1 rep2 # déplace le répertoire rep1 dans le répertoire rep2
 # si rep2 n'existe pas, renomme rep1 en rep2
ln (link).
La commande ln permet de créer des liens, c'est à dire des raccourcis vers des fichiers ou des répertoires.
 ln -s "destination" "nom_du_lien"
Exemple
 $ ln -s prog1.0 monprogramme
Cette commande crée le lien suivant :
 lrwxrwxrwx 1 alex alex 7 2007-10-26 14:25 monprogramme -> prog1.0
Les Shells.
Shell veut dire "Coquille", qui entoure le noyau. C'est un interpréteur de commandes que l'on utilise pour lancer des commandes ou programmer une suite de commandes. L'utilisateur discute avec le Shell, qui discute avec le noyau, qui à son tour discute avec le matériel. Originellement le shell est utilisé sous Unix, il s'est répandu depuis avec différentes versions, la forme la plus simple est sh.
Les versions connues :
Le shell est constitué de petits shells spécifiques à chaque travail, chacun ayant un fichier de configuration stocké dans le répertoire /home de chaque utilisateur, lequel peut les modifier à sa convenance :
Fichiers de configuration spécifiques au shell Bash :
Autres fichiers liés au Bash
La complétion.
 « L'art de la saisie des commandes ultra rapide ». 
A chaque fois que vous tapez une commande, Linux vous aide à compléter votre commande en appuyant sur la touche .
Tapez le début de votre commande et en appuyant sur la touche , Linux vous la complète ou vous propose les différentes possibilités pour la compléter, à défaut vous aurez droit à un petit bip, s'il existe un trop grand nombre de propositions, Linux vous affiche ce nombre.
exemple : 
Les jokers * et ?
Dans une commande sur les fichiers, on peut remplacer une partie d'un nom de fichier par * ou d'un caractère par ? 
Exemple
 $ls *.c # liste tous les fichiers du répertoire courant dont 
 # l'extension est .c
 $ls fich*.c # liste tous les fichiers du répertoire commençant par fic 
 # et dont l'extension est .c 
 # ex : fichier1.c fichier2.c fichierprojet.c ...
 $ls fichier?.c # liste tous les fichiers dont le nom est fichier
 # + un caractère quelconque
 # fichier1.c fichier2.c fichier3.c fichier4.c ...
Invoquer un programme en tâche de fond.
Certains programmes ne rendent pas la main immédiatement (exemple : la compilation d'un gros programme).
Pour récupérer la main, il suffit de rajouter un & (ET commercial ou Esperluette) à la fin de la commande :
 $ xeyes &
Si on a lancé une commande qui ne rend pas la main et que l'on a oublié de rajouter le &, on peut utiliser la méthode suivante :
 $ xeyes
 <CTRL Z>
 [1]+ Stopped xeyes
Le programme est alors stoppé. Il suffit de taper ensuite la commande bg (background) pour qu'il s’exécute en tâche de fond :
 $ xeyes
 <CTRL Z>
 [1]+ Stopped xeyes
 $ bg
 [1]+ xeyes &
La commande fg (foreground) permet de refaire passer le programme en premier plan :
 $ xeyes
 <CTRL Z>
 [1]+ Stopped xeyes
 $ bg
 [1]+ xeyes &
 $ fg
 xeyes