The Terminal in Linux


🇫🇷

Je vois toujours les gens dire “Nan mais, tu vois le terminal c’est le truc qui me fait peur et pour ça que je dis que je déteste Linux car c’est de la merde”. Bon déjà, Titouan, tu vas te calmer d’entrée mais surtout non, le terminal n’est pas dur, mais facile. Je sais que moi, ça a été pour apprendre la base des commandes et aujourd’hui, je vais t’expliquer comment tout ça marche.

Le terminal c’est quoi ?

Le terminal Linux est un outil puissant qui permet aux utilisateurs d’interagir directement avec le système d’exploitation via des commandes textuelles. Il est apparu avec les premières versions d’Unix dans les années 1970 et a évolué pour devenir un élément central des systèmes Linux. Utilisé par les administrateurs système et les développeurs, il offre un contrôle précis et une flexibilité inégalée. Apprendre à utiliser le terminal peut grandement améliorer votre efficacité et votre compréhension de Linux.

Les bases des commandes

La Base de la base

ls : Description: Liste tes fichiers et tes répertoires dans un dossier. Exemple: ls -l (Une liste détaillée avec permissions, propriétaire, taille, etc.)

cd : Description: Change de répertoire. Exemple: cd /home/user/Documents (ça t’amène dans le dossier documents.) et cd .. (te permet de revenir en arrière)

pwd : Description: Affiche le chemin du répertoire courant. Exemple: pwd (affiche quelque chose comme /home/user)

mkdir : Description: Crée un nouveau répertoire. Nouveau répertoire pour une nouvelle Vie ? Exemple: mkdir new_folder (crée un répertoire nommé new_folder)

rmdir : Description: Supprime un répertoire vide. Exemple: rmdir old_folder (supprime old_folder si vide)

rm : Description: Supprime des fichiers ou des répertoires. Exemple: rm file.txt (supprime file.txt), rm -r directory (supprime directory et son contenu) Attention : rm -rf / (supprime tout le système) donc il faut faire très attention avec ce pouvoir. “Un pouvoir implique de grandes responsabilités”

rm

cp : Description: Copie des fichiers ou des répertoires. Exemple: cp source.txt destination.txt (copie source.txt vers destination.txt), cp -r source_dir destination_dir (copie récursivement le répertoire source_dir)

mv : Description: Déplace ou renomme des fichiers ou des répertoires. C’est comme déménager son bureau vers un plus grand. Exemple: mv old_name.txt new_name.txt (renomme old_name.txt en new_name.txt), mv file.txt /new/path/ (déplace file.txt vers /new/path/)

touch : Description: Crée un fichier vide ou met à jour la date de modification d’un fichier existant. Cette commande va être très utile tout comme mkdir. Comme on dit “Touchez les étoiles” hahaha, bon j’arrête. Exemple: touch newfile.txt (crée newfile.txt s’il n’existe pas)

cat : Description: Affiche le contenu d’un fichier. (Pratique pour voir le contenu d’un .md ou autres) Exemple: cat file.txt (affiche le contenu de file.txt)

more : Description: Affiche le contenu d’un fichier page par page. Exemple: more file.txt (affiche file.txt page par page)

less : Description: Comme more, mais avec des fonctionnalités supplémentaires. Exemple: less file.txt (affiche file.txt page par page avec navigation)

head : Description: Affiche les premières lignes d’un fichier. Exemple: head file.txt (affiche les 10 premières lignes par défaut)

tail : Description: Affiche les dernières lignes d’un fichier. À ne pas confondre avec le pote poilu de l’hérisson Exemple: tail file.txt (affiche les 10 dernières lignes par défaut)

echo : Description: Affiche un message ou le contenu d’une variable. Exemple: echo "Hello World" (affiche Hello World)

Commandes pour le système :

sudo :
Description: Exécute une commande en tant que superutilisateur ou un autre utilisateur. En gros, vous êtes le capitaine du paquebot et vous serez responsable de vos actes. Attention : Par pitié, ne foncez pas sur un iceberg, on n’est pas invincible. Exemple: sudo apt-get update (met à jour la liste des paquets disponibles)

ps :
Description: Affiche les processus en cours. Exemple: ps aux (affiche tous les processus en cours d’exécution)

