Menu Content/Inhalt
Accueil arrow Articles arrow A propos de Linux arrow Bien débuter avec le Shell
Bien débuter avec le Shell Convertir en PDF Version imprimable Suggérer par mail
Ecrit par Jean-Yves   
11-02-2006

 Mise à jour le 28 mars 2006

 

Ce qui fait la force et la richesse de Linux et d'autres systèmes d'exploitation issus d' UNIX est la richesse offerte par le mode console.

Il peut être nécessaire si vous voulez installer des programmes, ou si vous avez des difficultés à utiliser le mode graphique de passer par le shell.

Il est très souvent plus rapide d'entrer des commandes dans une fenêtre de terminal que d'utiliser l'interface graphique.

Pourtant, les personnes qui sont habituées à Windows ne sont pas familières avec cette philosophie.

Je vais donc vous présenter les concepts de base ainsi que les commandes essentielles pour être à l'aise avec le shell et apprécier tout le confort qu'il donne.

 

 

 

Le SHELL



  1. Qu'est ce que le SHELL ?


Interface utilisateur/système

Exécution de commandes

Possibilité d'utilisation comme langage de programmation


Shell est un processus

Différents shells disponibles (bash,zsh, csh, tcsh...)

Bash par défaut sous Linux



  1. Les différents SHELL


sh : Le shell Bourne, du nom de son créateur Steve Bourne pour AT&T. C'est le plus

        ancien shell.

csh : Très proche du langage C. Créé par Bill Joy pour les systèmes BSD. Ajoute à sh

        le rappel de commandes ainsi que les alias.

 

ksh : Créé par David Korn pour AT&T. Ajoute de nouvelles fonctionnalités au csh.

 

rsh : Shell sh restreint. Pas de commande cd, ni de redirections. La variables PATH

          ne peut pas être modifiée.

 

bash : Bourne Again Shell. C'est un shell entièrement libre. Il a été crée par  Brian 

            Fox et Chet Ramsey.

 

C'est le shell par défaut de Linux.

 



  1. L'environnement utilisateur


/etc/profile:

Fichier d'initialisation pour tous les utilisateurs du système. Il est exécuté par les shells de login.


/etc/bashrc:

Fichier de démarrage commun à tous les utilisateurs.


~./bash_profile :

Fichier d'initialisation de l'utilisateur. Il est exécuté par le shell de login.


~./bashrc :

Fichier de démarrage personnel pour les shells interactifs.


~./bash_logout :

Fichier de sortie de shell de login, lors de la deconnexion de l'utilisateur.


~./inputrc :

Fichier d'initialisation personalisé de « readline ».



  1. Les variables d'environnement


env :

liste des variables d'environnement système.


echo : (echo $variable) --> ex : echo $SHELL affiche le shell courant

affiche une variable d'environnement


export : (export variable) --> ex : export display=10.128.192.16:0.0

positionne la valeur d'une variable d'environnement



  1. Les alias


Le fichier /etc/bashrc initialise un environnement commun à tous les utilisateurs du système.

Dans ce fichier, on pourra placer des alias valables pour tous les utilisateurs.

 

Exemples :


alias ll= « ls -l »

alias x= « startx »

alias qui= « who -Hu »

Si on saisit « ll » dans un terminal le résultat sera le même que si l'onavait saisit « ls -l »



  1. Les scripts shell


Un script shell, est une suite de commandes mises dans un fichier caractérisé par :

#! : Placé sur la première ligne du script, le « sha-bang » désigne de manière explicite le shell qui doit exécuter le script.

Après le « sha-bang » on trouve le chemin vers le programme qui interprète le script

#!/bin/sh

#!/bin/bash

#!/usr/bin/perl

L'attribut exécutable (chmod u+x)

L'éxécution est réalisée par : ./script



Lancement d'un script :


Rendre le script exécutable :

$chmod 555 le_script

Donne le droit de lecture écriture à tout le monde

$chmod +rx le_script

Donne le droit de lecture et d'éxecution à tout le monde

$chmod u+rx le_script

Donne le droit de lecture et d'éxecution seulement au propriétaire



./le_script : exécute le script


Le répertoire courant n 'est pas inclus dans le PATH de l'utilisateur.

Il faut lancer le script de façon explicite dans le répertoire courant avec ./





Les commandes de bases

  1. Fichiers et répertoires


Lister le contenu d'un répertoire


Ls [RadlF] [files]

Les options les plus utilisées sont:

-R: mode récursif

-a : inclut toutes les entrées même celles commençant par (.) (fichiers cachés).

-d : liste les propriétés d'un répertoire et non son contenu.

-l : liste avec tous les détails sur les fichiers.

-F : ajoute un (/) après chaque répertoire,(*) après chaque fichier exécutable, (@), après un lien symbolique.



Connaître son répertoire courant :


pwd



Se déplacer dans un répertoire :


cd [nom_répertoire]



