### A.
Commandes Linux
#### Exercice 1 – Documentation en ligne
1. **Quelle documentation contient ce manuel ? Comment est-il structuré ?**
Le manuel en ligne (accédé via la commande `man`) fournit des informations sur les commandes,
les systèmes, et les bibliothèques de Unix/Linux. Il est structuré en sections numérotées :
- **Section 1** : Commandes utilisateur (e.g., `ls`, `grep`)
- **Section 2** : Appels système (e.g., `write`, `open`)
- **Section 3** : Fonctions de bibliothèque
- **Section 4** : Fichiers de configuration
- **Section 5** : Formats de fichiers (e.g., `/etc/passwd`)
- **Section 6** : Jeux
- **Section 7** : Macro-commandes, conventions, standards
- **Section 8** : Commandes administratives et système (e.g., `shutdown`, `mount`)
Chaque section peut contenir des sous-sections détaillant la syntaxe, les options, les descriptions et
des exemples d'utilisation.
2. **La commande `write` porte le même nom que l'appel système `write`. Comment accède-t-on à
la page du manuel concernant l'appel système `write` ?**
Le manuel de l'appel système `write` est dans la section 2. Pour y accéder, on utilise :
```
man 2 write
```
Cela permet de spécifier que l'on veut consulter la page du manuel dans la section 2 (les appels
système).
3. **Commande `ls` : précisez les options que vous savez utiliser et celles que vous pourriez
éventuellement utiliser.**
Quelques options courantes pour la commande `ls` :
- `-l` : Affiche la liste des fichiers avec des détails (permissions, taille, date de modification, etc.).
- `-a` : Affiche tous les fichiers, y compris les fichiers cachés (ceux qui commencent par un point).
- `-h` : Affiche les tailles de fichiers dans un format lisible (par exemple, `1K`, `5M`).
- `-R` : Affiche récursivement le contenu des sous-répertoires.
- `-t` : Trie les fichiers par date de modification.
- `-S` : Trie les fichiers par taille.
- `-r` : Affiche les fichiers dans l'ordre inverse.
D'autres options plus avancées incluent `-i` (affiche les numéros d'inodes), `-d` (affiche uniquement
les répertoires), et `-1` (affiche chaque fichier sur une ligne).
---
#### Exercice 2 – Création d'arborescence
1. **Création de l'arborescence sans bouger du répertoire racine (~)**
On peut créer une arborescence de répertoires en utilisant la commande `mkdir` avec l'option `-p`
pour créer des répertoires parents au besoin.
Exemple d'arborescence :
```
~/mon_rep/rep1/rep2
```
La commande correspondante serait :
```
mkdir -p ~/mon_rep/rep1/rep2
```
---
#### Exercice 3 – Navigation dans l'arborescence
1. **Création du répertoire `test` et de ses sous-répertoires `pub` et `bin` :**
```
mkdir ~/test
mkdir ~/test/pub
mkdir ~/test/bin
```
2. **Modification des droits d'accès :**
- **Répertoire `test` et `pub` (lecture et exécution pour tous, écriture pour le propriétaire) :**
```
chmod 755 ~/test
chmod 755 ~/test/pub
```
Ici, `755` permet au propriétaire de lire, écrire et exécuter, et aux autres utilisateurs de lire et
exécuter.
- **Répertoire `bin` (exécution pour tous, lecture et écriture pour le propriétaire et son groupe) :**
```
chmod 770 ~/test/bin
```
Cela donne au propriétaire et au groupe tous les droits, et aux autres utilisateurs aucun droit.
3. **Création du fichier `doc.txt` et copie dans `pub` :**
```
touch ~/test/doc.txt
cp ~/test/doc.txt ~/test/pub/
```
4. **Afficher le contenu de `doc.txt` dans `pub` depuis le répertoire `bin` :**
```
cat ~/test/pub/doc.txt
```
5. **Afficher la liste des fichiers dans `test` et ses sous-répertoires :**
```
ls -R ~/test
```
6. **Supprimer les fichiers se terminant par `~` dans `test` et ses sous-répertoires :**
```
find ~/test -type f -name '*~' -exec rm {} \;
```
7. **Afficher et supprimer les fichiers `toto` et `titi` dans le répertoire d'accueil de `balev` :**
```
cat /home/balev/toto /home/balev/titi
rm /home/balev/toto /home/balev/titi
```
---
#### Exercice 4 – Navigation dans l'arborescence (suite)
**Répertoire actuel : `/usr/local` et objectif : accéder à `/usr/local/games/mariokart`**
Les commandes valides sont :
- **A :** `cd /games/mariokart` — Incorrect, il manque `/usr/local` au début.
- **B :** `cd games/mariokart` — Incorrect, cela suppose que `games/mariokart` est dans le
répertoire courant (`/usr/local`).
- **C :** `cd local/mariokart` — Incorrect, il manque `/usr`.
- **D :** `cd /usr/local/games/mariokart` — Correct, chemin absolu.
- **E :** `cd /usr/local/../local/games/mariokart` — Correct, mais redondant.
- **F :** `cd ../games/mariokart` — Incorrect, cela essaie de monter d'un niveau, mais vous êtes déjà
au bon niveau.
La bonne commande est donc **D**.
---
#### Exercice 5 – Visualisation de fichiers
1. **Fichiers se terminant par '5' :**
```
ls *5
```
2. **Fichiers commençant par 'annee4' :**
```
ls annee4*
```
3. **Fichiers commençant par 'annee4' et de 7 lettres maximum :**
```
ls annee4?
```
4. **Fichiers commençant par 'annee' sans chiffres :**
```
ls annee[^0-9]*
```
5. **Fichiers contenant la chaîne 'ana' :**
```
grep -l 'ana' *
```
6. **Fichiers commençant par 'a' ou 'A' :**
```
ls [aA]*
```
---
#### Exercice 6 – Manipulation de fichiers
1. **Différence entre `mv toto titi` et `cp toto titi` :**
- `mv toto titi` : Déplace ou renomme le fichier `toto` en `titi` (le fichier `toto` est supprimé).
- `cp toto titi` : Copie le fichier `toto` dans un fichier nommé `titi`.
2. **Copier les fichiers dont l'avant-dernier caractère est '4' ou '1' dans `/tmp` :**
```
find . -type f -regex '.*[41]$' -exec cp {} /tmp/ \;
```
---
#### Exercice 7 – Gestion des droits d'accès
1. **Commandes pour donner des droits spécifiques à un répertoire `essai_droit` :**
Si le répertoire est à 755 par défaut :
- Pour donner les droits `777` (rwxrwxrwx) :
```
chmod 777 essai_droit
```
- Pour donner les droits `775` (rwxrwxr-x) :
```
chmod 775 essai_droit
```
Ces droits peuvent aussi être modifiés en notation symbolique. Par exemple :
```
chmod u+x,g-w,o-r essai_droit
```
---
#### Exercice 8 – Redirection et tubes
**Ligne équivalente pour la redirection et le tube :**
```
ls -l /usr/bin | tee tmp | less
```
Cette commande redirige la sortie de `ls` vers un fichier `tmp` et passe aussi le contenu à `less`.
---
#### Exercice 9 – La commande cat
1. **`cat devinette.txt | grep ce | wc -l` :**
Affiche le nombre de lignes contenant "ce".
**Réponse :** 1
2. **`cat devinette.txt | grep 4 | wc -l` :**
Affiche le nombre de lignes contenant "4".
**Réponse :** 1
---
#### Exercice 10 – Les commandes grep et cut
1. **Lignes correspondant à 'Sami'