L02 - Fichiers, dossiers, recherche, redirections et éditeurs
Objectif
Créer, copier, déplacer, lire, chercher des fichiers ; enchaîner des commandes avec
|et>; éditer un fichier de config avecnano(et survivre àvim).
1. Manipuler fichiers et dossiers
| Commande | Effet |
|---|---|
touch notes.txt | Créer un fichier vide (ou mettre à jour sa date) |
mkdir projet | Créer un dossier |
mkdir -p a/b/c | Créer toute une arborescence |
cp source.txt copie.txt | Copier un fichier |
cp -r dossier/ sauvegarde/ | Copier un dossier (récursif) |
mv ancien.txt nouveau.txt | Renommer |
mv fichier.txt ~/Documents/ | Déplacer |
rm fichier.txt | Supprimer (⚠️ pas de corbeille) |
rm -r dossier/ | Supprimer un dossier et son contenu |
rm -i *.log | Demander confirmation pour chaque fichier |
rmdir dossier | Supprimer un dossier vide |
ln -s /chemin/cible raccourci | Créer un lien symbolique (raccourci) |
rm -rfne demande rien et ne pardonne rien. Vérifie toujours ton chemin aveclsavant.
Jokers (wildcards) : * = n’importe quoi, ? = un caractère, [0-9] = un chiffre. Ex. ls *.log, rm photo-0?.jpg.
2. Lire un fichier
| Commande | Usage |
|---|---|
cat fichier | Tout afficher (fichiers courts) |
less fichier | Lire page par page (espace, /mot pour chercher, q pour quitter) |
head -n 20 fichier | 20 premières lignes |
tail -n 50 fichier | 50 dernières lignes |
tail -f /var/log/syslog | Suivre en direct (journaux) - Ctrl+C pour arrêter |
wc -l fichier | Nombre de lignes |
file inconnu | Quel type de fichier ? |
stat fichier | Taille, droits, dates |
3. Chercher
grep "Failed password" /var/log/auth.log # lignes contenant le texte
grep -i "erreur" fichier.log # -i : ignorer majuscules/minuscules
grep -rn "Listen" /etc/apache2/ # -r récursif, -n numéro de ligne
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$" # config sans commentaires ni lignes vides
grep -E "error|warning" app.log # expression régulière : l'un OU l'autre
find /etc -name "*.conf" # par nom
find ~ -type f -size +100M # fichiers de plus de 100 Mo
find /var/log -mtime -1 # modifiés depuis moins d'1 jour
find . -name "*.tmp" -delete # trouver ET supprimer (prudence)
locate sshd_config # très rapide (base mise à jour par "sudo updatedb")4. Redirections et tubes
flowchart LR STDIN["Entrée standard (0)<br/>clavier"] --> CMD["commande"] CMD --> STDOUT["Sortie standard (1)<br/>écran"] CMD --> STDERR["Erreurs (2)<br/>écran"]
| Syntaxe | Effet | Exemple |
|---|---|---|
> | Envoyer la sortie dans un fichier (écrase) | ls > liste.txt |
>> | Ajouter à la fin du fichier | echo "fin" >> liste.txt |
2> | Rediriger les erreurs | find / -name x 2> /dev/null |
&> | Sortie et erreurs | commande &> tout.log |
< | Lire l’entrée depuis un fichier | mysql base < sauvegarde.sql |
| (tube / pipe) | La sortie de A devient l’entrée de B | ps aux | grep apache |
tee | Afficher et écrire (utile avec sudo) | echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward |
sudo echo "x" > /etc/fichieréchoue : la redirection est faite par TON shell, pas par sudo. Utiliseecho "x" | sudo tee /etc/fichier(outee -apour ajouter).
Exemples de chaînes utiles
# Les 10 IP qui ont le plus tenté de se connecter en SSH sans succès
grep "Failed password" /var/log/auth.log | grep -oE "from [0-9.]+" | sort | uniq -c | sort -rn | head
# Taille des dossiers, du plus gros au plus petit
du -sh ./* | sort -rh | head
# Compter les fichiers .md du vault
find ~/obsidian -name "*.md" | wc -lOutils de traitement de texte : sort, uniq -c, cut -d: -f1 /etc/passwd, awk '{print $1}', sed 's/ancien/nouveau/g', tr 'a-z' 'A-Z'.
5. Archives et compression
tar -czvf sauvegarde.tar.gz dossier/ # créer (c) une archive gzip (z), verbeux (v), fichier (f)
tar -xzvf sauvegarde.tar.gz # extraire (x)
tar -xzvf archive.tar.gz -C /opt/ # extraire dans /opt
tar -tzvf archive.tar.gz # lister sans extraire
zip -r projet.zip projet/ && unzip projet.zip6. Éditer un fichier de config
nano (le plus simple - recommandé pour débuter)
sudo nano /etc/hosts| Touche | Action |
|---|---|
Ctrl+O puis Entrée | Enregistrer |
Ctrl+X | Quitter |
Ctrl+W | Chercher |
Ctrl+K / Ctrl+U | Couper / coller une ligne |
Alt+N | Afficher les numéros de ligne |
vim (présent partout, à connaître pour survivre)
| Touche | Action |
|---|---|
i | Passer en mode insertion (on peut taper) |
Échap | Revenir en mode commande |
:w | Enregistrer |
:q | Quitter · :wq enregistrer et quitter · :q! quitter sans enregistrer |
/mot | Chercher |
dd / p | Couper une ligne / coller |
u | Annuler |
Toujours faire une copie avant de modifier un fichier de config :
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Voir aussi
- L01 - Premiers pas dans le terminal · L03 - Utilisateurs, groupes et droits · L07 - Scripting Bash
- Éditeurs en détail : O11 - Nano · O10 - Vim
- Retour : 00 - Index général