# 3.1 - Lire un fichier avec cat, less, head et tail

## Afficher un petit fichier

```bash
cat /etc/os-release
cat -n notes.txt           # numéroter les lignes
```

`cat` affiche tout le contenu d'un coup. Il convient aux petits fichiers, mais devient peu pratique pour un journal de plusieurs gigaoctets.

Assembler plusieurs fichiers :

```bash
cat partie1.txt partie2.txt > document-complet.txt
```

## Parcourir avec less

```bash
less /var/log/syslog
less +F /var/log/syslog    # suivre les ajouts ; Ctrl+C pour revenir à less
```

Touches essentielles :

| Touche | Action |
|---|---|
| `Espace` / `b` | page suivante / précédente |
| `g` / `G` | début / fin |
| `/erreur` | rechercher vers le bas |
| `n` / `N` | occurrence suivante / précédente |
| `F` | suivre les nouvelles lignes |
| `q` | quitter |

`less` ne charge pas nécessairement tout le fichier en mémoire et convient donc mieux aux gros fichiers.

## Début et fin d'un fichier

```bash
head fichier.log
head -n 20 fichier.log
tail fichier.log
tail -n 50 fichier.log
```

Suivre un journal en direct :

```bash
tail -f application.log
tail -F application.log
```

`-F` continue de suivre le nom même si le fichier est recréé lors d'une rotation de journaux. Quitter avec `Ctrl` + `C`.

## Extraire une plage de lignes

```bash
sed -n '20,40p' fichier.txt
```

Cette commande affiche les lignes 20 à 40 sans modifier le fichier.

## Afficher les caractères invisibles

```bash
cat -A fichier.txt
sed -n 'l' fichier.txt
```

Utile pour repérer tabulations, espaces finaux et fins de ligne Windows.

## Encodage et fins de ligne

```bash
file -i fichier.txt
```

Convertir un fichier Windows CRLF vers Linux LF si `dos2unix` est installé :

```bash
dos2unix script.sh
```

Avant de lancer un script téléchargé, l'afficher et l'examiner :

```bash
less script.sh
file script.sh
```

Afficher un fichier est normalement non destructif, mais son contenu peut comporter des séquences de terminal indésirables. Pour une source non fiable, `less` est souvent préférable à l'exécution ou au copier-coller aveugle.