0% ont trouvé ce document utile (0 vote)
2 vues39 pages

Introduction au Shell Linux et Système de Fichiers

Transféré par

Mostapha Abdelmoula
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues39 pages

Introduction au Shell Linux et Système de Fichiers

Transféré par

Mostapha Abdelmoula
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module : Administration

Système Linux

Cycle Ingénieur : Génie Informatique


Niveau : GI2

Pr. Ahmad EL ALLAOUI

cyclegi2@[Link]
2023/2024
• Initiation au Shell
• Commandes
• Système de fichiers
• Permissions sur les fichiers
Initiation au shell

• Une fois connecté, le système nous connaît,


ouvre une session à notre nom et attend nos
instructions via un programme spécial:
• Le Shell = interpréteur de commandes
– interface utilisateur “de base” (interlocuteur avec le syst.)
– interprétation ligne à ligne
– plusieurs shells: sh, csh, tcsh, bash, ksh, zsh, ...
– configurable: fichiers d’environnement (commençant par un “.”)
• “.login”
• “.logout”
• “.bashrc”
– langage de programmation

• shell par défaut : bash


Initiation au shell

Shell est à rapprocher du mot kernel : le kernel, signifiant noyau, est


souvent entouré d’une coquille dure (pensez à un noyau d’abricot
ou de pêche). shell signifiant coquille, c’est donc ce qui « entoure »
le noyau Linux : le moyen de l’utiliser à l’aide de commandes. C’est
donc une interface fonctionnant en mode texte entre le noyau Linux
et les utilisateurs (avancés), voire les applications.

• Voici une liste non exhaustive d’interpréteurs de commandes que


vous pouvez rencontrer sous Linux :
– sh : Thompson Shell (n’existe plus) ;
– sh : Bourne Shell (a remplacé le précédent) ;
– bash : Bourne Again Shell ;
– ksh : Korn Shell ;
– csh : C Shell ;
– zsh : Z Shell ;
– tcsh : Tenex C Shell ;
– ash : A Shell ;
– dash : Debian Almquist Shell.
Initiation au shell

• La liste des shells actuellement présents sur votre installation


Linux est présente dans le fichier /etc/shells
• vous pouvez consulter cette liste en tapant la commande
suivante : more /etc/shells comme l’illustre l’image ci-dessous:
user1@ubuntu:~$ more /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
Initiation au shell

Le shell attend des entrées au clavier sur une ligne appelée l’invite
de commande ou prompt.
L’invite fournit des informations sur le terminal et votre position
dans le système de fichiers.
ahmad@ubuntu:~$
Vous trouvez quatre informations :
ahmad : c’est le nom de la connexion, ou login de l’utilisateur,
actuellement connecté au terminal ;
ubuntu : c’est le nom d’hôte (hostname), le nom de la machine
raccordée au terminal ;
~ : c’est la position actuelle du shell dans le système de fichiers,
dossier personnel « /home/ubuntu » sous linux ;
$ : c’est la terminaison standard du bash pour un utilisateur sans
pouvoirs. utilisateur normal
Cette invite vous informe que c’est l’utilisateur sans pouvoirs
d’administration ahmad qui est connecté sur la
machine ubuntu et qu’il est actuellement positionné dans .
# : super utilisateur ou root
Initiation au shell
- commandes -
Pour quoi la console:
• Un exemple ? En mode graphique, allez dans un répertoire qui
contient beaucoup de fichiers en tout genre : des fichiers texte, des
images, des vidéos. . . Vous voudriez savoir combien il y a d'images
JPEG dans ce dossier : pas facile .. ?
• En console, en assemblant quelques commandes, on peut obtenir ce
résultat sans problème !
Commande: ls -l | grep jpg | wc -l
Résultat: 510
• On peut même faire encore plus fort et enregistrer
directement ce nombre dans un chier texte
ls -l | grep jpg | wc -l > nb_jpg.txt
• Format des commandes:
cde [-option(s)] [argument(s)]
Initiation au shell
- commandes -
• Exemples:
– date
– whoami
affiche le nom de l’utilisateur connecté
– echo
affiche un message (echo "bonjour !")
– ls
liste le contenu
d’un répertoire
– man <cde>
manuel en ligne
Initiation au shell
- commandes -
• Exemples:
• ls est une commande qui sert à lister le
contenu d’un dossier
– les options les plus communes sont :
• -a : affiche les fichiers cachés
• -l : affiche les détails des fichiers
• -h : affichage forme humaine (pour les unités)
• -P : ne pas prendre en compte les liens
symboliques
• -R : afficher le contenu des répertoires
récursivement
Initiation au shell
- méta caractères -

