Introduction
Cette article vous apprendra les commandes à connaître sur GNU/Linux.
Il s'agit de commandes système de base indispensable dans la bonne utilisation du système.
La première partie concerne les commandes basique, la seconde partie les commandes de Gestion du Système, la troisième partie les commandes de Gestion des Paquets
En fin d'article vous pouvez télécharger le fichier PDF gratuitement contenant toutes les commandes cités ci après.
Commandes Basiques
man nom_de_commande : Permet de lire le manuel d'une commande
cd : Change Directory, permet de changer de répertoire
ls : Permet de lister le contenu d'un répertoire. L'option -l permet de lister avec plus de détails les fichiers. L'option -1 permet de lister le contenu en une ligne.
pwd : Permet d'afficher le répertoire actuel
cat : Permet d'afficher le contenu d'un fichier
less : Permet d'afficher le contenu d'un fichier page par page une autre alternative à cette commande est more
echo : Permet d'executer du texte, par exemple pour placer du texte dans un fichier
rm : Permet de supprimer un fichier
whoami : Permet de connaitre le nom d'utilisateur du système
hostname : Permet d'afficher le nom de la machine en cours d'utilisation
touch file_name : Permet de créer un fichier
mkdir : Permet de créer un répertoire
rmdir : Permet de supprimer un répertoire
mv : Permet de renommer ou bien de déplacer un fichier. L'option -t permet de déplacer plusieurs fichiers placés dans plusieurs répertoires différents
cp : Permet de copier un fichier
which : Permet de localiser une commande
type : Permet de connaitre le type de commande. Par exemple s'il s'agit d'un shell
file : Permet de déterminer le type de fichier
wc : Permet de compter le nombre de ligne dans le résultat d'une commande
wget source_url : Permet de télécharger des fichier depuis un serveur distant vers la machine local
curl source_url : Permet d'afficher le contenu d'une url sur la ligne de commande, l'option --data-urlencode permet d'encoder automatiquement au format URL.
git clone source_package_url : Permet de cloner un projet git pour le télécharger sur sa propre machine
dch --local name : Permet de modifier les logs d'un paquet par exemple le nom du développeur.
ar : Permet de créer, d'extraire et modifier des archives. Une archive est un fichier qui contient une collection d'autres fichiers.
head -n 1 : Permet de n'afficher que la ligne 1 d'un fichier
tail -n 1 : Permet d'afficher la derniere ligne d'un fichier
find : Permet de trouver un fichier en parcourant les répertoires, s'utilise généralement avec l'option -name
locate : Permet de localiser un fichier grace à une base de donnée préinstallé qui est parcouru. Cette commande est plus rapide que find mais peut être moins efficace
make : Permet la compilation d'un fichier. Afin de préparer l'utilisation de make il faut écrire un fichier appelé makefile qui décrit la relation entre les fichiers du programme. L'option deb-pkg génère 5 paquet Debian. l'option clean supprime les fichiers compilés auparavant.
apropos "search_key" : Permet de rechercher par mot clef une commande.
wget -q -O - source_url | gpg --import : Permet d'importer une clef publique d' à partir un site web. une alternative à cette commande est gpg --keyserver server_url -- recv-key key_number qui va récupérer la clef publique depuis le serveur gnupg.net
gpg --fingerprint key_number : Permet d'afficher la ou les clefs d'identifications GPG
gpg --verify file_name file_name : Permet de vérifier l'authenticité du fichier en comparant le checkum avec la signature associé du fichier .gpg il est aussi possible de vérifier cela en lançant une commande qui va comparer les checksums avec sha256sum : grep file_name file_name | sha256sum -c
sed s/ ^ / word_to_add file_name : Permet d'ajouter des caractère en début de chaque ligne d'un fichier spécifié
awk print $0; print $0 filename : Permet de dupliquer deux fois chaque ligne d'un fichier
awk length($0) == number filename : Permet d'afficher toutes les lignes d'un fichier ayant pour taille de caractères le nombre indiqué
open . : Permet d'ouvrir le répertoire en cours de façon graphique
strings filename : Permet de lire les charactères d'un fichier illisible par exemple écrit en binaire.
seq -w 0000 9999 : Permet de générer la séquence de chiffre de 0001 à 9999, utile par exemple afin de trouver un PIN
watch -n 1 "ps -aux : Permet de lancer la commande ps -aux et de rafraichir les résultats toutes les secondes
file : Permet d'afficher les caractérisque d'un fichier âr exemple son architecture, sa version, etc..
mktemp -d share_XXXXX : Permet la création d'un répertoire temporaire
Commandes Gestion du Systèmes
systemctl enable process_name : Permet d'activer un processus au démarrage
systemctl start process_name : Permet d'activer et de lancer un processus
systemctl disable process_name : Permet de désactiver un processus au démarrage
systemctl stop process_name : Permet d'arrêter un processus en cours
systemctl reload process_name : Permet de redémarrer un processus après changement de configuration
systemctl restart process_name : Permet de redémarrer des services
systemctl list-units : Permet de lister les unités actives du système
systemctl status : Permet de voir une vue hierarchique des services lancés
lspci -v : Permet de connaître les drivers liés à son matériel
grep -qP ^flags\s*:.*\blm\b /proc/cpuinfo && echo 64-bit || echo 32-bit : Permet de connaitre l'architecture de son processeur, s'il s'agit d'un 32bit ou 64bit
lsusb : Permet de connaitre les appareil USB connectés
lspcmcia : Permet de lister les carte PCMCIA
lsdev : Permet de lister des informations à propos du matériel installé
lshw : Permet de lister de manière hierarchisé une longue description du matériel installé.
update-initramfs -u : va recompiler le noyau et ses composants pour le lancement. Utile pour l'installation d'un drivers ou le changement d'un composant système.
sudo find / -type f -exec du -Sh + | sort -h | tail -10 : Permet d'afficher les 10 fichiers les plus volumineux
uname -a : Permet d'afficher la version du système et du noyaux
python3 -m http.server 80 : Permet de lancer un serveur web sur le port 80 (ou autre) pour un accès externe aux fichiers du répertoire depuis lequel la commande est lancé
id : Permet d'afficher le status d'un utilisateur ainsi que la liste des groupes auquel il appartient.
patch -p1 < patch-file : Permet d'appliquer un patch ou correctif à un code source
kill -9 pid_number : Permet de tuer un processus
parted disk_name : Permet de pouvoir partitionner les disques. L'option print permet d'afficher le partionnement actuel, une autre commande possible pour cela est fdisk -l
mkfs.ext4 -L persistence disk_source : Pour activer une partition en mode persistant
cryptsetup : Permet de crypter une partition avec un mot de passe. L'option luksAddNuke disk_source permet la mise en place d'un mot de passe dit "Nuke" qui va supprimer l'accès au donnée pour tout le monde en détruisant la clef de connexion crypsetup lorsque celui ci est saisi à la place du mot de passe classique. Il est aussi possible d'utiliser l'outil cripsetup pour configurer un Nuke password avec la commande : sudo dpkg-reconfigure cryptsetup-nuke-password Il est ensuite possible de sauvegarder la clef en faisant une sauvegarde de l'entête crypsetup avec : sudo cryptsetup luksHeaderBackup device_name--header-backup-file backup_file pour restaurer la config il faudra alors lancer la commande : sudo cryptsetup luksHeaderRestore device_name --header-backup-file your_backup_file
gpg --gen-key : Permet de générer une clef GPG
adduser username group_name : Permet de créer un utilisateur dans un groupe.
adduser --system --group name_group_and_user : Permet de créer un utilisateur dans un groupe avec ce même nom.
sudo usermod -a -G sudo username : Permet d'ajouter les droits sudo à un utilisateur
addgroup : Permet d'ajouter un groupe
delgroup : Permet de supprimer un groupe
groupmod : Permet de modifier un groupe
gpasswd : Permet de changer le mot de passe d'un groupe
newgrp : Permet de se connecter à un nouveau groupe
sg : éxecute une commande en utilisant un groupe différent
dmesg : Permet d'afficher tous les messages provenant du kernel
dd if= source_input_file of= source_output_file : Permet de copier le contenu du fichier d'origine (Input File) vers le disque de destination (Output File)
ps aux : Permet de lister les processus en cours de lancement sur la machine.
chown user_file : Permet de changer le propriétaire d'un fichier
chgroup group_file : Permet de changer le groupe d'appartenance du fichier
chmod right_file : Permet de changer les droits d'un fichier
free : Permet d'afficher la mémoire RAM disponible. L'option -b permet d'afficher le résultat en bytes et non pas en mébibit comme c'est le cas par défaut. L'option -h permet d'afficher le résultat en format lisible pour l'homme.
df : Permet d'afficher la quantité d'espace disque disponible. L'option -h permet d'afficher le résultat en format lisible pour l'homme.
time : Permet d'afficher le temps en seconde depuis le lancement du terminal
bg %pid_number : Permet de mettre un job dans le Background, une autre façon de mettre un job en Background est d'ajouter "&" à la fin de la commande.
fg %pid_number : Permet de restaurer un job du Background vers le Foreground.
ln -snom_du_fichier_pointé nom_du_lien_symbolique : Permet de créer l'alias d'un fichier ou d'un répertoire ordinaire.
passwd username : Permet de changer le mot de passe d'un utilisateur. L'option -e permet de forcer le changement de mot de passe lors de la prochaine connexion. L'option -l permet de verrouiller un utilisateur. L'option -u permet de déverrouiller un utilisateur.
chsh : Permet de changer de Shell, on choisit ensuite le chemin vers le shell voulue. Il faut se déconnecter puis se reconnecter pour que les modifications s'appliquent.
chage username : Permet de changer l'expiration d'un mot de passe. L'option -l liste les paramètres d'expiration du mot de passe utilisateur.
chfn username : Permet de changer le nom reel (full name) de l'utilisateur et ses informations
setxkbmap fr : Permet de configurer le clavier en Français, "fr" peut être remplacé par l'acronyme du language voulu par exemple "us" pour United State qui est un clavier en QWERTY.
a2enmod : Permet d'activer un nouveau module Apache2
a2dismod : Permet de désactiver un module Apache2
a2ensite hostname : Permet d'activer un nouvel hôte virtuel
ifconfig : Permet d'afficher la configuration réseau.
ifconfig interface_name up : Permet d'activer une interface réseau
ifconfiginterface_name down : Permet de désactiver une interface réseau
nmcli dev status : Permet d'afficher le status des interfaces réseau
chroot racine_path /usr/bin/commande : Permet d'executer un shell interactif avec un répertoire racine fermé
mount disk_name disk_destination : Permet de monter un disque sous un répertoire spécifique.
iptables : outil d'administration pour le filtrage des paquets IPV4/IPV6 et NAT
netstat : Permet d'afficher les connexions réseau, les tables de routage, les statistiques interface, les masques de connexions, et l'apartenance au multicast. l'option -tulpen permet d'afficher les ports ouverts de la machine.
nc -nlvp port_number : Permet d'ouvrir un port sur la machine afin par exemple d'y accéder sur une autre machine. Il est ensuite possible de s'y connecter via l'adresse IP en utilisant aussi netcat au format nc -vip_address port_number
compgen -c : Permet de lister toutes les commandes disponibles. On peut lister seulement les commandes préconstruites, on peut les lister avec l'option -b (pour built-in) On peut lister seulement les commandes avec mots clef, on peut les lister avec l'option -k
lsmod : Permet de lister les modules du système
sudo modinfo module_name : Permet d'afficher les infos d'un module
sudo rmmod module_name : Permet de supprimer un module du système
insmod module_path : Permet de charger un module depuis un chemin dossier
sudo modprobre module_name : Permet de charger ou supprimer un module ou firmware du kernel Linux
macchanger -s inf_name : Permet d'afficher l'adresse MAC de l'interface spécifié
macchanger -m MAC_Addr inf_name : Permet de changer l'adresse MAC d'une interface
whois domain_name : Permet d'obtenir des informations sur une entreprise ou un domaine on peut préciser l'adresse IP après l'option -h
host domain_name : Permet d'obtenir des informations sur une entreprise par exemple afin d'obtenir son adresse IP par défaut les record en réponse son des type A. On peux spécifier le type de record avec l'option -t
ssh username@ip_address : Permet de se connecter à distance à une machine il faut que ssh soit activé, on peut spécifier un ID RSA avec l'option -a ou un port avec l'option
scp -p file_source username@ip_address_dest:file_destination : Permet d'envoyer des fichiers par SSH vers une machine du réseau, on utilise l'option -P afin de préciser un port spécifique
sudo tcpdump -nvvvXi wlan0 tcp port 80 : Permet la mise en place d'une écoute du port 80 pour capture des paquets sur l'interface wlan0
Commandes Gestion des Paquets
sudo apt install source_package_name : Permet d'installer un paquet terminant par .deb ou bien d'un paquet provenant d'une source du fichier sources.list tout en résolvant ses dépendances. Une alternative à cette commande pour installer un fichier .deb est dpkg -a source_package_name mais cela ne résolve pas ses dépendances. L'option apt-get est plus direct avec le système que apt tout court, mais ne permet par exemple de lancer la commande pour mettre à jour le système entier. L'option --reinstall permet de réinstaller un paquet.
sudo apt update : Permet de lancer la recherche de nouveau paquet à mettre à jour.
sudo apt upgrade : Permet de lancer l'installation des paquets à mettre à jour. Avec l'option apt-get dist-upgrade il est possible de lancer l'installation des mises à jour de manière "intelligente" en installant les paquet important d'abord et en évitant les conflits de dépendances.
sudo apt remove source_package_name : Permet de supprimer un paquet tout en supprimant ses dépendances.
sudo apt purge source_package_name : Permet la suppression d'un paquet mais aussi de de sa configuration et et de ses données associés.
sudo apt full-upgrade : Permet de mettre à jour le système entier dans sa dernière version
apt-cache search key_word : Permet de rechercher un paquet par mot clef
apt source source_package_name : Permet de télécharger le code source mais necessite la source debian
apt-key fingerprint : Permet d'afficher les clefs GPG associés aux dépots système
sudo apt build-dep ./ : Permet d'installer un paquet manuellement tout en installant les dépendances nécessaires.
sudo apt clean : Permet de supprimer les paquet préinstallé pouvant être réinstallés car compatibles avec la source les installant. On peut utiliser l'option -P pour purger les dépendances.
sudo apt autoclean : Permet de supprimer des paquets obsolètes préinstallés qui ne sont plus compatibles avec la source les installant.
sudo apt autoremove : Permet de supprimer des paquets qui ne sont plus nécessaire car il n'y a plus de paquet qui dépend d'eux. Il s'agit en général de dépendances.
sudo apt dist-upgrade : Permet de mettre à jour des paquets en remplaçant et supprimant ceux qui ne sont plus nécessaire
apt-mark auto source_package_name : Permet marquer un paquet pour indiquer qu'il peut être supprimé automatiquement s'il n'est plus utilisé cela évite de lancer la commande apt autoremove
class="code"apt-mark manual source_package_name : Permet marquer un paquet pour indiquer qu'il doit supprimé manuellement même si plus nécessaire
dpkg-buildpackage -us -uc : Permet d'automatiser la construction d'un paquet Debian, après avoir lancé cette commande un fichier en .deb est créé dans le sous répertoire, il suffit alors de l'installer de manière classique avec dpkg.
dpkg -a source_package_name : Permet d'installer un paquet terminant par .deb cette commande utilise et lance : dpkg --unpack et dpkg --configure L'option --force-overwrite permet de forcer l'installation des fichiers qui seraient déjà installés dans d'autres paquets, peut être risqué à utiliser dans le cas de paquets système.
dpkg -r package_name : supprime un paquet système
dpkg -c package_name : liste tous les fichiers contenus dans un .deb
dpkg -P package_name : Purge le paquet et ses dépendances associés
dpkg -a package_name : Affiche l'entête et les infos d'un paquet
dpkg -L package_name : Liste les fichiers installés par le paquet
dpkg -S file_name : Permet de rechercher un paquet contenant un fichier
dpkg --add-architecture : Permet d'ajouter une architecture dans le système par exemple 32bit, ARM. Peut être utile afin d'installer des paquet seulement compatible sur d'autres architectures.
dpkg --remove-architecture : Permet de supprimer une architecture du système.
dpkg --print-architecture : Permet d'afficher l'architecture actuel
dpkg -V : Permet de vérifier les paquets installés et d'afficher ceux dont la vérification n'a pas marché
dget source_package_url : Permet de télécharger un paquet Debian source control file (.dsc)
dpkg-source -x source_package_name : Permet d'extraire un paquet Debian source control file (.dsc)
dpkg-source --commit : Permet d'enregistrer les changements dans un nouveau correctif ou patch.
tar -xavf package_name : Permet d'extraire une archive d'un fichier tout en affichant les fichiers en cours de modification mais aussi de détecter le suffixe du fichier et donc d'adapter le type de compression.
dh_make --native : Permet d'ajouter les instructions de créations de paquet debian
reprepro export : Permet de générer un dépot vide. Nécessite le paquet "reprepro" d'installé
reprepro include source_package_name : Permet d'ajouter des fichier au dépot crée. Nécessite le paquet "reprepro" d'intallé
sha256sum source_package_name : générer un checksum afin de vérifier l’origine du fichier ainsi que son intégrité. Une alternative à cette commande est shasum -a 256
Vous pouvez télécharger le documents PDF contenant toutes les commandes ci dessus.