· 7 min read

10 commandes Linux incroyables

Découvrez 10 commandes Linux incroyables, étonnantes et parfois même inutiles, qui vous feront briller aux yeux de vos collègues !

Découvrez 10 commandes Linux incroyables, étonnantes et parfois même inutiles, qui vous feront briller aux yeux de vos collègues !

Introduction

Qui n’a jamais rêvé d’être le roi ou la reine du terminal Linux ? Qui n’a jamais rêvé de briller aux yeux de ses collègues en leur montrant des commandes incroyables, étonnantes, et plus encore !?

Je vous propose de découvrir 10 commandes Linux, parfois utiles, parfois inutiles, mais qui feront de vous un véritable magicien ou une véritable magicienne du terminal 💇‍♀️

Une grande partie de ces commandes a été proposée par des membres de la communauté sur Twitter, sous ce tweet.

Merci à eux pour ces découvertes incroyables !

sl - Quand le train arrive en gare

La commande sl`` est une commande amusante qui, bien qu'inutile, égaye votre terminal avec un train animé. La prochaine fois que vous vous trompez de commande en voulant taper ls` vous pourrez profiter de ce magnifique train qui arrive en gare !

hollywood - Quand vous voulez impressionner vos collègues

La commande hollywood est une commande qui ne sert à rien (promis, on va en voir des utiles après), mais qui est tellement amusante ! Elle vous permet de simuler un terminal de hacker, avec des lignes de commandes qui défilent à toute vitesse, des alertes, et plus encore !

cmatrix - Vous êtes dans la matrice ?

Pas de vrai hacker sans une simulation de la matrice ! La commande cmatrix vous permet de simuler l’affichage de la matrice, comme dans le film éponyme. Vous pourrez ainsi impressionner vos collègues en leur montrant que vous êtes dans la matrice ! (Et pensez à leur proposer une pilule rouge ou une pilule bleue !)

jq - Quand vous voulez manipuler du JSON

Bon, on passe aux commandes un peu plus sérieuses. La commande jq est un outil en ligne de commande qui vous permet de manipuler du JSON. Vous pourrez ainsi extraire des données, les transformer, les filtrer, et plus encore !

Extraire une valeur d’un JSON

Essayons avec cet exemple de JSON disponible sur https://jsonplaceholder.typicode.com/posts/1 dont voici un extrait :

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit
    suscipit recusandae consequuntur expedita et cum
    reprehenderit molestiae ut ut quas totam
    nostrum rerum est autem sunt rem eveniet architecto"
}

Nous allons extraire le titre de cet article avec la commande suivante :

curl -s https://jsonplaceholder.typicode.com/posts/1 | jq -r '.title'

Extraire une valeur dans une collection

Essayons avec cet exemple de JSON disponible sur https://jsonplaceholder.typicode.com/posts dont voici un extrait :

[
    {
        "userId": 1,
        "id": 1,
        "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
        "body": "quia et suscipit
        suscipit recusandae consequuntur expedita et cum
        reprehenderit molestiae ut ut quas totam
        nostrum rerum est autem sunt rem eveniet architecto"
    },
    {
        "userId": 1,
        "id": 2,
        "title": "qui est esse",
        "body": "est rerum tempore vitae
        sequi sint nihil reprehenderit dolor beatae ea dolores neque
        fugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis
        qui aperiam non debitis possimus qui neque nisi nulla"
    }
]

Nous allons extraire le titre de chaque article avec la commande suivante :

curl -s https://jsonplaceholder.typicode.com/posts | jq -r '.[].title'

sed - Quand vous voulez manipuler du texte

La commande sed est un outil qui vous permet de manipuler du texte. Vous pourrez ainsi remplacer des chaînes de caractères, supprimer des lignes, ajouter des lignes, et plus encore !

Remplacer une chaîne de caractères

Essayons avec cet exemple de texte :

echo "Hello, world! " | sed 's/world/you/'

Dans cet exemple, nous remplaçons la chaîne de caractères world par la chaîne de caractères you.

Dans un fichier

Vous pouvez également utiliser la commande sed pour remplacer toutes les occurrences d’une chaîne de caractères dans un fichie.

  • Créez un fichier hello.txt avec le contenu suivant :
echo "Hello, world ! " > hello.txt
  • Remplacez la chaîne de caractères world par la chaîne de caractères you :
sed -i 's/world/you/' hello.txt

envsubst - Quand vous voulez remplacer des variables d’environnement

On reste dans la manipulation de texte avec la commande envsubst.

La commande envsubst est un outil trés pratique qui vous permet de remplacer des variables d’environnement dans un fichier. Vous pourrez ainsi générer des fichiers de configuration à partir de modèles, en remplaçant les variables d’environnement par leur valeur.

Exemple d’utilisation

Créez un fichier docker-compose.yml avec le contenu suivant :

version: '3.1'

services:
  web:
    image: nginx
    environment:
      - PORT=80
      - HOST=example.com
    ports:
      - ${PORT}:80
    hostname: ${HOST}