Copie de fichiers


cp <fichier_source><fichier_destination>

cp <fichier_source><répertoire_destination>

cp -r <répertoire_source><répertoire_destination>

-i: mode interactif

-r: mode récursif (utilisé pour les répertoires)

-p: préserve le propriétaire, le groupe ID, les droits, et la date de dernière modification.



Supprimer des fichiers ou des répertoires


rm [-ifr] f1 f2 f3 ...fn

-i: mode interactif

-f: enlève tous les fichiers d'un répertoire sans demander de confirmation

-r: mode récursif sur les répertoires



Déplacer un fichier ou renommer un répertoire


mv [-fi] f1 f2 f3 ...fn

-i: mode intéractif

-f: déplace tous les fichiers sans demander de confirmation

mv <fichier_source><destination>



Gestion des répertoires :

Création

mkdir répertoire1...répertoireN (l'ordre hiérarchique doit être respecté)


Suppression d'un répertoire vide

rmdir repertoire1 repertoire2


Suppression d'un répertoire non vide

rm -r répertoire1 répertoire2



  1. Permissions et droits d'accès


Permission sur les fichiers

3 catégories: r-read, w-write, x-exécution

3 classes d'utilisateurs: user, group, other


Permission sur les répertoires

r: possibilité de lire le contenu du répertoire (ls)

w: possibilité de détruire ce qui se trouve dans le répertoire (rm)

x: possibilité de traverser le répertoire (cd)


Il existe deux façons de noter les permissions sur un fichier:

Explicitement:


User group others

u g o

read write execute read write execute read write execute

r w x r w x r w x


Exemple: rwx_x__: tous les droits pour le propriétaire du fichier, les droits de lecture et d'exécution pour les membres du groupe et aucun droits pour les autres utilisateurs.


Numériquement:


User group others

u g o

read write execute read write execute read write execute

r w x r w x r w x

4 2 1 4 2 1 4 2 1


Exemple :

rwxrwxrwx = 4+2+1 4+2+1 4+2+1 = 777

rw_r__r__ = 4+2 4 4 = 644



chmod change les droits d'un fichier ou d'un répertoire.

Cette commande peut utiliser les deux représentations précédentes:

chmod u+x fichier : ajouter l'exécution pour le propriétaire

chmod 755 fichier : positionne les droits de fichier à 755.

chmod -R o+r répertoire : ajoute les droits de lecture pour les utilisateurs n'appartenant pas au groupe propriétaire.

Remarque : La lettre a (pour all) peut être utilisée avec chmod (chmod a+w fichier).


chown change le propriétaire d'un fichier ou d'un répertoire. Cette commande s'utilise de la façon suivante :

chown <new_user> fichier : change l'utilisateur courant du fichier en <new_user>

chgrp change le groupe propriétaire d'un fichier ou d'un répertoire. Cette commande s'utilise de la façon suivante :

chgrp <new_grp> fichier : change le groupe du fichier en <new_grp>


La commande umask permet de connaître ou de modifier le masque de droits par défaut utilisé lors de la création des fichiers et des répertoires. Attention pour définir le umask, il faut utiliser le complément des droits souhaités.


Exemple :

Droits souhaités 620 : commande umask 157 (157=777-620)

Droits souhaités 755 : commande umask 022 (022=777-755)



Gestion des droits avancée


Bit SETUID : Un fichier qui a le drapeau spécial SETUID, lorsqu'il est exécuté, l'est avec les droits de son propriétaire, et non avec ceux de l'utilisateur qui le lance. Par exemple, le programme passwd, qui permet à un utilisateur de modifier son mot de passe, est setuid root.


Bit SETGID : De la même façon, un exécutable peut être SETGID, et s'exécuter avec les droits du groupe auquel il appartient.


Sticky bit : C'est un droit spécial qui s'applique aux répertoires et qui limite les actions de suppression d'un utilisateur aux fichiers qu'il possède.


Quand on écrit les permissions en octal, setuid, setgid et sticky bit sont représentés par une nouvelle série de 3 bits, qui se place avant les 3 autres séries.


SETUID : Le caractère x des droits du propriétaire est remplacé par un s lorsque le droit SETUID et positionné. Le caractère S apparaît à la place de s si le fichier n'est pas exécutable par son propriétaire.


SETGID : Le caractère x des droits du groupe est remplacé par un s lorsque le droit SETGID et positionné. Le caractère S apparaît à la place de s si le fichier n'est pas exécutable par le groupe.


Sticky bit : Le caractère x des droits des autres est remplacé par un t lorsque le droit Sticky bit est positionné. Le caractère T apparaît à la place de t si le fichier n'est pas exécutable.


On positionne le droit SETUID sur un fichier de la façon suivante :

chmod u+s fichier


On positionne le droit SETGID sur un fichier de la façon suivante :

chmod g+s fichier


On positionne le droit Sticky bit sur un répertoire de la façon suivante :

chmod o+t fichier


Exemple avec /bin/su :


rwsr-xr-x 1 root root 18904 aoû 3 23:31 /bin/su*


Le programme /bin/su doit pouvoir être executé par tous les utilisateurs et il appartient à root.

La représentation octal est : 4755



Notions de sécurité : Il est conseillé de vérifier périodiquement l'existence de droits spéciaux sur les fichiers de votre système. Ceci afin de détecter les exploits.


Pour rechercher les fichier ayant le droit SETUID positionné :

find / -type f -perm +4000


Pour rechercher les fichier ayant le droit SETGID positionné :

find / -type f -perm +2000


Pour rechercher les fichier ayant le droit Sticky bit positionné :

find / -type f -perm +1000





  1. Autres commandes très utiles


Lire un fichier

cat [-n] <nom_du_fichier>

Concaténer des fichiers

cat fic1 fic2 fic3 ...ficn

Ecrire dans un fichier

cat > <nom_fichier> : écrit dans un fichier en écrasant toutes les données précédentes.

cat >> <nom_fichier> : écrit dans un fichier à la suite des données existantes.

Remarque : L'écriture effective dans le fichier ne s'effectue qu'après avoir tapé sur la touche « entrée ». Pour arrêter l'édition, appuyer simultanément sur ctrl et D.


Lire les premières lignes d'un fichier

head [nombre de lignes] <fichier>


Lire les dernières lignes d'un fichier

tail [nombre de lignes] <fichier>

tail -f [nombre de lignes] <fichier> : affichage en continu des dernières lignes d'un fichier (utile pour les fichiers log).


Lire un fichier en mode paginé

more <fichier>


Comparaison de deux fichiers

diff [-iw] [-l] [-r] <fic1> <fic2>

diff [-iw] [-r] <d1> <d2>

-w: ignore tous les espaces

-l: sortie en format long

-r: mode récursif

Comapraison de 3 fichiers

diff3 <fic1> <fic2> <fic3>

Affichage des lignes communes entre 2 fichiers

comm <fic1> <fic2>



Détermination du type d'un fichier

file <fichier>


Détermination du chemin d'accès d'une commande

type <commande>

which <commande>



  1. Les liens


Un lien est utilisé pour créer une entrée dans un répertoire sur un fichier existant sans recopier ce fichier.


Lien physique :

Un lien physique ou dur, est une seconde entrée dans un répertoire et en incrémentant le compteur de référence des inodes.


Lien symbolique :

Un lien symbolique est un fichier spécial de type (l) qui contient le chemin du fichier vers lequel il pointe.


Créer un lien

ln [-s] <fichier_source> <nom du lien>

-s: lien symbolique


Supprimer un lien

unlink <nom_du_fichier>



  1. Les processus


Un processus est une actvité du système :

Il représente l'état d'avancement de l'exécution d'un programme.

Il ne peut être lancé que par un autre processus.

Il existe donc une généalogie des processus comparable à l'arborescence des fichiers.

Tous les processus héritent du processus 1, processus init lancé au démarrage du système.


Quelques caractéristiques d'un processus :

Son identifiant (un entier) : PID

L'identifiant de son processus parent : PPID

Son propriétaire,

Un certain nombre d'autres caractéristiques (priorités, répertoire de travail, temps d'exécution ...).


