pwd
pwd (Print Working Directory) : Où suis-je ?ls (LiSt) : Que contient ce répertoire ?cd (Change Directory) : Se déplacer dans l’arborescence.mkdir (MaKe DIRectory): Créer des répertoires.rmdir (ReMove DIRectory) : Supprimer des répertoires vides.touch : Créer un fichier vide ou mettre à jour la date.cat (conCATenate) : Afficher le contenu d’un fichier.less : Afficher le contenu d’un fichier, page par page (et plus !).more : Un autre pager (plus ancien et moins puissant que less).head : Afficher les premières lignes d’un fichier.tail : Afficher les dernières lignes d’un fichier.nano : Un éditeur de texte simple en ligne de commande.vi (et vim) : Un éditeur de texte puissant (mais plus complexe).grep (Global Regular Expression Print) : Rechercher des motifs dans des fichiers.wc (Word Count) : Compter les lignes, mots et caractères.sort : Trier les lignes d’un fichier.uniq : Supprimer les lignes dupliquées consécutives.cut : Extraire des sections de chaque ligne.sed (Stream EDitor) : Édition de flux de texte (substitutions, etc.).awk : Un langage de traitement de texte encore plus puissant.top : Afficher les processus en temps réel (comme un gestionnaire de tâches).htop : Une version améliorée de top (souvent à installer).kill : Envoyer un signal à un processus (généralement pour le terminer).pkill : Tuer des processus par nom, utilisateur, etc.bg (BackGround) : Placer un processus en arrière-plan.fg (ForeGround) : Ramener un processus en avant-plan.jobs : Lister les tâches en cours (en arrière-plan ou suspendues).nohup (No Hang UP) : Exécuter une commande en l’immunisant contre les déconnexions.whoami : Quel est mon nom d’utilisateur connecté au termimal?who : Qui est connecté au système ?id : Afficher les identifiants de l’utilisateur.passwd : Changer le mot de passe d’un utilisateur.su (Switch User) : Changer d’utilisateur.chmod (CHange MODe) : Modifier les permissions d’un fichier ou d’un répertoire.
ping : Tester la connectivité réseau.ssh (Secure SHell) : Se connecter à un serveur distant de manière sécurisée.scp (Secure CoPy) : Copier des fichiers entre des machines via SSH.wget : Télécharger des fichiers depuis le web.curl : Transférer des données avec des URL (plus puissant que wget).date : Afficher ou définir la date et l’heure.history : Afficher l’historique des commandes.alias : Créer des alias de commandes.man (MANual) : Afficher le manuel d’une commande.apropos : Rechercher des commandes par mot-clé.whatis : Affiche une brève description d’une commande.echo : Afficher du texte ou des variables.df (Disk Free) : Afficher l’espace disque utilisé et disponible.du (Disk Usage) : Afficher l’espace disque utilisé par des fichiers et répertoires.free : Afficher la mémoire (RAM) utilisée et disponible.uname : Afficher des informations sur le système.hostname : Afficher ou définir le nom d’hôte.| Retrouvez en vidéo l’introduction à Linux et ses commandes, ainsi que des exercices pour vous entraîner ! |
Vous trouverez ici les commandes les plus souvent utilisées que vous avez de grande chance de rencontrer un jour. Il y en en a un peu moins de 60. Ca peut sembler impressionnant mais finalement apprendre 60 mots dans un nouveau langage ce n’est pas si difficile que ça!
Elles sont classée par type d’usage et non par "difficulté". Si vous êtes débutant, commencer par vous familiariser avec celles-ci : man, ls, pwd, cd, mkdir, rm, rmdir, cp, mv et cat. Ensuite, essayez de lire toute la page. L’objetif n’est pas de tout retenir mais de savoir que ces commandes existent. Le jour où vous en aurez besoin, vous saurez qu’elle sont peut-être expliquées ici.
La ligne de commande Linux est un outil puissant et flexible qui, une fois maîtrisé, vous ouvrira de nombreuses possibilités. Bon apprentissage !
Commençons par apprendre à nous déplacer dans l’arborescence des fichiers et répertoires de votre système. Imaginez que votre système de fichiers est comme une armoire avec des tiroirs et des dossiers.
pwd (Print Working Directory) : Où suis-je ?Cette commande affiche le chemin absolu du répertoire courant. Le chemin absolu est le chemin complet depuis la racine du système de fichiers (représentée par /).
Exemple :
pwd
Résultat possible :
/home/denise/Documents
Cela signifie que vous êtes actuellement dans le répertoire "Documents", qui se trouve à l’intérieur du répertoire "utilisateur", qui lui-même est dans le répertoire "home", qui est un sous-répertoire de la racine /.
ls (LiSt) : Que contient ce répertoire ?La commande ls liste le contenu du répertoire courant (ou d’un autre répertoire spécifié).
Exemples :
ls # Liste le contenu du répertoire courant.
ls /home/utilisateur # Liste le contenu du répertoire "utilisateur".
ls -l # Liste détaillée (permissions, propriétaire, taille, date).
ls -a # Affiche TOUS les fichiers, y compris les fichiers cachés (ceux qui commencent par un point ".").
ls -h # Affiche les tailles de fichiers dans un format lisible par l'humain (ex: 1K, 234M, 2G).
ls -t # Trie les fichiers par date de modification (du plus récent au plus ancien).
ls -r # Inverse l'ordre de tri.
ls -la # Combine plusieurs options (liste détaillée incluant les fichiers cachés).
ls -l *.txt # Liste uniquement les fichiers se terminant par ".txt". Le "*" est un caractère "joker" (wildcard).
ls Documents/Images # Lister le contenu d'un sous-répertoire
Explication des colonnes de ls -l :
-rw-r--r-- 1 utilisateur utilisateur 1234 Jan 1 10:00 monfichier.txt
^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | Nom du fichier
| | | | | | | Date et heure de dernière modification
| | | | | | Taille du fichier (en octets, ou en unités lisibles avec -h)
| | | | | Groupe propriétaire
| | | | Utilisateur propriétaire
| | | Nombre de liens physiques
| | Permissions pour les autres
| Permissions pour le groupe
Permissions pour le propriétaire (utilisateur)
Type de fichier (- = fichier normal, d = répertoire, l = lien symbolique, etc.)
cd (Change Directory) : Se déplacer dans l’arborescence.La commande cd vous permet de changer de répertoire courant.
Exemples :
cd Documents # Aller dans le sous-répertoire "Documents".
cd /home/utilisateur/Images # Aller directement au répertoire "Images" (chemin absolu).
cd .. # Remonter d'un niveau dans l'arborescence (aller au répertoire parent).
cd ../.. # Remonter de deux niveaux.
cd ~ # Aller à votre répertoire personnel (équivalent à /home/utilisateur).
cd # Sans argument, équivalent à cd ~
cd - # Retourner au répertoire précédent (très pratique !).
Autocomplétion: Appuyez sur la touche Tab pendant que vous tapez un nom de fichier ou de répertoire. Si le début du nom est unique, le terminal complétera automatiquement le reste. Si plusieurs options sont possibles, appuyez sur Tab deux fois pour les afficher.
mkdir (MaKe DIRectory): Créer des répertoires. mkdir MonNouveauDossier # Crée un répertoire nommé "MonNouveauDossier" dans le répertoire courant.
mkdir -p Documents/Images/Vacances/2024 # Crée toute l'arborescence nécessaire, même si les répertoires parents n'existent pas.
L’option -p est très importante : elle permet de créer des répertoires parents si nécessaire. Sans -p, la commande mkdir échouerait si un des répertoires parents n’existait pas.
rmdir (ReMove DIRectory) : Supprimer des répertoires vides.rmdir DossierVide # Supprime le répertoire "DossierVide" s'il est vide.
*Important*: `rmdir` ne peut supprimer que des répertoires *vides*. Pour supprimer des répertoires contenant des fichiers, utilisez `rm -r` (voir ci-dessous, mais soyez *très prudent*).
touch : Créer un fichier vide ou mettre à jour la date. touch nouveau_fichier.txt # Crée un fichier vide nommé "nouveau_fichier.txt".
touch fichier_existant.txt # Met à jour la date de modification de "fichier_existant.txt" à l'heure actuelle.
touch est souvent utilisé pour créer rapidement des fichiers vides, par exemple pour des fichiers de configuration ou des fichiers temporaires.
Maintenant que nous savons nous déplacer, apprenons à manipuler les fichiers.
cp (CoPy) : Copier des fichiers et des répertoires. cp fichier_original.txt copie_fichier.txt # Copie "fichier_original.txt" vers "copie_fichier.txt".
cp fichier1.txt fichier2.txt Documents/ # Copie fichier1.txt et fichier2.txt dans le répertoire "Documents".
cp -r repertoire_original/ repertoire_copie/ # Copie récursivement tout le répertoire "repertoire_original" et son contenu dans "repertoire_copie". L'option -r est *essentielle* pour copier des répertoires.
cp -i fichier.txt destination/ # Demande confirmation avant d'écraser un fichier existant. C'est une bonne habitude à prendre.
cp -u fichier.txt destination/ # Copie le fichier uniquement s'il est plus récent que le fichier de destination (ou s'il n'existe pas).
mv (MoVe) : Déplacer ou renommer des fichiers et des répertoires. mv ancien_nom.txt nouveau_nom.txt # Renomme "ancien_nom.txt" en "nouveau_nom.txt".
mv fichier.txt Documents/ # Déplace "fichier.txt" dans le répertoire "Documents".
mv repertoire1/ repertoire2/ # Déplace (ou renomme si repertoire2 existe déjà) repertoire1 dans repertoire2.
mv -i fichier.txt destination/ # Demande confirmation avant d'écraser un fichier (bonne pratique !).
Important: mv est à la fois une commande de déplacement et de renommage. Si la destination est un répertoire existant, le fichier ou répertoire source y est déplacé. Si la destination n’existe pas (ou est un fichier), le fichier ou répertoire source est renommé.
|
rm (ReMove) : Supprimer des fichiers et des répertoires.| ATTENTION : Cette commande est définitive !** |
rm fichier.txt # Supprime "fichier.txt".
rm -r repertoire/ # Supprime *récursivement* "repertoire" et *tout* son contenu. Soyez *extrêmement* prudent avec cette commande !
rm -f fichier.txt # Force la suppression sans demander confirmation. Utilisez avec précaution.
rm -i fichier.txt # Demande confirmation avant *chaque* suppression. C'est la méthode la plus sûre.
rm -rf repertoire/ # Supprime récursivement et de force un répertoire. C'est la commande la plus *dangereuse*. Ne l'utilisez que si vous êtes *absolument certain* de ce que vous faites.
Conseil de sécurité: Avant d’utiliser rm -r, il est fortement recommandé de faire une "simulation" avec ls -l pour vérifier exactement ce que vous allez supprimer. Par exemple:
|
ls -l repertoire_a_supprimer/ # Vérifiez le contenu
rm -ri repertoire_a_supprimer/ # Suppression interactive et récursive, demandera confirmation pour chaque fichier et sous-répertoire.
ln (LiNk) : Créer des liens symboliques et physiques.Les liens sont des "raccourcis" vers des fichiers ou des répertoires. Il existe deux types de liens :
Ce sont des pointeurs vers le fichier ou répertoire original. Si vous supprimez le fichier original, le lien symbolique devient invalide (il pointe vers un fichier qui n’existe plus). Ils peuvent pointer vers des fichiers ou répertoires sur d’autres partitions ou systèmes de fichiers.
ln -s fichier_original.txt lien_symbolique.txt # Crée un lien symbolique.
ls -l lien_symbolique.txt # Vous verrez "lien_symbolique.txt -> fichier_original.txt", indiquant qu'il s'agit d'un lien symbolique.
Ce sont des entrées supplémentaires dans le système de fichiers qui pointent vers les mêmes données que le fichier original. Si vous supprimez le fichier original, le lien physique continue de fonctionner (car les données existent toujours). Les liens physiques ne peuvent pas pointer vers des répertoires ou des fichiers sur d’autres partitions.
ln fichier_original.txt lien_physique.txt # Crée un lien physique.
ls -li # L'option -i affiche le numéro d'inode. Vous verrez que le fichier original et le lien physique ont le même numéro d'inode.
Passons maintenant à la manipulation du contenu des fichiers texte.
cat (conCATenate) : Afficher le contenu d’un fichier. cat fichier.txt # Affiche le contenu complet de "fichier.txt" à l'écran.
cat fichier1.txt fichier2.txt # Affiche le contenu de fichier1.txt suivi du contenu de fichier2.txt.
cat fichier1.txt fichier2.txt > fichier3.txt # Concatène fichier1.txt et fichier2.txt et écrit le résultat dans fichier3.txt. (Attention : écrase fichier3.txt s'il existe déjà !).
cat > nouveau_fichier.txt # Crée un nouveau fichier (vous tapez le contenu, puis appuyez sur Ctrl+D pour terminer).
Le symbole > redirige la sortie standard (ce qui serait normalement affiché à l’écran) vers un fichier. >> ajoute au fichier au lieu de l’écraser.
less : Afficher le contenu d’un fichier, page par page (et plus !).less est un pager, un programme qui permet de visualiser un fichier texte de manière interactive. Il est beaucoup plus puissant que cat pour les fichiers longs.
less fichier.txt
Commandes less utiles :
Espace ou f : Avancer d’une page.
b : Reculer d’une page.
Flèche bas / Flèche haut : Défiler ligne par ligne.
g : Aller au début du fichier.
G : Aller à la fin du fichier.
/motif : Rechercher "motif" dans le fichier (ex: /erreur).
n : Aller à l’occurrence suivante du motif recherché.
N : Aller à l’occurrence précédente.
h : Afficher l’aide.
q : Quitter less.
more : Un autre pager (plus ancien et moins puissant que less).En général, utilisez less sauf si vous voulez que le contenu du fichier reste affiché dans le terminal
head : Afficher les premières lignes d’un fichier. head fichier.txt # Affiche les 10 premières lignes.
head -n 20 fichier.txt # Affiche les 20 premières lignes.
head -n 5 /var/log/syslog # Affiche les 5 premières lignes du fichier syslog (un fichier de log système).
tail : Afficher les dernières lignes d’un fichier. tail fichier.txt # Affiche les 10 dernières lignes.
tail -n 5 fichier.txt # Affiche les 5 dernières lignes.
tail -f fichier.txt # Affiche les dernières lignes et *suit* le fichier en temps réel (très utile pour surveiller les logs !). Utilisez Ctrl+C pour arrêter.
L’option -f (follow) est extrêmement utile pour surveiller des fichiers qui changent, comme les fichiers journaux (logs) ou suivre la dernière ligne d’un fichier de résultats.
|
nano : Un éditeur de texte simple en ligne de commande.nano est un éditeur de texte en mode console. Il est facile à utiliser pour les débutants.
nano fichier.txt # Ouvre "fichier.txt" dans nano (ou crée le fichier s'il n'existe pas).
Commandes nano principales (affichées en bas de l’écran) :
Ctrl + O : Enregistrer le fichier ("Write Out").
Ctrl + X : Quitter nano. Si vous avez fait des modifications, nano vous demandera si vous voulez les enregistrer.
Ctrl + G : Afficher l’aide.
Ctrl + W : Rechercher du texte.
Ctrl + K : Couper une ligne.
Ctrl + U : Coller une ligne (précédemment coupée).
Ctrl + C : Afficher la position du curseur.
Ctrl + _ : Aller à une ligne spécifique.
vi (et vim) : Un éditeur de texte puissant (mais plus complexe).vi (et sa version améliorée, vim) est un éditeur de texte modal. Cela signifie qu’il a différents modes de fonctionnement :
Mode commande : Pour naviguer, supprimer du texte, copier/coller, etc. C’est le mode par défaut.
Mode insertion : Pour taper du texte.
Mode visuel : Pour sélectionner du texte.
vim est très puissant, mais il a une courbe d’apprentissage plus raide que nano. Voici quelques commandes de base pour vous aider à démarrer :
vi fichier.txt # Ouvre "fichier.txt" dans vi (ou crée le fichier).
vim fichier.txt # Ouvre "fichier.txt" dans vim.
Commandes vi/vim essentielles (en mode commande, appuyez sur Esc pour y revenir) :
i : Passer en mode insertion (avant le curseur).
a : Passer en mode insertion (après le curseur).
o : Passer en mode insertion (sur une nouvelle ligne en dessous).
Esc : Revenir en mode commande (très important !).
x : Supprimer le caractère sous le curseur.
dd : Supprimer la ligne courante.
yy : Copier la ligne courante ("yank").
p : Coller après le curseur ("put").
P : Coller avant le curseur.
u : Annuler la dernière action.
Ctrl + r : Refaire la dernière action annulée.
/motif : Rechercher "motif".
n : Prochaine occurrence.
N : Occurrence précédente.
:w : Enregistrer le fichier ("write").
:q : Quitter vi (si vous n’avez pas fait de modifications).
:q! : Quitter vi sans enregistrer (forcer la fermeture).
:wq : Enregistrer et quitter.
:x : Enregistrer et quitter (similaire à :wq, mais n’enregistre que si des modifications ont été faites).
v : Passer en mode visuel (sélection de texte). Utilisez les flèches pour sélectionner, puis y pour copier, d pour couper, etc.
V: Mode visuel ligne. Sélectionne des lignes entières.
:help : Afficher l’aide de vim (très complète !).
Conseil : Si vous êtes bloqué dans vim, essayez d’appuyer sur Esc plusieurs fois, puis tapez :q! et appuyez sur Entrée. Cela vous permettra de quitter sans enregistrer. Pour apprendre vim, le tutoriel interactif vimtutor est excellent (tapez vimtutor dans votre terminal).
|
Ces commandes sont essentielles pour travailler avec des fichiers texte, des logs, et des sorties de commandes.
grep (Global Regular Expression Print) : Rechercher des motifs dans des fichiers.grep est un outil extrêmement puissant pour rechercher des lignes contenant un motif spécifique (une chaîne de caractères ou une expression régulière).
grep "mot" fichier.txt # Recherche "mot" dans "fichier.txt".
grep "erreur" /var/log/syslog # Recherche "erreur" dans le fichier syslog.
grep -i "mot" fichier.txt # Recherche insensible à la casse ("mot", "Mot", "MOT" correspondent).
grep -v "mot" fichier.txt # Affiche les lignes qui *ne contiennent pas* "mot" (inverser la recherche).
grep -r "motif" /chemin/ # Recherche récursivement "motif" dans tous les fichiers du répertoire "/chemin/" et de ses sous-répertoires.
grep -n "mot" fichier.txt # Affiche le numéro de ligne avec chaque ligne correspondante.
grep -c "mot" fichier.txt # Compte le nombre de lignes qui correspondent au motif.
grep -l "mot" *.txt # Affiche uniquement les *noms* des fichiers qui contiennent "mot" (parmi les fichiers .txt).
grep -E "motif1|motif2" fichier.txt # Recherche "motif1" OU "motif2" (expressions régulières étendues).
grep "^mot" fichier.txt # Recherche les lignes qui *commencent* par "mot" (le "^" signifie "début de ligne").
grep "mot$" fichier.txt # Recherche les lignes qui *se terminent* par "mot" (le "$" signifie "fin de ligne").
commande | grep "motif" # Filtre la sortie d'une commande. C'est *très* courant. Exemple : `ls -l | grep ".txt"` (liste seulement les fichiers .txt).
Expressions Régulières (Regex): grep utilise des expressions régulières, qui sont des motifs de recherche très puissants. Voici quelques exemples de base :
* . : N’importe quel caractère (sauf une nouvelle ligne).
* : Zéro ou plusieurs occurrences du caractère précédent.
* + : Une ou plusieurs occurrences du caractère précédent.
* ? : Zéro ou une occurrence du caractère précédent.
* [abc] : L’un des caractères a, b ou c.
* [a-z] : N’importe quelle lettre minuscule de a à z.
* [^0-9] : N’importe quel caractère qui n’est *pas un chiffre.
* \d: Un chiffre (équivalent à [0-9]).
* \w: Un caractère alphanumérique ou un underscore (équivalent à [a-zA-Z0-9_])
* \s: Un caractère d’espacement (espace, tabulation, retour à la ligne).
wc (Word Count) : Compter les lignes, mots et caractères. wc fichier.txt # Affiche le nombre de lignes, de mots et de caractères.
wc -l fichier.txt # Compte uniquement les lignes.
wc -w fichier.txt # Compte uniquement les mots.
wc -c fichier.txt # Compte uniquement les caractères (octets).
ls -l | wc -l # Compte le nombre de fichiers et répertoires dans le répertoire courant (un exemple d'utilisation de `wc` avec un pipe).
sort : Trier les lignes d’un fichier. sort fichier.txt # Trie les lignes par ordre alphabétique.
sort -r fichier.txt # Tri inversé (ordre alphabétique inverse).
sort -n fichier.txt # Tri numérique (traite les lignes comme des nombres).
sort -k 2 fichier.txt # Trie selon la deuxième colonne (les colonnes sont séparées par des espaces par défaut).
sort -t ':' -k 3n /etc/passwd # Trie le fichier /etc/passwd numériquement selon la 3ème colonne (UID), en utilisant ":" comme séparateur de colonnes.
commande | sort # Trie la sortie d'une commande. Exemple : `ls -l | sort -k 5n` (trie la liste des fichiers par taille, colonne 5).
uniq : Supprimer les lignes dupliquées consécutives.uniq est souvent utilisé après sort pour supprimer toutes les lignes dupliquées.
uniq fichier.txt # Supprime les lignes dupliquées consécutives.
sort fichier.txt | uniq # Supprime *toutes* les lignes dupliquées (car `sort` les regroupe).
uniq -c fichier.txt # Compte le nombre d'occurrences de chaque ligne (et affiche le compte).
sort fichier.txt | uniq -d # Affiche *uniquement* les lignes qui sont dupliquées.
cut : Extraire des sections de chaque ligne.cut est très utile pour extraire des colonnes de données à partir de fichiers texte où les champs sont séparés par un délimiteur (par exemple, des fichiers CSV).
cut -d ':' -f 1 /etc/passwd # Extrait le premier champ (nom d'utilisateur) du fichier /etc/passwd, en utilisant ":" comme délimiteur.
cut -d ',' -f 2,3 fichier.csv # Extrait les 2ème et 3ème colonnes d'un fichier CSV (Comma-Separated Values).
cut -c 1-5 fichier.txt # Extrait les caractères 1 à 5 de chaque ligne.
ls -l | cut -d ' ' -f 9 # Extrait le nom des fichiers à partir de la sortie de ls -l (moins fiable que d'utiliser ls directement pour lister les noms)
-d : Spécifie le délimiteur (par défaut, c’est la tabulation).
-f : Spécifie les champs à extraire (ex: 1, 2-5, 3-).
-c : Spécifie les caractères à extraire (ex: 1-10, 5, 8).
sed (Stream EDitor) : Édition de flux de texte (substitutions, etc.).sed est un outil très puissant pour transformer du texte. Il est souvent utilisé pour faire des substitutions (remplacer du texte).
sed 's/ancien/nouveau/' fichier.txt # Remplace la *première* occurrence de "ancien" par "nouveau" sur chaque ligne, et affiche le résultat (sans modifier le fichier).
sed 's/ancien/nouveau/g' fichier.txt # Remplace *toutes* les occurrences de "ancien" par "nouveau" sur chaque ligne (le "g" signifie "global").
sed -i 's/ancien/nouveau/g' fichier.txt # *Modifie le fichier original* en remplaçant "ancien" par "nouveau". Soyez *très* prudent avec l'option `-i` !
sed '2d' fichier.txt # Supprime la 2ème ligne.
sed '/motif/d' fichier.txt # Supprime toutes les lignes contenant "motif".
sed -n '1,5p' fichier.txt # Affiche uniquement les lignes 1 à 5 (le "-n" supprime l'affichage par défaut, et "p" imprime les lignes sélectionnées).
sed 's/^/# /' fichier.txt # Ajoute un "# " au début de chaque ligne (pour commenter le fichier, par exemple).
sed 's/$/END/' fichier.txt #Ajoute "END" à la fin de chaque ligne.
awk : Un langage de traitement de texte encore plus puissant.awk est un langage de programmation à part entière, optimisé pour le traitement de fichiers texte structurés en colonnes. Il est incroyablement flexible.
awk '{print $1}' fichier.txt # Affiche la première colonne de chaque ligne.
awk '{print $2, $1}' fichier.txt # Affiche la deuxième colonne, puis la première.
awk '$1 > 10 {print $2}' fichier.txt # Affiche la deuxième colonne uniquement si la première colonne est supérieure à 10.
awk -F':' '{print $1}' /etc/passwd # Similaire à `cut`, utilise ":" comme séparateur et affiche le premier champ.
awk '/motif/ {print $0}' fichier.txt # Affiche les lignes entières ($0) qui correspondent au "motif" (similaire à `grep "motif" fichier.txt`).
awk '{s += $1} END {print s}' fichier.txt # Calcule la somme de la première colonne et affiche le résultat à la fin (END).
awk 'BEGIN {print "Début"} {print $0} END {print "Fin"}' fichier.txt #Exécute des actions au début (BEGIN), pour chaque ligne, et à la fin (END)
Un processus est un programme en cours d’exécution. Voici comment les gérer.
ps (Process Status) : Afficher les processus en cours.
ps # Affiche les processus associés à votre terminal courant (généralement, pas très utile seul).
ps aux # Affiche *tous* les processus de *tous* les utilisateurs, avec des informations détaillées (c'est la forme la plus courante).
ps -ef # Une autre façon courante d'afficher tous les processus (format différent).
ps -u utilisateur # Affiche les processus de l'utilisateur "utilisateur".
ps aux | grep "firefox" # Affiche les processus liés à Firefox (exemple d'utilisation de `grep` avec `ps`).
Explication des colonnes de ps aux :
USER : Utilisateur propriétaire du processus.
PID : Process ID (identifiant unique du processus).
%CPU : Pourcentage d’utilisation du CPU.
%MEM : Pourcentage d’utilisation de la mémoire.
VSZ : Virtual memory size (taille de la mémoire virtuelle).
RSS : Resident Set Size (taille de la mémoire physique utilisée).
TTY : Terminal associé au processus.
STAT : État du processus (R = running, S = sleeping, Z = zombie, etc.).
START : Heure de démarrage du processus.
TIME : Temps CPU utilisé.
COMMAND : Commande qui a lancé le processus.
top : Afficher les processus en temps réel (comme un gestionnaire de tâches).top affiche un tableau de bord dynamique des processus, triés par utilisation du CPU par défaut.
top
Commandes top utiles :
q : Quitter top.
k : Tuer un processus (vous devrez entrer le PID).
u : Afficher les processus d’un utilisateur spécifique.
h : Afficher l’aide.
Maj + P: Trier par utilisation du CPU (par défaut).
Maj + M: Trier par utilisation de la mémoire.
htop : Une version améliorée de top (souvent à installer).htop est plus convivial et interactif que top. Il permet de naviguer avec les flèches, de filtrer, de trier, et de tuer des processus plus facilement.
sudo apt install htop # Installation sur Debian/Ubuntu
sudo yum install htop # Installation sur Fedora/CentOS/RHEL
htop
kill : Envoyer un signal à un processus (généralement pour le terminer). kill PID # Envoie le signal SIGTERM (terminaison "propre") au processus avec l'ID "PID".
kill -9 PID # Envoie le signal SIGKILL (terminaison *forcée*) au processus "PID". À utiliser en dernier recours, car le processus ne peut pas se "nettoyer" correctement.
killall nom_processus # Tue *tous* les processus avec le nom "nom_processus".
Soyez très prudent avec killall !
|
Signaux courants:
1 (SIGHUP): Recharger la configuration.
2 (SIGINT): Interruption (comme Ctrl+C).
9 (SIGKILL): Tuer immédiatement.
15 (SIGTERM): Terminaison "propre".
pkill : Tuer des processus par nom, utilisateur, etc.pkill est plus flexible que killall.
pkill scriptfou.sh # Tue tous les processus nommés "scriptfou.sh".
pkill -u utilisateur nom_processus # Tue les processus "nom_processus" appartenant à l'utilisateur "utilisateur".
pkill -9 -u denise sshd # Tue de force tous les processus sshd de l'utilisateur denise (exemple avancé).
bg (BackGround) : Placer un processus en arrière-plan.Si vous avez lancé une commande qui prend du temps, vous pouvez la suspendre avec Ctrl + Z, puis la placer en arrière-plan avec bg. Ainsi elle continue de s’exécuter et vous pouvez continuer d’utiliser le terminal.
longue_commande # On lance la commande
Ctrl+Z # On la suspend afin de reprendre la main sur le terminal
bg # On la place en arrière-plan
fg (ForeGround) : Ramener un processus en avant-plan.fg # Ramène en premier plan le dernier processus mis en arrière-plan (ou suspendu). fg %2 # Ramène en premier plan le job numéro 2 (voir `jobs` ci-dessous).
jobs : Lister les tâches en cours (en arrière-plan ou suspendues).jobs
Exemple de sortie de jobs :
[1]- Running longue_commande1 &
[2]+ Stopped longue_commande2
[1] : Numéro du job.
- : Le job qui deviendra le job courant si le job courant se termine.
+ : Le job courant.
Running : Le job est en cours d’exécution en arrière-plan.
Stopped : Le job est suspendu (vous pouvez le reprendre avec bg ou fg).
& : Indique que le job a été lancé en arrière-plan.
nohup (No Hang UP) : Exécuter une commande en l’immunisant contre les déconnexions.Si vous lancez une commande dans un terminal et que vous fermez ce terminal, la commande s’arrête. nohup permet d’éviter cela.
nohup longue_commande & # Exécute "longue_commande" en arrière-plan, et la rend insensible aux signaux de déconnexion. La sortie est généralement redirigée vers un fichier "nohup.out".
Linux est un système multi-utilisateur. Chaque fichier et répertoire appartient à un utilisateur et à un groupe, et des permissions contrôlent qui peut lire, écrire ou exécuter ces fichiers.
whoami : Quel est mon nom d’utilisateur connecté au termimal?whoami
id : Afficher les identifiants de l’utilisateur. id # Affiche vos propres identifiants (UID, GID, groupes).
id utilisateur # Affiche les identifiants de l'utilisateur "utilisateur".
UID (User ID) : Identifiant numérique de l’utilisateur.
GID (Group ID) : Identifiant numérique du groupe principal de l’utilisateur.
groups : Liste des groupes auxquels l’utilisateur appartient.
passwd : Changer le mot de passe d’un utilisateur.passwd # Changer votre propre mot de passe.
Le mot de passe actuel sera demandé. Attention quand vous le tapez aucun caractère ne sera affiché afin d’éviter que quelqu’un lise votre mot de passe par dessus votre épaule. Ensuite, le nouveau mot de passe sera demandé.
su (Switch User) : Changer d’utilisateur. su utilisateur # Se connecter en tant qu'utilisateur "utilisateur" (demande le mot de passe de cet utilisateur).
su - # Se connecter en tant que root (équivalent à `sudo -i`). Demande le mot de passe de root.
su - utilisateur # Se connecter en tant qu'utilisateur "utilisateur" avec son environnement (comme si vous vous étiez connecté directement).
chmod (CHange MODe) : Modifier les permissions d’un fichier ou d’un répertoire.C’est une commande cruciale. Les permissions déterminent qui peut lire, écrire ou exécuter un fichier. Il existe deux manières de spécifier les permissions :
u : User (propriétaire)
g : Group
o : Others (autres utilisateurs)
a : All (tout le monde, équivalent à ugo)
+ : Ajouter une permission.
- : Retirer une permission.
= : Définir les permissions exactement.
r : Read (lecture)
w : Write (écriture)
x : eXecute (exécution pour les fichiers, accès pour les répertoires)
chmod u+x fichier.txt # Ajouter le droit d'exécution pour le propriétaire.
chmod g-w fichier.txt # Retirer le droit d'écriture pour le groupe.
chmod o+r fichier.txt # Ajouter le droit de lecture pour les autres.
chmod a=rwx fichier.txt # Définir les permissions à rwx pour tout le monde.
chmod u=rwx,g=rx,o=r fichier.txt # Permissions combinées : rwx pour le propriétaire, rx pour le groupe, r pour les autres.
chmod +x script.sh # Rend un script shell exécutable pour tout le monde.
chmod g+s repertoire # Définit le bit setgid sur un répertoire. Les nouveaux fichiers créés dans ce répertoire hériteront du groupe du répertoire, et non du groupe principal de l'utilisateur qui les crée.
chmod u+s programme # Définit le bit setuid sur un exécutable. Le programme s'exécutera avec les privilèges du *propriétaire* du fichier, et non de l'utilisateur qui le lance. *Attention à la sécurité avec setuid*.
Chaque chiffre représente les permissions pour le propriétaire, le groupe et les autres, respectivement. Chaque permission a une valeur numérique :
4 : Lecture (r)
2 : Écriture (w)
1 : Exécution (x)
0 : Aucun droit
On additionne les valeurs pour obtenir le chiffre octal.
chmod 755 fichier.txt # rwx pour le propriétaire (4+2+1=7), r-x pour le groupe (4+0+1=5), r-x pour les autres (4+0+1=5). C'est une permission courante pour les scripts et les exécutables.
chmod 644 fichier.txt # rw- pour le propriétaire (4+2+0=6), r-- pour le groupe (4+0+0=4), r-- pour les autres (4+0+0=4). C'est une permission courante pour les fichiers de données.
chmod 600 fichier.txt # rw- pour le propriétaire, aucun droit pour le groupe et les autres. Pour un fichier sensible.
chmod 700 repertoire # rwx pour le propriétaire, aucun droit pour les autres. Pour un répertoire personnel, par exemple.
chmod 777 fichier.txt # rwxrwxrwx : Tout le monde a tous les droits. À éviter en général, sauf cas très spécifiques (et temporaires).
ping : Tester la connectivité réseau. ping google.com # Envoie des paquets ICMP à google.com pour vérifier la connectivité.
ping 8.8.8.8 # Ping l'adresse IP 8.8.8.8 (un serveur DNS de Google).
ping -c 4 google.com # Envoie seulement 4 paquets.
-c: Spécifie le nombre de paquets à envoyer.
ssh (Secure SHell) : Se connecter à un serveur distant de manière sécurisée. ssh utilisateur@serveur_distant # Se connecte au serveur "serveur_distant" en tant qu'utilisateur "utilisateur".
ssh -p 2222 utilisateur@serveur_distant # Se connecte sur le port 2222 (le port SSH par défaut est 22).
ssh -i /chemin/vers/cle_privee utilisateur@serveur_distant # Se connecte en utilisant une clé privée au lieu d'un mot de passe (plus sécurisé).
-p: Spécifie le port SSH.
-i: Spécifie le fichier de clé privée.
scp (Secure CoPy) : Copier des fichiers entre des machines via SSH. scp fichier_local utilisateur@serveur_distant:/chemin/distant/ # Copie "fichier_local" sur le serveur distant.
scp utilisateur@serveur_distant:/chemin/distant/fichier_distant fichier_local # Copie "fichier_distant" du serveur distant vers la machine locale.
scp -r repertoire_local utilisateur@serveur_distant:/chemin/distant/ # Copie récursivement un répertoire.
wget : Télécharger des fichiers depuis le web. wget https://www.example.com/fichier.zip # Télécharge le fichier.
wget -O nouveau_nom.zip https://www.example.com/fichier.zip # Télécharge et renomme le fichier.
wget -c https://www.example.com/fichier.zip # Continue un téléchargement interrompu.
-O: Spécifie le nom du fichier de sortie.
-* -c: Continue un téléchargement interrompu.
curl : Transférer des données avec des URL (plus puissant que wget). curl https://www.example.com # Affiche le code source HTML de la page.
curl -o fichier.zip https://www.example.com/fichier.zip # Télécharge et enregistre le fichier (similaire à wget -O).
curl -I https://www.example.com # Affiche uniquement les en-têtes HTTP.
curl -X POST -d "param1=valeur1¶m2=valeur2" https://api.example.com/endpoint # Envoie une requête POST avec des données.
-o: Enregistre la sortie dans un fichier.
-I: Affiche uniquement les en-têtes HTTP.
-X: Spécifie la méthode HTTP (GET, POST, PUT, DELETE, etc.).
-d: Envoie des données avec la requête (pour POST, PUT).
date : Afficher ou définir la date et l’heure.La commande `date`est bien pratique pour suivre l’éxécution d’un script en lui faisant écrire la date à différentes étapes du script.
date # Affiche la date et l'heure actuelles.
date +"%Y-%m-%d %H:%M:%S" # Affiche la date et l'heure dans un format spécifique.
history : Afficher l’historique des commandes. history # Affiche la liste des commandes précédemment exécutées.
history | grep "commande" # Recherche une commande spécifique dans l'historique.
!123 # Exécute la commande numéro 123 de l'historique.
!! # Exécute la dernière commande. Très pratique !!!
!mot # Exécute la dernière commande commençant par "mot".
Vous pouvez configurer la taille de l'historique et d'autres options en modifiant le fichier `~/.bashrc` (ou le fichier de configuration de votre shell). N"hésitez pas à mettre une valeur élevée, on est content de retrouver une commande, qu'on ne tape pas souvent, plusieurs mois après.
alias : Créer des alias de commandes.Un alias est un raccourci pour une commande (ou une combinaison de commandes).
alias la='ls -la' # Crée un alias "la" pour la commande "ls -la".
alias gs='git status' # Un alias pour une commande Git courante.
alias ..='cd ..'
unalias la # Supprime l'alias "la".
Pour rendre les alias permanents, ajoutez-les à votre fichier ~/.bashrc (ou le fichier de configuration de votre shell, comme ~/.zshrc pour Zsh).
man (MANual) : Afficher le manuel d’une commande.C’est l’une des commandes les plus importantes! man affiche la documentation d’une commande.
man ls # Affiche le manuel de la commande ls.
man -k recherche # Recherche dans les descriptions des pages de manuel (équivalent à apropos).
Navigation dans man:
Espace ou f: Avancer d’une page.
b: Reculer d’une page.
Flèches: Défiler.
/motif: Rechercher "motif".
n: Résultat suivant.
N: Résultat précédent.
q: Quitter.
apropos : Rechercher des commandes par mot-clé.apropos recherche dans les descriptions courtes des pages de manuel. C’est utile si vous ne connaissez pas le nom exact de la commande que vous cherchez.
apropos "copy file" # Recherche des commandes liées à la copie de fichiers.
whatis : Affiche une brève description d’une commande.whatis est bien pratique en cas de doute sur la signafication d’une commande. Elle évite d’ouvrir une longue explication.
whatis ls # Affiche une description très courte de la commande ls.
echo : Afficher du texte ou des variables. echo "Bonjour le monde !"
echo $HOME # Affiche la valeur de la variable d'environnement HOME (votre répertoire personnel).
echo "Le fichier contient $(wc -l < fichier.txt) lignes." # Utilisation de la substitution de commande ($(…)) pour insérer la sortie d'une commande dans une chaîne.
Les variables d’environnement sont des variables qui affectent le comportement de votre shell et des programmes.
$HOME : Votre répertoire personnel.
$PATH : Liste des répertoires où le shell recherche les exécutables.
$USER : Votre nom d’utilisateur.
$PWD : Le répertoire courant.
$SHELL : Votre shell actuel.
echo $PATH # Afficher le PATH.
export VARIABLE=valeur # Définir une variable d'environnement (temporairement, pour la session courante).
export VARIABLE="valeur avec des espaces"
Pour rendre une variable d’environnement permanente, ajoutez la ligne export à votre fichier ~/.bashrc (ou similaire).
Afin de lister toutes les variables d’environnement en cours et leurs valeurs, vous pouvez utiliser la commande env
|
> : Rediriger la sortie standard (stdout) vers un fichier (écrase le fichier).
>> : Rediriger la sortie standard vers un fichier (ajoute à la fin du fichier).
< : Rediriger l’entrée standard (stdin) depuis un fichier.
| : Pipe (canalisation) : rediriger la sortie standard d’une commande vers l’entrée standard d’une autre commande.
2> : Rediriger la sortie d’erreur standard (stderr) vers un fichier.
&> : Rediriger à la fois stdout et stderr vers un fichier (bash seulement).
2>&1: Rediriger stderr vers la même destination que stdout
ls -l > liste_fichiers.txt # Enregistre la liste des fichiers dans "liste_fichiers.txt".
cat fichier1.txt >> fichier2.txt # Ajoute le contenu de fichier1.txt à la fin de fichier2.txt.
sort < fichier.txt > fichier_trie.txt # Trie le contenu de fichier.txt et enregistre le résultat dans fichier_trie.txt.
ls -l | grep ".txt" # Affiche seulement les fichiers .txt (le pipe est *très* utilisé).
commande_qui_echoue 2> erreurs.log # Enregistre les messages d'erreur dans "erreurs.log".
commande > sortie.txt 2>&1 # Redirige à la fois la sortie standard et la sortie d'erreur vers sortie.txt.
$(commande) ou (avec des backticks/accents graves) permet d’utiliser la sortie d’une commande comme argument d’une autre commande.commande
echo "Le répertoire courant contient $(ls | wc -l) fichiers."
cp fichier.txt $(dirname fichier.txt)/backup/ # Copie fichier.txt dans un sous-répertoire "backup" du répertoire où il se trouve.
df (Disk Free) : Afficher l’espace disque utilisé et disponible. df -h # Affiche l'espace disque utilisé et disponible sur tous les systèmes de fichiers montés, en format lisible par l'humain.
df -h /home # Affiche l'espace disque pour la partition /home.
df -i # Affiche l'utilisation des inodes (nombre de fichiers et répertoires).
-h: Affiche les tailles dans un format lisible par l’humain (K, M, G).
-i: Affiche l’utilisation des inodes.
du (Disk Usage) : Afficher l’espace disque utilisé par des fichiers et répertoires. du -sh /home/utilisateur # Affiche la taille totale du répertoire /home/utilisateur, en format lisible.
du -h --max-depth=1 /home/utilisateur # Affiche la taille des sous-répertoires de /home/utilisateur, mais seulement au premier niveau.
du -h | sort -rh | head -10 # Affiche les 10 plus grands fichiers/répertoires du répertoire courant (combinaison de du, sort et head).
-s: Affiche un résumé (total).
-h: Format lisible par l’humain.
--max-depth: Limite la profondeur de la récursion.
free : Afficher la mémoire (RAM) utilisée et disponible.free -h # Affiche la quantité de RAM utilisée et disponible, en format lisible.
-h: Format lisible (human readable).
uname : Afficher des informations sur le système. uname -a # Affiche toutes les informations (nom du noyau, version, architecture, etc.).
uname -r # Affiche la version du noyau.
uname -m #Affiche l'architecture de la machine
hostname : Afficher ou définir le nom d’hôte. hostname # Affiche le nom d'hôte.
sudo hostname nouveau_nom # Définit le nom d'hôte (temporairement, jusqu'au prochain redémarrage). Pour un changement permanent, modifiez le fichier /etc/hostname (et /etc/hosts).