====== 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