kill :
Description: Termine un processus. Ce qui est l’équivalent du Fin de tâche pour Windows. Oui des applications sous votre OS peuvent planter. Le Bug c’est comme “United Color of Benetton” tout le monde à la même enseigne. Exemple: kill 1234 (tue le processus avec PID 1234), kill -9 1234 (force la terminaison)

top :
Description: Affiche les processus en temps réel. Exemple: top (affiche les processus en cours avec utilisation CPU et mémoire)

df :
Description: Affiche l’espace disque utilisé et disponible. Exemple: df -h (affiche l’espace disque en format lisible par l’homme)

du : Description: Affiche la taille des fichiers et répertoires. Exemple: du -sh * (affiche la taille de chaque fichier et répertoire dans le répertoire courant)

uname : Description: Affiche des informations sur le système. Pratique pour savoir le noyau Linux que vous avez ou l’OS que votre bécane tourne. Exemple: uname -a (affiche toutes les informations sur le système)

chmod : Description: Change les permissions d’un fichier ou répertoire. Exemple: chmod 755 script.sh (définit les permissions de script.sh à 755)

chown : Description: Change le propriétaire et le groupe d’un fichier ou répertoire. C’est un peu le système de Location. Exemple: chown user:group file.txt (change le propriétaire de file.txt à user et le groupe à group)

Commandes de gestion des paquets :

apt-get : Description: Gestionnaire de paquets pour Debian et dérivés. Exemple: sudo apt-get install package_name (installe un paquet), sudo apt-get update (met à jour la liste des paquets disponibles)

dnf : Description: Gestionnaire de paquets pour les distributions basées sur RPM comme Fedora. Exemple: sudo dnf install package_name (installe un paquet), sudo dnf update (met à jour les paquets installés)

zypper : Description: Gestionnaire de paquets pour la distribution du caméléon à savoir OpenSuse. Exemple: sudo zypper install package_name (installe un paquet), sudo zypper update (met à jour les paquets installés)

Commandes de réseau :

ping : Description: Teste la connectivité réseau vers une adresse IP ou un nom de domaine. Exemple: ping google.com (envoie des paquets ICMP à google.com)

ifconfig : Description: Affiche ou configure les interfaces réseau. Très pratique pour configurer en dur votre connexion à internet. Exemple: ifconfig (affiche les informations sur les interfaces réseau)

netstat : Description: Affiche les connexions réseau, les tables de routage, les statistiques d’interface, les connexions masquerade et les membres multicast. Exemple: netstat -tuln (affiche les ports ouverts et les connexions en écoute)

scp : Description: Copie des fichiers entre des hôtes sur un réseau. Exemple: scp file.txt user@remote_host:/path/to/destination (copie file.txt vers un hôte distant)

ssh : Description: Se connecte à un hôte distant via SSH. Attention : On sécurise son SSH et on ne laisse pas les clés comme ça. Vous ne le faites pas avec votre voiture ? J’espère… Exemple: ssh user@remote_host (se connecte à un hôte distant)

Voilà, normalement vous avez la petite base pour comprendre la base du terminal. Après je ne vous ai pas fait découvrir Docker et Podman et bien d’autres qui sont encore fun. Les commandes c’est simple, facile comme le terminal. Faut juste comprendre ce qu’on fait.

🇬🇧

I always see people saying “Nah, you see the terminal is the thing that scares me and that’s why I say I hate Linux because it’s crap”. Well first, Titouan, calm down, but more importantly, no, the terminal is not hard, but easy. I know for me, it was to learn the basics of commands and today, I will explain how it all works.

What is the terminal?

The Linux terminal is a powerful tool that allows users to interact directly with the operating system through text commands. It originated with the early versions of Unix in the 1970s and has evolved to become a central element of Linux systems. Used by system administrators and developers, it offers precise control and unmatched flexibility. Learning to use the terminal can greatly enhance your efficiency and understanding of Linux.

Basic commands

The Basics of Basics

ls : Description: Lists your files and directories in a folder. Example: ls -l (A detailed list with permissions, owner, size, etc.)

cd : Description: Changes directory. Example: cd /home/user/Documents (takes you to the documents folder) and cd .. (allows you to go back)

pwd : Description: Displays the path of the current directory. Example: pwd (displays something like /home/user)

mkdir : Description: Creates a new directory. New directory for a new life? Example: mkdir new_folder (creates a directory named new_folder)

rmdir : Description: Deletes an empty directory. Example: rmdir old_folder (deletes old_folder if empty)

