· 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 !
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èresyou
:
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 fichierurls.txt
|
: redirige la sortie de la commande précédente vers l’entrée de la commande suivantexargs
: 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èlecurl -I
: exécute la commandecurl -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 fichierurls.txt
|
: redirige la sortie de la commande précédente vers l’entrée de la commande suivantexargs
: 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èlecurl -I
: exécute la commandecurl -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