WIKI Retour au Portfolio

Dernière mise à jour : 23 juin 2026

2 - Tâches basiques

Maîtrise du shell Bash sous RHEL 9 : ligne de commande, aide (man), éditeur vi/vim, redirections, historique, expansion, variables, alias et fichiers de démarrage. Cœur de l'objectif EX200 « Understand and use essential tools ».

A. Ligne de commande et terminal

  • Le shell est l'environnement où l'utilisateur communique avec l'OS. Bash est le shell par défaut sous RHEL 9.
  • GNOME est l'interface graphique (GUI) par défaut.
  • Depuis le shell graphique, on ouvre une fenêtre terminal qui exécute Bash.

Terminal :

  • C'est un environnement qui exécute le shell.
  • En mode graphique, plusieurs terminaux peuvent être ouverts simultanément.
  • En mode texte (console), un seul terminal est lancé depuis la console. Pour contourner cela, on dispose de terminaux virtuels accessibles via Ctrl+Alt+Fn.
who           # affiche les utilisateurs/terminaux connectés
w             # qui est connecté + activité (load, idle, process)
sudo chvt 4   # bascule vers le terminal virtuel n°4 (sudo = superuser do)
# Ctrl+Alt+F4 : équivalent graphique de "chvt 4"

Exemple — ouverture d'un 2e terminal virtuel et vérification avec w :

Sortie de la commande w avant et après ouverture d'un terminal virtuel : clienthamid sur tty2 puis root sur tty4

💡 tty1 est généralement la session graphique (GNOME) sous RHEL 9 ; tty2tty6 sont des consoles texte.

B. Anatomie d'une commande Linux

  • Une commande peut prendre des arguments (ce sur quoi elle agit) et des options (qui modifient son comportement).
  • --help donne une aide rapide sur la plupart des commandes.
ls -l /etc        # ls = commande, -l = option, /etc = argument
ls --help         # aide synthétique de la commande

C. Aide système : man

man passwd            # manuel de la commande passwd
man 5 passwd          # section 5 : le format du fichier /etc/passwd
man -a passwd         # parcourt toutes les sections disponibles une à une

Navigation dans man : / chercher en avant, ? chercher en arrière, G aller à la fin, g aller au début, q quitter.

Sections de man utiles pour le RHCSA :

Section Contenu
1 Programmes exécutables / commandes shell
5 Formats de fichiers (ex : /etc/passwd, /etc/fstab)
8 Administration système (commandes root)

Les pages man sont indexées dans la mandb (base de données) :

sudo mandb            # (re)construit la base de données man en root
man -k user           # recherche par mot-clé "user" dans la mandb (= apropos)
man -k user | grep 8  # filtre les résultats sur la section 8 (admin système)

Recherche man -k user filtrée par grep 8 et tail -4 : pages man de la section 8 (administration) liées aux utilisateurs

💡 apropos motman -k mot. Autres outils d'aide : pinfo, info, et la doc dans /usr/share/doc/.

D. Éditeurs de texte

La configuration Linux se fait par modification de fichiers texte :

  • ASCII : la plupart des fichiers de config classiques.
  • YAML : management de config (ex : Ansible).
  • JSON : format de stockage de données.
  • XML : alternative plus ancienne à JSON/YAML.

Éditeurs courants : nano (simple), vim (version améliorée de vi, utilisée par les pros).

🚨 Sous RHEL 9, vi est un lien minimal ; le paquet complet est vim-enhanced (à installer si absent : sudo dnf install vim-enhanced).

Modes et raccourcis vim :

Touche Action
Esc passer en mode commande
i / a passer en mode insertion (avant / après le curseur)
o ouvrir une nouvelle ligne en dessous + mode insertion
:wq écrire (write) et quitter
:q! quitter sans sauvegarder
dd supprimer la ligne courante (coupe dans le buffer)
yy copier (yank) la ligne courante
p coller (paste) le contenu du buffer
v entrer en mode visuel (sélection)
u annuler (undo) la dernière modification
Ctrl+R rétablir (redo)
gg aller au début du document
G aller à la fin du document
/texte rechercher vers l'avant
?texte rechercher vers l'arrière
^ début de ligne
$ fin de ligne
w mot suivant
:%s/old/new/g substituer toutes les occurrences de old par new
:set number afficher la numérotation des lignes

💡 vimtutor est un tutoriel interactif intégré pour apprendre vim.

E. Redirections et pipes

Trois flux standard : STDIN (0, entrée), STDOUT (1, sortie), STDERR (2, erreurs).

Opérateur Effet
> redirige STDOUT vers un fichier (écrase)
>> redirige STDOUT vers un fichier (ajoute à la suite)
2> redirige STDERR
2> /dev/null jette les erreurs (poubelle)
&> redirige STDOUT et STDERR
< utilise le contenu d'un fichier comme STDIN
| pipe : STDOUT de la 1re commande → STDIN de la 2e
echo "test hamid" > test         # crée/écrase test avec une ligne
cat test                         # -> test hamid
echo "test une ligne en plus" >> test   # ajoute à la suite
cat test                         # -> 2 lignes
cat test | grep plus             # n'affiche que la ligne contenant "plus"
ls -l | grep user                # liste filtrée sur "user"

Exemple complet (création, écrasement, ajout, filtrage) :

Démonstration des redirections : création avec >, écrasement, ajout avec >> puis filtrage par pipe vers grep plus

🚨 > écrase sans avertissement. Une faute de frappe sur un fichier important = perte de données.

