Mémo commandes
Ici se trouvent l’ensemble des commandes et fichiers vus en cours, pour la plupart nécessaires à une utilisation quotidienne d’un système GNU/Linux.
Plus spécifiquement, nous allons nous concentrer en cours sur l’utilisation du shell bash
.
RIEN ici n’est exhaustif. Ce doc a simplement pour but de vous fournir les commandes usuelles et leurs options les plus couramment utilisées. |
Introduction
Raccourcis bash
Description | Raccourci |
---|---|
Reprendre la dernière commande tapée |
|
Clear le terminal |
|
Se déconnecter de la session actuelle |
|
Aller au début de la ligne |
|
Aller à la fin de la ligne |
|
Reculer d’un mot |
|
Avancer d’un mot |
|
Supprimer du curseur jusqu’à la fin du mot actuel |
|
Supprimer du curseur jusqu’à la fin de la ligne |
|
Supprimer du curseur jusqu’au début de la ligne |
|
Recherche dans l’historique |
|
Quelques combos pratiques :
Description | Combo |
---|---|
Retaper la dernière commande en |
|
Full clear le terminal |
|
Fonctionnement élémentaire
Dans un système GNU/Linux, on appelle commandes les binaires auxquels ont fait appel depuis le shell (comme bash
). Ces commandes, ces binaires, ne sont donc que de simples fichiers exécutables.
Pour qu’une commande puisse être exécutée, il est obligatoire de connaître son chemin dans l’arborescence de fichiers.
Pour éviter de taper le chemin complet des commandes très utilisées, on utilise la variable d’environnement $PATH
. La variable $PATH
contient les chemins où se trouvent les commandes très utilisées. Pour voir ces chemins, il faut afficher la variable $PATH
depuis le terminal :
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin
Exécuter une commande revient à lancer un processus sur le système. Un processus est forcément exécuté sous l’identité d’un utilisateur de la machine.
La commande qui permet d’obtenir des informations sur toutes les autres commandes est man
pour manuel. En effet cette commande permet d’afficher le manuel d’une commande donnée (par exemple : man ls
).
Interprétation d’une ligne de commande
Avant d’exécuter la commande renseignée dans la ligne de commande, bash
va d’abord regarder la ligne en entier afin de l’évaluer.
Par exemple :
-
les différents éléments de la ligne de commande sont séparées par des espaces
-
ou des tabulations, ou encore d’autres caractères, suivant les OS
-
on appelle IFS pour Internal Field Separator la variable qui contient les caractères qui sont utilisés pour délimiter différents éléments sur la ligne de commande
-
donc, sur la plupart des OS, l’IFS contient notamment le caractère Espace et Tabulation
-
-
si aucun chemin n’est précisé,
bash
va chercher la commande demandée dans les chemins précisés dans la variable$PATH
-
les variables sont remplacées par leurs valeurs
-
les métacaractères sont remplacés par la valeur correspondante
-
.
fait référence au répertoire actuel -
..
fait référence au répertoire parent du répertoire actuel -
~
correspond au répertoire personnel de l’utilisateur actuel -
&
en fin de ligne indique la commande doit être lancée en tâche de fond -
$BAP
correspond à une variable appeléeBAP
-
$(ls)
correspond à une substitution de commande (on y revient plus bas)
-
Le man
Il est possible d’afficher le manuel d’une commande ou d’un fichier, ou encore d’un mécanisme Linux, à l’aide de la commande man
. Par exemple man ls
.
Il existe souvent plusieurs pages de manuel liées à une entité donnée. Pour voir les pages de man
dispo pour une entité donnée, on peut faire whatis <ENTITE>
, par exemple whatis ls
.
Pour ouvrir une page du manuel spécifique : man <PAGE> <ENTITE>
. Par exemple : man 1 ls
.
POSIX
POSIX désigne un ensemble de standards visant à uniformiser la gestion des systèmes d’exploitation.
POSIX comprendre notamment :
-
la gestion de permissions (les droits
rwx
sur les fichiers par exemple) -
l’utilisation des pipes
-
la mémoire partagée
-
etc.
Lorsqu’un système respecte les normes POSIX, on dit qu’il est POSIX-compliant. Il existe aujourd’hui très peu d’OS qui sont complètement POSIX-compliant, la plupart des distributions GNU/Linux connues ne le sont pas complètement.
Commandes relatives à l’arborescence de fichiers
Basics
Commande | Description | Exemple(s) |
---|---|---|
|
Affiche le répertoire courant |
|
|
Modifie la date de dernière modification d’un fichier. Peut aussi créer un fichier vide s’il n’existe pas |
|
|
Crée un dossier |
|
|
Change de répertoire |
|
|
Copier un fichier |
|
|
Identique à |
|
|
Liste les fichiers d’un répertoire donné. Sans argument, |
|
More advanced
Commande | Description | Exemple(s) |
---|---|---|
|
Cherche un ou plusieurs fichier(s) suivant les critères fournis. Cette commande est très puissante et TRES rapide. |
|
|
Retourne le chemin absolu d’une commande donnée |
|
|
Crée un lien (un "raccourci") vers un fichier donné. On l’utilise souvent avec l’option |
|
Lire des fichiers
Commandes
Commande | Description | Exemple(s) |
---|---|---|
|
(simplifié) Affiche le contenu d’un ou plusieurs fichier(s) |
|
|
Affiche la fin d’un fichier |
|
|
Affiche le début d’un fichier |
|
|
Affiche le contenu d’un fichier avec un pager |
Les commandes head , tail , more et less peuvent aussi lire depuis STDIN. Exemple : ps -ef | tail -n 10 ou encore ps -ef | less .
|
Arrêt et redémarrage du système
Commande | Description | Exemple(s) |
---|---|---|
|
Permet de demander un redémarrage du système |
|
|
Permet de demander l’arrêt du système |
|
|
Permet d’effectuer des opérations liées à l’allumage de la machine : veille, arrêt, redémarrage |
|
Gestion d’utilisateurs
Quelques règles…
-
tout utilisateur possède forcément au moins un groupe
-
l’utilisateur
root
possède l’ID 0 est n’est pas supprimable du système
Commande | Description | Exemple(s) |
---|---|---|
|
Ajoute un utilisateur |
|
|
Ajoute un groupe |
|
|
Supprime un utilisateur |
|
|
Supprime un groupe |
|
|
Affiche les groupes dont est membre un utilisateur donné |
|
|
Affiche la liste des utilisateurs actuellement connectés à la machine |
|
|
Affiche la liste des dernières connexions qui ont été effectuées sur le système |
|
Fichier | Description |
---|---|
|
Contient la liste des utilisateurs et certaines informations qui leur sont liées |
|
Contient la liste des mots de passe hashés des utilisateurs |
|
Contient la liste des groupes du système |
Gestion de permissions
Quelques règles…
-
tous les fichiers appartiennent à un utilisateur donné
-
tous les fichiers appartiennent aussi à un groupe donné
-
tous les fichiers possèdent un jeu de permissions POSIX
Permissions POSIX
Les permissions POSIX correspondent aux droits positionnés sur chacun des fichiers.
Chaque fichier possède 3 types de permission : r
pour le droit de lecture (read), w
pour le droit d’écriture (write), x
pour le droit d’exécution (execute).
Il y a 3 jeux de permission (3 fois rwx
donc) chacun étant relatifs à des utilisateurs différents :
-
le premier jeu correspond aux droits de l’utilisateur propriétaire du fichier
-
le deuxième jeu correspond aux droits du groupe propriétaire du fichier
-
le troisième jeu correspond aux droits qu’on tous les autres utilisateurs sur le fichier
Un exemple, c vachmen + mieu :D
$ ls -al
-rw-r--r-- 1 it4 it4 35567 Sep 22 23:00 file1
Sur l’exemple ci-dessus, le fichier file1
:
-
appartient à l’utilisateur
it4
-
appartient au groupe
it4
-
possède les permissions
rw-r—r--
Autrement dit, toujours sur l’exemple :
-
l’utilisateur
it4
peut lire et modifier le fichier :rw-
-
tous les membres du groupe
it4
peuvent seulement lire le fichier (read) :r--
-
tous les autres utilisateurs ne peuvent que lire le fichier (read) :
r--
Afin de faciliter la manipulation des permissions, il est possible de les exprimer sous forme octale. Pour faire simple, on attribue un poids à chaque permission :
-
r
vaut 4 -
w
vaut 2 -
x
vaut 1
Quelques exemples :
-
rw-
peut s’écrire 6 (r + w, c’est 4 + 2) -
rwx
peut s’écrire 7 (r + w + x, c’est 4 + 2 + 1) -
--x
peut s’écrire 1 (x c’est 1)
Si on fait référence à l’ensemble des permissions d’un fichier on peut donc écrire :
-
rwxrw-r--
: 764 -
rwxr-xr-x
: 755 -
rw-r-----
: 640
Ainsi, dans l’exemple présenté plus haut, les permissions du fichier file1
sont 644.
Commandes
Commande | Description | Exemple(s) |
---|---|---|
|
Modifie le propriétaire d’un fichier (utilisateur et/ou groupe) |
|
|
Modifie le groupe propriétaire d’un fichier |
|
|
Modifie les permissions POSIX d’un fichier |
|
|
Affiche des informations sur un fichier, y compris son utilisateur et groupe propriétaires ainsi que les permissions POSIX liés à un fichier donné |
|
Gestion de flux
Quelques règles…
-
toute commande peut accueillir des informations dans sa sortie standard
-
ce sont des infos que l’on envoie à une commande pour qu’elle puisse fonctionner
-
-
une commande peut générer une sortie standard et une sortie d’erreur
-
c’est le texte qui est imprimé dans le terminal après l’exécution d’une commande (le résultat d’un
ls
par exemple)
-
-
ces trois flux portent des noms raccourcis très souvent utilisés pour les désigner, ainsi qu’un numéro
-
entrée standard "STDIN" : flux 0
-
sortie standard "STDOUT" : flux 1
-
sortie d’erreur "STDERR" : flux 2
-
Caractère | Description | Exemple(s) |
---|---|---|
|
Redirige STDOUT vers un fichier (écrase le contenu du fichier s’il existe déjà) |
|
|
Redirige STDOUT vers un fichier (ajoute le contenu au fichier s’il existe déjà) |
|
|
Redirige STDERR vers un fichier (écrase le contenu du fichier s’il existe déjà) |
|
|
Redirige STDERR vers un fichier (ajoute le contenu au fichier s’il existe déjà) |
|
|
Redirige STDOUT et STDERR vers un fichier (écrase le contenu au fichier s’il existe déjà) |
|
|
Redirige STDOUT et STDERR vers un fichier (ajoute le contenu au fichier s’il existe déjà) |
|
|
Redirige STDOUT d’une commande vers STDIN d’une autre commande |
|
Manipulation et filtre de texte
Commande | Description | Exemple |
---|---|---|
|
Votre meilleur ami. Permet de filtrer certaines lignes dans un texte donné. |
|
|
Coupe un texte. Très souvent utilisé avec les options |
|
|
Trie un texte |
|
|
Enlève les occurrences multiples d’un texte. Très souvent utilisé de concert avec |
|
vim
vim
est un éditeur de texte extrêmement puissant et modulaire (des tonnes de plugins sont dispos sur l’internet).
Ici sont présentés certains raccourcis ou tricks vim
très utiles.
Vous pouvez aussi utiliser emacs .
|
Un conseil : évitez nano .
|
Raccourci/Commande | Description |
---|---|
|
Passer en mode |
|
Passer en mode |
|
Insère une ligne vide sous la ligne actuelle du curseur et passe en mode |
|
Insère une ligne vide au dessus de la ligne actuelle du curseur et passe en mode |
|
Supprime la ligne actuelle du curseur (et la place dans le presse-papier) |
|
Supprime le mot sous le curseur (et le place dans le presse-papier) |
|
Supprime le caractère sous le curseur (et le place dans le presse-papier) |
|
Supprime tout du curseur jusqu’à la fin de la ligne actuelle |
|
Place la ligne actuelle du curseur dans le presse-papier |
|
Colle le contenu du presse-papier |
|
Aller au début du fichier |
|
Aller à la fin du fichier |
|
Quitte |
|
Sauvegarde le fichier |
|
Force à quitter |
Inspecter le système
Réseau
Commande | Description |
---|---|
Exemple(s) |
|
Liste les cartes réseau de la machine et des infos qui leur sont liées |
|
|
Affiche la table ARP (= affiche les voisins) |
|
|
Affiche la table de routage |
|
|
Affiche les sockets utilisés par la machine |
|
|
Effectue des requêtes DNS |
|
|
Manipule le firewall du système |
|
|
Effectue des requêtes HTTP. |
|
Stockage et RAM
Commande | Description | Exemle(s) |
---|---|---|
|
Liste les périphérique de type bloc (= périphérique de stockage) du système |
|
|
Gère des points de montage |
|
|
Affiche l’espace disque disponible, par partition |
|
|
Affiche l’espace utilisé par un fichier donné |
|
|
Affiche l’état de la RAM |
|
Gestion de processus
Théorie
Exécuter une commande revient à lancer un processus. Un processus est une tâche en cours d’exécution sur le système.
Tout processus porte un identifiant unique : son PID.
Tout processus a forcément un processus père. Le père de tous les processus et le processus qui porte le PID 1.
Il est possible d’interagir avec un processus en cours d’exécution en lui envoyant des signaux. Il existe un nombre fini de signaux, identifiés par un nom ou un numéro, ayant chacun leur utilité. Notamment :
-
SIGTERM
(15) etSIGINT
(2) : demande à un processus de quitter proprement (ce signal peut être ignoré par le processus) -
SIGKILL
(9) : demande au noyau de supprimer le processus (ce signal ne peut PAS être ignoré par le processus) -
SIGHUP
(1) : demande au processus de recharger sa configuration
Voir man 7 signal pour la liste des signaux et leurs identifiants.
|
Commandes
Commande | Description | Exemple(s) |
---|---|---|
|
Liste les processus en cours d’exécution |
|
|
Ouvre un "gestionnaire des tâches" : liste des processus, utilisation CPU, utilisation RAM, etc. |
|
|
Envoie un signal à un processus |
|
Processus en tâche de fond
Flow classique d’une gestion de processus en tâche de fond :
-
sleep 99991 &
: lance un processussleep
en tâche de fond -
sleep 99992 &
: lance un deuxième processussleep
en tâche de fond -
jobs
: affiche la liste des processus en tâche de fond -
fg 2
: met au premier plan (foreground) le deuxième processus en tâche de fond -
CTRL + Z
: envoie le signal SIGSTOP au processus. Il est donc stoppé et remis en arrière-plan -
bg 2
: relance le deuxième processus en tâche de fond (background) -
jobs -p
: liste les PID des processus en tâche de fond -
kill $(jobs -p)
: envoie SIGTERM à tous les processus en tâche de fond
Gestion de logs
Les logs de la machine sont disponibles dans /var/log
. On les consulte avec les outils de manipulation de fichiers habituels : cd
, ls
, cat
, tail -f
, etc.
Depuis que systemd a été adopté par les distributions majeures, il est aussi bon de savoir utiliser la commande journalctl
qui permet de lister les fichiers journalisés par systemd. Par exemple :
-
journalctl -xe
: affiche tous les logs de la machine dans un pager -
journalctl -xe -u sshd
: affiche tous les logs relatifs au servicesshd
dans un pager -
journalctl -xe -u sshd -f
: affiche tous les logs relatifs au servicesshd
dans un pager, et affiche en temps réel les nouveaux logs qui arrivent
Il existe aussi la commande dmesg
qui permet de lister les logs kernel. Les logs kernel contiennent les infos concernant la découverte des périphérique au boot, des alertes de sécurité, des problèmes de drivers, etc.
Environnement
Par "environnement" on entend l’ensemble des éléments qui sont spécifiques à chacun des utilisateurs. Par exemple, le répertoire personnel d’un utilisateur fait partie de son environnement.
Variables d’environnement
Les variables d’environnement sont des variables relatives à une session utilisateur donnée, et uniquement accessible au sein de cette session.
On peut afficher les variables d’environnement avec la commande env
(il est aussi possible d’en ajouter).
Parmi les variables d’environnement importantes, on trouve notamment $PATH
. Cette variable contient les chemins où on peut trouver des exécutables.
Elle permet de ne pas faire appel systématiquement au chemin complet des commandes en ne tapant que le nom de la commande.
Par exemple, quand on tape ls
, en réalité, le binaire ls
se trouve au path /bin/ls
. Si le système sait où trouver ls
c’est parce que le chemin /bin
est renseigné dans la variable $PATH
.
On peut afficher le contenu d’une variable d’environnement comme n’importe quelle autre variable. Par exemple :
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin
SSH
SSH est un protocole permettant de prendre le contrôle d’un système à distance, via le réseau.
Il existe un répertoire caché ~/.ssh
dans le répertoire personnel de chaque utilisateur (sauf s’il n’utilise pas SSH) qui peut contenir les fichiers suivants :
-
des clés publiques, dont l’extension est
.pub
-
des clés privées, sans extension, portant le même nom que les clés publiques (elles fonctionnent par paire)
-
un fichier
known_hosts
qui contient une liste exhaustive de tous les serveurs SSH auxquels on s’est déjà connectés, et l’empreinte associée à chaque serveur -
un fichier
authorized_keys
qui contient la liste des clés publiques autorisées à se connecter sur le compte ciblé-
lorsque l’on veut se connecter à une machine via un échange de clés SSH (pas de mot de passe), il est nécessaire de déposer notre clé publique dans le fichier
authorized_keys
dans le homedir de l’utilisateur souhaité, sur la machine distante
-
Auteur
Cet article a été rédigé par it4 et provient du dépôt : b2-linux-2020 sous licence Creative Commons Attribution Share Alike 4.0.
Conversion de Markdown vers AsciiDoc par Antoine Thys.