• Caractères spéciaux:

! ^ * ? [] \ ; & < > | >>

• L'astérisque ou étoile: *
– interprété comme toute suite de caractères
alphanumériques
– utiliser avec précaution (commande rm par ex...)

• Le point d’interrogation: ?
– remplace 1 seul caractère alphanumérique
Initiation au shell
- méta caractères -
• Le point-virgule: ;
– Séparateur de commandes
• Les crochets: []
– Remplace un caractère choisi parmi ceux énumérés entre
les crochets [a-z]
• L’anti-slash: \ Inhibe la signification du méta-caractère
qui suit

• Interprétation des chaînes de caractères


– Texte entre '' (simples quotes): le texte n’est pas
interprété mais considéré comme un mot
– Texte entre "" (doubles quotes): seuls sont interprétés les
métacaractères $, \ et `
– Texte entre `` (anti quotes): considéré comme une
commande à interpréter, et c’est le résultat qui sera utilisé.
Initiation au shell
- méta caractères -
• Exemples:
– echo *
Tous les fichiers sauf ceux dont le nom commence par un point
– echo *c
Tous les fichiers dont le nom se termine par un ‘c’
– echo .*
Tous les fichiers dont le nom commence par un point
– echo [0-9]*
Tous les fichiers dont le nom commence par un chiffre
Initiation au shell : Caractères spéciaux
- méta caractères -
Caractère Description
Permet la communication par tube entre deux commandes.
| Exemple : ls -1 | file la commande de listage des fichiers du répertoire (ls) envoie
chacun d'eux à la commande qui permet de connaître le type d'un fichier (file).
Introduit un commentaire. Donc tout ce qui suit ce caractère dans une ligne est ignoré par le Shell.
#
Exemple : # ceci est un commentaire.
Déspécialise le caractère qui suit. C'est-à-dire que si le caractère qui suit celui là est un caractère
\ spécial alors le Shell l'ignorera.
Exemple : echo Bon\;jour affiche bon*jour à l'écran.
Défini une chaîne de caractères qui ne sera pas évaluée par le Shell.
'...' Exemple : echo '*?&' affiche sur la sortie standard les caractères spéciaux *?& sans les
interpréter.
Défini une chaîne de caractères dont les variables seront évaluées par le Shell.
"..." Exemple : echo "Vous êtes $USER." affiche Vous êtes + la valeur de la variable
$USER.
Défini une chaîne de caractères qui sera interprétée comme une commande et remplacée par la
chaîne qui serait renvoyée sur la sortie standard à l'exécution de la dite commande.
`...` Exemple : echo `pwd` >> [Link] écrit à la fin du fichier le chemin et le nom du
répertoire courant. Le caractère spécial utilisé s'obtient par la combinaison de touche : AltGr
+ 7 (c'est l'accent grave).

13
Initiation au shell: Caractères spéciaux
- méta caractères -

Caractère Description
Métacaractère qui remplace n'importe quelle chaîne de caractères (même vide).
*
Exemple : cp * DATA copie tous les fichiers dans le répertoire DATA.
? Métacaractère qui remplace un caractère quelconque.
Permet de séparer plusieurs commandes écrites sur une même ligne.
Exemple :
;
cp *.c DATA; tar cvf [Link] DATA copie tous les fichiers d'extention .c
dans le répertoire DATA et les archive dans le fichier [Link].
Regroupe des commandes.
Exemple :
( )
(echo "Liste :"; ls ) > [Link]
écrit la chaîne Liste : et la liste des fichiers du répertoire courant dans le fichier [Link].
Permet le lancement d'un processus en arrière plan. Cela permet d'exécuter d'autres commandes
& pendant qu'un processus est en marche.
Exemple : netscape&

14
Administration Système Linux

Le système de fichiers
Le système de fichiers

• Stocke les données:


– de façon hiérarchique
– structure arborescente
– TOUT est fichier
• 3 types de fichiers:
– fichiers ordinaires : .doc txt
– répertoires
– fichiers spéciaux (périph., …)
Introduction

Sous l’unix un fichier est :


o toujours désigné par un nom.
o possède un unique inode (certaines informations concernant le
fichier).
o possède les fonctionnalités suivantes :
▪ ouverture
▪ fermeture.
▪ lecture (consultation).
▪ écriture (modification)

Un fichier peut être :


o ordinaire (on utilise parfois le terme "normal") (-) : fichiers texte
(.txt,.doc,.odt…), les sons (.wav,.mp3,.ogg)…
o un répertoire (d)
o un lien symbolique (l)

17
Le système de fichiers
- Architecture des dossiers -

• La racine :dans un système de fichiers, il y a


toujours ce qu'on appelle une racine, c'est-à-dire un
« gros dossier de base qui contient tous les
autres dossiers et fichiers ».
• Sous Linux, il n'y a qu'une et une seule racine : «/ »
• c'est au contrairede Windows le « / » qui sert de
séparateur. /home/user
• Il n'y a pas de C:sous Linux, la racine (le début)
s'appelant juste/.
Le système de fichiers
- Architecture des dossiers -
Schéma de l'architecture
• Pour que vous vous y repériez correctement, sachez
qu'on peut présenter l'organisation des dossiers de
Linux comme le suggère la figure suivante.
/

bin tmp home dev


• pwd : afficher le dossier actuel
• which : connaître l'emplacement d'une commande
Ahmed

TP cours docs

[Link]
Système de fichiers

La racine de l'arborescence Linux contient ces répertoires :


bin programmes utilisateur essentiels (nécessaires au démarrage du
système)
boot fichiers nécessaires au chargement de Linux (bootloader, initrd, noyau)
dev fichiers spéciaux offrant l'accès aux périphériques
etc configuration du système et des services
home répertoires principaux des utilisateurs
lib librairies partagées essentielles (nécessaires au démarrage du système)
mnt contient des points de montage temporaires (cdrom, floppy, etc.)
proc et sys systèmes de fichiers virtuels permettant d'accéder aux structures
internes du noyau (sys est nouveau depuis la version 2.6 de Linux)
root répertoire principal de l'utilisateur root
sbin exécutables système essentiels (nécessaires au démarrage du système)
tmp répertoire pour le stockage de fichiers temporaires
usr arborescence contenant la plupart des fichiers des applications
var données vivantes du système et des applications

20
/etc /lib

• /etc/X11 : fichiers et répertoires de configuration du système et des


applications
• /etc/rc* :
/etc configuration du système X11
• /etc/pam.d : configuration, par service, des Pluggable Authentication Modules

• /etc/httpd : fichiers de configuration du serveurWeb Apache


• /etc/mail : fichiers de configuration du système de messagerie Sendmail
/etc • /etc/ssh : fichiers de configuration et clés asymétriques d'OpenSSH

• /lib/modules modules du noyau


• /lib/security librairies PAM (Pluggable Authentication Modules)
/lib • /lib/iptables
• /lib/kbd
greffons iptables
codages clavier et polices de la console

21
/usr

/usr/bin la plupart des programmes utilisateur


/usr/games jeux …
/usr/include en-têtes standards pour le développement

/usr /usr/lib
ressources
librairies (.so pour Shared Objects) et autres
partagées
/usr/libexec binaires exécutables appelés par d'autres programmes
/usr/share ressources partagées indépendantes de la plate-forme
(pages de manuel, documentation, fichiers de données, etc.)

/usr/src sources du système (noyau, paquetages, etc.)

22
/var

/var/tmp fichiers temporaires préservés entre deux


démarrages
/var/www racine du serveurWeb
/var/log journaux du système et des applications
/var /var/spool données en attente d'un traitement
/var/spool/mail boîtes aux lettres des utilisateurs
/var/spool/cron tâches planifiées par les utilisateurs
/var/spool/lpd files pour le système d'impression

23
Le système de fichiers
- l’arborescence -

répertoire racine /

• le répertoire de login: ~ bin tmp home dev


• le répertoire courant: .
• le répertoire supérieur: ..
Ahmed
• connaître le rép. courant: pwd
• lister le contenu: ls
(voir “man ls”)
.cshrc cours docs

• chemin d’accès au fichier [Link]:


– /home/Ahmed/cours/[Link] [Link]
– ou bien: ~/cours/[Link]
Le système de fichiers
• pwd retourne: - l’arborescence -
/home/ahmed/cours

• se déplacer: cd /
[/home/ahmed/cours]$ cd ..
[/home/ahmed]$ tmp home
[/home/ahmed]$ cd /tmp
[/tmp]$
• chemin relatif coursSE ahmed
• chemin absolu

• créer un répertoire: mkdir


.cshrc cours docs
[/tmp]$ mkdir coursSE

• supprimer un répertoire: rmdir [Link]


[/tmp]$ rmdir coursSE
répertoire courant
Le système de fichiers
- l’arborescence -
• l y a deux façons de changer de dossier : en indiquant un chemin
relatif, ou en indiquant un chemin absolu.
• un chemin relatif, c'est-à-dire relatif au dossier actuel /
• se déplacer: cd chemin relatif
[/home/ahmed/cours]$ cd .. Dossier parent
tmp home
[/home/ahmed]$
[/home/ahmed]$ cd cours sous dossier
coursSE ahmed
• Contrairement aux chemins relatifs, les
chemins absolus fonctionnent quel que soit le
dossier dans lequel on se trouve.
.cshrc cours docs
• se déplacer: cd chemin absolu
[/home/ahmed]$ cd /tmp
[Link]
[/tmp]$ cd /home/ahmed/docs
répertoire courant
Le système de fichiers
- l’arborescence -
• Retour au répertoire personnel
• En utilisant le chemin absolu en entier.
/
[/home/ahmed/cours]$ cd /home/ahmed

La malinge: utiliser l'alias~ tmp home


[/home/ahmed/cours]$ cd ~

La super maligne: coursSE ahmed


[/home/ahmed/cours]$ cd

.cshrc cours docs

[Link]
répertoire courant
Le système de fichiers
- l’arborescence -
• Taille des dossiers

La commande « du », pour Disk Usage (utilisation


du disque) vous donne des informations sur la
taille(en Ko) qu'occupent les dossiers sur
votre disque.
du -h : la taille avec détail
du -a : afficher la taille des dossiers ET des
fichiers
du -s : avoir juste le grand total

La commande touch permet de changer les dates d’accès et les


modifications des fichiers. Si touch est appliquée à un fichier
inexistant, ce dernier est automatiquement créé. La
commande permet donc de créer des fichiers vides.
Le système de fichiers
- fichiers -

• Modifier le temps d’accès en utilisant Touch


l’heure d’accès d’un fichier à l’heure actuelle :
touch -a [Link]
– change l’heure de modification d’un fichier à
l’heure actuelle :
touch -m [Link]
– modifier à la fois le temps d’accès et de
modification touch -am [Link]
touch -am [Link]
Pour régler un fichier à une date souhaitée, utilisez l’option -t, en
spécifiant l'heure selon le format [AA]MMJJhh 19m[.ss].
touch -t 1803231037 [Link]
La date d’accès et de modification sera fixée au 23 mars 2018, à 10h37
Le système de fichiers

Nous allons d'abord voir comment afficher le contenu


d'un fichier
• cat : affiche tout le fichier
• cat –n d'affiche les numéros de ligne
La commande cat est rapide. Trop rapide. Tout le fichier est lu et affiché
d'un coup dans la console, ce qui fait que l'on n'a pas le temps de le lire s'il
est très gros.
• less : affiche le fichier page par page
– q pour sortir de less
Le système de fichiers

• Nombre de lignes, de mots d’un fichier : wc


• wc nomfichier : compte le nombre de lignes de mots et d’octets
– wc [Link] affiche : 3 40 587
• 3 lignes, 40 mots et 587 octets
– wc -l [Link] affiche : 3
– wc -w [Link] affiche : 40
– wc -c [Link] affiche : 587
• Pour avoir le nombre de fichiers d’un répertoire, vous utilisez le
pipe |. En entrée du pipe, vous listez les fichiers de votre
répertoire(ls), et en sortie vous comptez le nombre de lignes
listées (wc -l).
$ ls
doss1 doss2 doss3
$ ls | wc –l
3
Le système de fichiers

• tail : afficher la fin du fichier


– la commande tail vous renvoie la fin du fichier, donc les
dernières lignes.
– tail -n 3 /var/log/syslog affiche les 3 dernières lignes
tail –f : utile pour suivre un fichier de log qui évolue souvent
– tail -f /var/log/syslog : exemple [Link]
[Link]/ftp/mateo21/linux/tail_accesslog/tail_acces
slog.mp4
– tail -f -s 3 syslog
recherchera les changements toutes les trois secondes (plutôt
que toutes les secondes).
Le système de fichiers
▪ Copie d'un fichier (cp)
$ cp nom_fichier1 nom_fichier2
$ cp nom_fichier1 nom_répertoire

• Renommage ou déplacement d'un fichier (mv)


$ mv ancien_nom nouveau_nom (renommage)
$ mv nom_fichier nom_répertoire (déplacement)

▪ Création d'un répertoire (mkdir)


$ mkdir nom_répertoire (possible uniquement si celui-ci est inexistant)

▪ Destruction d'un répertoire (rmdir)


$ rmdir nom_répertoire (si le répertoire est vide)
$ rm -r nom_répertoire
(r comme récursif : effacement du contenu du répertoire et de lui-même)

▪ Déplacement dans les répertoire


$ cd nom_répertoire (changement de répertoire)
$ cd .. ()
Le système de fichiers: manipulation des fichiers

➢ Liste des fichiers (ls)


$ ls
fichier1

➢ Création d'un fichier


éditeur de textes ou directement sur l’interpréteur
$ cat > fichier1
1ère ligne

➢ Visualisation d'un fichier (cat)


$ cat nom_fichier

➢ Destruction d'un fichier (rm)


$ ls
fichier1
fichier2
$ rm fichier1
$ ls
fichier2
34
Variables d’environnement

➢ Permettent de garder en mémoire des informations


importantes

➢ Exemple :
✓ le login de l'utilisateur (stocké dans la variable $USER)
✓ le répertoire de connexion de l’utilisateur ($HOME)
✓ la liste des répertoires dans lesquels aller chercher les
exécutables des commandes externes ($PATH)
➢ La commande env affiche la liste de toutes les variables
d'environnement du Shell avec leurs valeurs.

35
Variables d’environnement

Variable=Valeur Description

PWD=/home/hugo Stocke le chemin et le nom du répertoire courant.


HOSTNAME=
localhost.l Nom du serveur.
ocaldomain
Taille de l'historique. L'historique garde en mémoire les dernières commandes passées au
HISTSIZE=1000 Shell. Ces dernières sont accessibles successivement par la touche fléchée vers le
haut.
LANGUAGE=fr Suffixe de la langue du système.

PS1=[\u@\h
Chaîne apparaissant à l'invite du Shell.
\W]\$

36
Variables d’environnement

Variable=Valeur Description
USER=hugo Nom de l'utilisateur.
DISPLAY=unix:0.0 Adresse du terminal d'affichage.
SHELL=/bin/bash Chemin et nom du programme Shell (il en existe plusieurs différents).
HOME=/home/hugo Chemin du répertoire de connexion.
PATH=:/usr/local
/bin:
Liste des répertoires où chercher les exécutables des commandes externes.
/bin:/usr/bin:
/usr/X11R6/bin

37
Exercice

C++
ALGO
JAVA
TEC
GL
BD SGBD

SE LINUX [Link]

1- Créer l’arborescence ci-dessus dans le répertoire personnel (~)


2- Afficher cette arborescence
3- Supprimer le répertoire TEC
4- Supprimer le répertoire BD
5- Déplacez-vous dans le répertoire LINUX, quel est le chemin
absolu du répertoire LINUX?
6- Supprimer le répertoire JAVA à partir du répertoire LINUX
Administration Systèmes
Linux

Les redirections

Vous aimerez peut-être aussi