====== Commandes Unix usuelles ======
^ Commande ^ Fonction ^ Usage ^ Source ^
| ls -lhS | Lister le fichiers en les triant du plus au moins volumineux | ls -lSh /mondossier | |
| Ncdu | Voir l'utilisation du disque | ncdu / --exclude /mondossier |[[https://linux.die.net/man/1/ncdu|ncdu]] |
| Sort | Trier les lignes d'un flux de données textes | sort test.txt |[[https://www.quennec.fr/trucs-astuces/syst%C3%A8mes/gnulinux/programmation-shell-sous-gnulinux/les-commandes-filtres/traitement-de-donn%C3%A9es/tri-de-donn%C3%A9es-sort|sort]] |
| Tee | Écrit ce qu'elle reçoit dans sur la sortie standard et dans un/des fichiers | ls Musique %%|%% tee test.txt | |
| Uniq | Affiche les lignes d'un texte en supprimant les multiples occurrences consécutives | sort test.txt %%|%% uniq %%|%% tee test.txt | [[https://linux.die.net/man/1/uniq|Man Uniq]] |
===== Curl =====
^ Option ^ Fonction ^ Usage ^ Source/Note ^
| -D | Stocker les headers dans un fichier | curl -D headers.txt example.org | Possibilité de ne pas les stocker dans un fichier et les afficher dans stdout avec -D- |
| -I (i majuscule)| Ne retourner que le code de statut HTTP et non le code HTML de la page | | |
| -k | Poursuit la connexion malgré https non certifié ou avec certificat auto-signé | | |
| -L | Suivre les redirections | | |
| -v | Mode verbeux | | |
==== Exemples ====
* Se connecter en SFTP avec une clé SSH et sans mot de passe : curl -k -v -u mysuser: --key path/ssh/privatekey sftp://example.net
* Se connecter en SFTP avec un mot de passe et sans clé SSH : curl -v --insecure sftp://USER:PASSWORD@example.net
* Ecrire de la données dans un cluster Elasticsearch : curl -X POST -u elastic:password_elastic "https://elastic.org:9200/my_index/_doc/" -H 'Content-Type: application/json' -d '{
"title": "Elasticsearch Basics",
"author": "John Doe IV",
"published_year": 2025
}'
* Demander au serveur de répondre sans utiliser le cache (no-cache) et de ne pas stocker dans son cache la requête et sa réponse (no-store) : curl -H 'Cache-Control: no-cache, no-store' http://example.org
Infos complémentaires : [[https://everything.curl.dev/usingcurl/scpsftp]]
===== Find =====
* Compter le nombre de fichiers du répertoire courant : find . -maxdepth 1 -type f | wc -l
* Compter le nombre de fichiers pdf dans le répertoire courant et ses sous-répertoires : find . -type f -iname "*.pdf" | wc -l
===== Grep =====
^ Option ^ Fonction ^ Usage ^ Source/Note ^
| -o | Récupérer uniquement le contenu matchant avec le pattern | grep -o "dossier\_.*\.pdf" maliste.txt| |
| -n | Afficher le numéro de ligne | grep -n "pattern" maliste.txt| |
| -r | Chercher de manière récursive | grep -r "pattern" mondossier| |
| -i | Insensibilité à la casse | | |
| --exclude-dir | exclure une répertoire de la zone de recherche | grep -nri hosts1 --exclude-dir=.git .| |
==== Exemples ====
* Chercher un pattern dans tous les fichiers d'un répertoire de manière récursive sans être sensible à la casse et en affichant le numéro de ligne : grep -nri 'mon pattern' mon_repertoire/*
* Chercher les erreur 400, 401 403 ou 404 dans des logs Nginx : egrep -nr "\s(400|401|403|404)\s" /var/log/nginx/access.log
===== pigz =====
Fonctionne comme gzip mais en utilisant tous les cœurs du serveur.
Exemple : pigz monfichier.img
Plus d'infos sur la compression en multithreading : https://www.linuxtricks.fr/wiki/compresser-en-multithreading-sous-linux-gzip-pigz-bzip2-lbzip2
===== Sed =====
Fonctions nombreuses mais peut notamment servir à faire de la substitution de chaînes de caractères dans des fichiers.
Remplacer tous occurrences de "Mulder" par "Mulder&Scully" dans tous les fichiers .txt :
sed -i 's/Mulder/Mulder\&Scully/' *.txt
==== Suppression ====
La fonction de suppression ''d'' supprime les lignes comprises dans un intervalle donné.
**Syntaxe :** \\
sed d
**Exemple :**\\
Supprimer les lignes ''2 à 4'' du : sed -i "2,4d" test1.txt
On peut utiliser les expressions régulières:sed -i "/toto/d" test1.txt
Si, à l'inverse, __on ne veut pas effacer__ les lignes contenant la chaîne toto (toutes les autres sont supprimées), on tapera:sed -i "/toto/!d" test1.txt
Appliquer une substitution à tous les sous-dossiers et fichiers d'un dossier : find -type f -exec sed -i 's/Mulder/Scully/g' {} +
**Source** : [[https://debian-facile.org/doc:systeme:sed]] - Licence GNU-GPLv2
===== Tar =====
^ Option ^ Fonction ^ Usage ^ Source/Note ^
| -C | Extraire dans un dossier précis | tar -xzvf archive.tgz -C dossier/destination | |
| --strip-components=1 | Extraire tous les fichier sans le dossier de l'archive | tar -xzvf archive.tgz --strip-components=1 | Bien mettre le nom de l'archive avant l'option --strip-components |
===== Tcpdump =====
^ Option ^ Fonction ^ Usage ^ Source/Note ^
| -i | Filtrer sur une interface particulière | tcpdump -i wlan0 | |
| -n | Ne pas résoudre les fqdn | tcpdump -i wlan0 -n | |
| host | Filtrer sur les paquet en provenant ou à destination d'un hôte | tcpdump host 192.168.1.66 | |
| net | Filtrer sur un réseau | tcpdump net 192.168.1.0/24 | Possibilité de filtrer sur tous les réseaux sauf celui mentionné avec 'not' |
| port | Filtrer sur un port | tcpdump -i wlan0 port 22 | |
==== Combinaison ====
Il est possible de combiner plusieurs règles de filtrage à l'aide d'opérateurs logiques :
* AND ou &&
* OR ou ||
* not ou !
Ne voir que les paquets en provenance de l'hôte 192.168.66.12 sur le port 22 : tcpdump src 192.168.66.12 and port 22
Voir tous les paquets en provenance de réseaux autre que 192.168.1.0/24 : tcpdump src net not 192.168.1.0/24
Source : [[https://www.malekal.com/tcpdump-capturer-des-paquets-reseaux-sur-linux/]]
===== Divers =====
* Créer un dossier et se placer direct dedans :mkdir nouveaudossier && cd $_
* Créer et gérer des processus en arrière-plan : https://www.thegeekstuff.com/2010/05/unix-background-job/
* Générer un fichier de 100MB de données aléatoires : head -c 100M /dev/urandom > 100MB.dat
* Supprimer l'apparition de logs en output dans la console : sudo dmesg -n 1
Plus d'infos : https://askubuntu.com/questions/97256/how-do-i-disable-messages-or-logging-from-printing-on-the-console-virtual-termin