Remplacez les variables d’environnement par leur valeur :

export PORT=8080
export HOST=my-example.com
envsubst < docker-compose.yml > docker-compose.prod.yml

Le fichier docker-compose.prod.yml contiendra le contenu suivant :

version: '3.1'

services:
  web:
    image: nginx
    environment:
      - PORT=80
      - HOST=example.com
    ports:
      - 8080:80
    hostname: my-example.com

awk - Quand vous voulez manipuler des colonnes

La commande awk est un outil super puissant qui vous permet de manipuler des colonnes dans un fichier texte (un fichier csv par exemple). Vous pourrez ainsi extraire des colonnes, les filtrer, les transformer, et plus encore !

Créer un fichier csv d’exemple

Créez un fichier people.txt avec le contenu suivant :

echo "John Doe, 25,
Jane Doe, 30,
Alice Smith, 35,
Bob Smith, 40" > people.txt

Extraire une colonne

Nous allons extraire la première colonne de ce fichier avec la commande suivante :

awk -F, '{print $1}' people.txt

John Doe
Jane Doe
Alice Smith
Bob Smith

Extraire une colonne en fonction d’un critère

Nous allons extraire la première colonne de ce fichier en fonction d’un critère (par exemple, les personnes de plus de 30 ans) avec la commande suivante :

awk -F, '$2 > 30 {print $1}' people.txt

Alice Smith
Bob Smith

tree - Quand vous voulez visualiser l’arborescence d’un répertoire

La commande tree est un outil super pratique qui vous permet de visualiser l’arborescence d’un répertoire. Vous pourrez ainsi voir la structure de vos répertoires, les fichiers qu’ils contiennent. Super pratique par exemple pour de la documentation, ou pour vérifier que vous n’avez pas oublié de fichier dans un répertoire.

Créer un arbre d’exemple

Créez un arbre d’exemple avec la commande suivante :

mkdir -p my-project/src
touch my-project/src/index.js
touch my-project/src/app.js
mkdir -p my-project/public
touch my-project/public/index.html

Visualiser l’arborescence

Visualisez l’arborescence de votre répertoire avec la commande suivante :

tree my-project

my-project
├── public
   └── index.html
└── src
    ├── app.js
    └── index.js

2 directories, 3 files

tail - Quand vous voulez afficher les dernières lignes d’un fichier

La commande tail est un outil indispensable pour afficher les dernières lignes d’un fichier. Vous pourrez ainsi suivre en temps réel les logs d’un fichier, ou afficher les dernières lignes d’un fichier de log.

Créer un fichier de log d’exemple (avec ping)

Créez un fichier de log d’exemple avec la commande suivante :

ping google.com > ping.log

Laissez tourner la commande, et ouvrez un autre terminal pour afficher les dernières lignes du fichier de log avec la commande suivante :

tail -f ping.log

xargs - Quand vous voulez exécuter une commande pour chaque ligne d’un fichier

La commande xargs est un outil super pratique qui vous permet d’exécuter une commande pour chaque ligne d’un fichier. Vous pourrez ainsi exécuter une commande pour chaque fichier d’un répertoire, pour chaque ligne d’un fichier, et plus encore !

Créer un fichier d’exemple

Créez un fichier urls.txt avec le contenu suivant :

echo "https://google.com
https://bing.com
https://duckduckgo.com" > urls.txt

Exécuter une commande pour chaque ligne

Nous allons exécuter la commande curl pour chaque ligne de ce fichier avec la commande suivante :

cat urls.txt | xargs -n 1 -P 0 curl -I

Petite explication :

  • cat urls.txt : affiche le contenu du fichier urls.txt
  • | : redirige la sortie de la commande précédente vers l’entrée de la commande suivante
  • xargs : exécute une commande pour chaque ligne de l’entrée
  • -n 1 : exécute la commande avec une seule ligne à la fois
  • -P 0 : exécute la commande en parallèle
  • curl -I : exécute la commande curl -I pour chaque ligne (en affichant uniquement les en-têtes)

Bonus : N’extraire que le code de réponse

Nous allons extraire uniquement le code de réponse de chaque requête avec la commande suivante :

cat urls.txt | xargs -n 1 -P 0 curl -I -o /dev/null -s -w "%{http_code}\n"

Petite explication :

  • cat urls.txt : affiche le contenu du fichier urls.txt
  • | : redirige la sortie de la commande précédente vers l’entrée de la commande suivante
  • xargs : exécute une commande pour chaque ligne de l’entrée
  • -n 1 : exécute la commande avec une seule ligne à la fois
  • -P 0 : exécute la commande en parallèle
  • curl -I : exécute la commande curl -I pour chaque ligne (en affichant uniquement les en-têtes)
  • -o /dev/null : redirige la sortie de la commande vers /dev/null (pour ne pas afficher le corps de la réponse)
  • -s : exécute la commande en mode silencieux (pour ne pas afficher les messages d’erreur)
  • -w "%{http_code}\n" : demande à curl d’afficher uniquement le code de réponse et de sauter une ligne
Back to Blog