F. Historique de commandes

L'historique se trouve dans ~/.bash_history.

history             # affiche l'historique numéroté
!42                 # ré-exécute la commande n°42 de l'historique
!!                  # ré-exécute la dernière commande
history -w          # écrit l'historique courant dans le fichier
history -c          # vide l'historique de la session courante (mémoire)
history -d 5        # supprime l'entrée n°5
  • HISTSIZE : nombre de commandes gardées en mémoire pour la session.
  • HISTFILESIZE : nombre de lignes conservées dans le fichier ~/.bash_history.

Variables d'historique HISTFILE et HISTFILESIZE/HISTSIZE puis sortie de la commande history numérotée

G. Raccourcis clavier du shell

Raccourci Action
Ctrl+C interrompt le process en cours
Ctrl+D envoie EOF (end-of-file) au process interactif (≈ logout)
Ctrl+A curseur en début de ligne
Ctrl+E curseur en fin de ligne
Ctrl+R recherche inversée dans l'historique
Ctrl+L efface l'écran (≈ clear)
Ctrl+U efface du curseur au début de ligne
Alt+B curseur recule d'un mot (backward)
Alt+F curseur avance d'un mot (forward)

H. Shell expansion (globbing & expansion)

ls *                  # tous les fichiers
ls a?                 # "a" suivi d'UN seul caractère
ls [a-e]*             # commence par a, b, c, d ou e
touch file{1..9}      # crée file1 ... file9 (expansion d'accolades)
useradd {hamid,hamid1,hamid2}   # 3 fois useradd (1 par élément)
ls -l $(which passwd) # command substitution : output de "which passwd" en argument

💡 {1..9} = séquence ; {a,b,c} = liste. Le * (glob) est interprété par le shell, pas par la commande.

I. Guillemets et échappement : " ' \

  • "…" (double) : conserve le sens des variables ($), mais protège les espaces.
  • '…' (simple) et \ : suppriment le sens spécial (littéral).
echo $PATH        # affiche le contenu de la variable PATH
echo "$PATH"      # affiche aussi le contenu (variable interprétée)
echo '$PATH'      # affiche littéralement : $PATH
echo \$PATH       # affiche littéralement : $PATH (échappement du $)

ls -l hamid hamid2          # 2 arguments séparés
ls -l "hamid hamid2"        # 1 seul argument (fichier nommé "hamid hamid2")

J. Variables

  • Séparent les données spécifiques du code ; utiles dans les scripts.
  • Bash possède des variables prédéfinies. env les liste.
env                    # variables d'environnement de la session
color=blue             # variable LOCALE (shell courant uniquement)
echo $color            # -> blue
export color=green     # variable d'ENVIRONNEMENT (héritée par les sous-shells)

Pour rendre une variable globale et persistante, on l'ajoute à un fichier de config (voir section L).

K. Alias

alias del='rm -rf'     # "del" exécutera "rm -rf"
unalias del            # supprime l'alias
alias                  # liste les alias actifs

🚨 Ne jamais créer un alias dangereux comme alias del='rm -rf /'. Un alias persistant qui masque une commande système peut détruire des données ou rendre une commande inopérante.

L. Startup files (fichiers de démarrage)

Fichier Rôle
/etc/profile settings système chargés par un login shell (tous les users)
/etc/bashrc exécuté à l'ouverture d'un sous-shell (non-login)
~/.bash_profile version par utilisateur de /etc/profile (login shell)
~/.bashrc version par utilisateur de /etc/bashrc (sous-shell)

Pour des variables/alias personnels et persistants, on les met dans ~/.bashrc (et ~/.bash_profile).

# Dans ~/.bash_profile :
export color=red
alias dir='ls -ltr'
export HISTFILESIZE=2500

source ~/.bash_profile   # applique les changements sans rouvrir de session
echo $color              # -> red
echo $HISTFILESIZE       # -> 2500
dir                      # -> résultat de "ls -ltr"

💡 source fichier. fichier : exécute le fichier dans le shell courant (les variables restent définies).

M. Compléments EX200 (« essential tools ») non détaillés dans les notes

L'objectif officiel « Understand and use essential tools » de l'EX200 inclut aussi des points non couverts ci-dessus. Rappel synthétique :

# grep + expressions régulières
grep -i "motif" fichier        # recherche insensible à la casse
grep -E "ab+c" fichier         # ERE (regex étendues)

# Gestion fichiers / répertoires
cp -r src/ dest/ ; mv a b ; rm -r dir/ ; mkdir -p a/b/c

# Liens
ln    fichier  lien_dur        # hard link (même inode)
ln -s fichier  lien_symbolique # lien symbolique (soft link)

# Permissions ugo/rwx
chmod 644 fichier ; chmod u+x script.sh ; chown user:group fichier

# Archivage / compression
tar czf arch.tar.gz dossier/   # crée (gzip)
tar xzf arch.tar.gz            # extrait
gzip f / gunzip f.gz ; bzip2 f / bunzip2 f.bz2

# Accès distant
ssh user@hote ; su - user      # SSH + changement d'utilisateur

⚠️ Non couvert par les notes : grep/regex, liens durs vs symboliques, permissions ugo/rwx, archivage tar/gzip/bzip2, accès SSH et su. Ces sujets font partie de l'objectif EX200 et sont traités dans d'autres modules (permissions, stockage, réseau) — à réviser séparément.


Sources : EX200 – Red Hat Certified System Administrator exam