rm : Description: Deletes files or directories. Example: rm file.txt (deletes file.txt), rm -r directory (deletes directory and its contents) Warning : rm -rf / (deletes the entire system) so be very careful with this power. “With great power comes great responsibility”

cp : Description: Copies files or directories. Example: cp source.txt destination.txt (copies source.txt to destination.txt), cp -r source_dir destination_dir (recursively copies the source_dir directory)

mv : Description: Moves or renames files or directories. It’s like moving your desk to a bigger one. Example: mv old_name.txt new_name.txt (renames old_name.txt to new_name.txt), mv file.txt /new/path/ (moves file.txt to /new/path/)

touch : Description: Creates an empty file or updates the modification date of an existing file. This command will be very useful just like mkdir. As they say “Touch the stars” hahaha, okay, I’ll stop. Example: touch newfile.txt (creates newfile.txt if it doesn’t exist)

cat : Description: Displays the contents of a file. (Handy for viewing the contents of a .md or others) Example: cat file.txt (displays the contents of file.txt)

more : Description: Displays the contents of a file page by page. Example: more file.txt (displays file.txt page by page)

less : Description: Like more, but with additional features. Example: less file.txt (displays file.txt page by page with navigation)

head : Description: Displays the first lines of a file. Example: head file.txt (displays the first 10 lines by default)

tail : Description: Displays the last lines of a file. Not to be confused with the furry friend of the hedgehog Example: tail file.txt (displays the last 10 lines by default)

echo : Description: Displays a message or the contents of a variable. Example: echo "Hello World" (displays Hello World)

System commands:

sudo :
Description: Executes a command as a superuser or another user. Basically, you are the captain of the ship and you will be responsible for your actions. Warning : Please, don’t crash into an iceberg, we are not invincible. Example: sudo apt-get update (updates the list of available packages)

ps :
Description: Displays running processes. Example: ps aux (displays all running processes)

kill :
Description: Terminates a process. This is the equivalent of End Task for Windows. Yes, applications on your OS can crash. Bugs are like “United Colors of Benetton” everyone is in the same boat. Example: kill 1234 (kills the process with PID 1234), kill -9 1234 (forces termination)

top :
Description: Displays processes in real-time. Example: top (displays running processes with CPU and memory usage)

df :
Description: Displays disk space usage and availability. Example: df -h (displays disk space in a human-readable format)

du : Description: Displays the size of files and directories. Example: du -sh * (displays the size of each file and directory in the current directory)

uname : Description: Displays system information. Handy for knowing the Linux kernel you have or the OS your machine is running. Example: uname -a (displays all system information)

chmod : Description: Changes the permissions of a file or directory. Example: chmod 755 script.sh (sets the permissions of script.sh to 755)

chown : Description: Changes the owner and group of a file or directory. It’s a bit like the rental system. Example: chown user:group file.txt (changes the owner of file.txt to user and the group to group)

Package management commands:

apt-get : Description: Package manager for Debian and derivatives. Example: sudo apt-get install package_name (installs a package), sudo apt-get update (updates the list of available packages)

dnf : Description: Package manager for RPM-based distributions like Fedora. Example: sudo dnf install package_name (installs a package), sudo dnf update (updates installed packages)

zypper : Description: Package manager for the chameleon distribution OpenSuse. Example: sudo zypper install package_name (installs a package), sudo zypper update (updates installed packages)

Network commands:

ping : Description: Tests network connectivity to an IP address or domain name. Example: ping google.com (sends ICMP packets to google.com)

ifconfig : Description: Displays or configures network interfaces. Very handy for configuring your internet connection manually. Example: ifconfig (displays information about network interfaces)

netstat : Description: Displays network connections, routing tables, interface statistics, masquerade connections, and multicast memberships. Example: netstat -tuln (displays open ports and listening connections)

scp : Description: Copies files between hosts on a network. Example: scp file.txt user@remote_host:/path/to/destination (copies file.txt to a remote host)

ssh : Description: Connects to a remote host via SSH. Warning : Secure your SSH and don’t leave the keys lying around. You don’t do it with your car, do you? I hope not… Example: ssh user@remote_host (connects to a remote host)

There you go, you should now have a basic understanding of the terminal. I haven’t introduced you to Docker and Podman and many others that are still fun. Commands are simple, easy like the terminal. You just need to understand what you’re doing.