ps liste les processus dans la machine

ps [options]

Les principales options sont :

-a: donne des informations sur tous les processus

-e: donne des informations sur tous les processus en cours d'exécution,

-l: génère un listing long,

-f: génère un listing complet,

-u: donne des informations liées à un utilisateur.


Exemples :

Voir tous les processus qui tournent sur sa machine : ps -eaf

Voir tous les processus associés à un utilisateur : ps -ef | grep <utilisateur>

Voir si le processus de l'application XY est encore actif : ps -ef | grep <application>


kill permet d'envoyer un signal à un processus.

kill -l: liste les différents signaux disponibles sur le système.

kill -15: equivalent à kill -TERM (kill propre)

kill -9 process_id: termine le processus (manière forte et absolue).

kill -STOP process_id: stop le processus

kill -CONT process_id: relance un processus stoppé.



  1. Archivage


Archiver un fichier ou un répertoire

tar -cvfp nom_de_l_archive.tar nom_du_repertoire ou_du_fichier

Exemple : tar -cvfp /home/user1.tar /home/user1


Désarchiver un fichier ou un répertoire

tar -xvfp nom_de_l_archive.tar

Exemple : tar -xvfp home/jyb.tar


Déziper et désarchiver un fichier au format tar.gz ou tgz

tar -zxvf nom_de_l_archive.tar.gz


Fichiers zipés à l'aide de bzip2

tar -jxvf nom_de_l_archive.tar.bz2







 

 

Dernière mise à jour : ( 28-03-2006 )
 
Suivant >

Nombre de visiteur


Depuis le 12/03/2006