Le Shell

L’interface en ligne de commande est appelée un shell et sur Ubuntu, le shell par défaut est bash.

Un shell est un programme qui affiche un prompt et attends une commande.

Voici les informations du prompt :

adriano@jammy:~$          (1)
user@hostname:directory$  (2)
1 Je suis l’utilisateur adriano et je me trouve dans mon répertoire home sur le serveur jammy.
2 Utilisateur@serveur:répertoire courant

Comme vu précédemment, les raccourcis . et .. correspondent aux dossiers courant et parent.
Nous pouvons ajouter ~ qui représente le dossier home de l’utilisateur.

Le prompt peut-être personnalisé par la variable PS1 ou un programme.

Les variables d’environnements

Le shell utilise des variables que vous pouvez définir ou redéfinir sur la ligne de commande ou à partir de votre fichier ~/.bashrc

Par exemple, quand vous lui donnez le nom d’une commande, le shell va chercher dans les dossiers définis dans la variable PATH un exécutable du même nom.

adriano@jammy:~$ echo $PATH
/bin:/usr/bin:/sbin:/usr/local/bin

adriano@jammy:~$ which nano
/usr/bin/nano

La variable $HOME contient le chemin vers le dossier HOME de l’utilisateur et la variable USER contient son username :

adriano@jammy:~$ echo $HOME
/home/adriano

adriano@jammy:~$ echo $USER
adriano

adriano@jammy:~$ echo $UID
1000

Exécution des programmes et scripts

Lorsqu’un exécutable est dans un des dossiers définis dans la variable $HOME, il suffit d’entrer son nom.

Par contre s’il ne l’est pas, il faut aussi donner le chemin complet ou relatif.

Voici un script bash à créer dans le dossier $HOME :

Contenu du fichier ~/my_script.sh
#!/bin/bash                (1)
NAME=$1

if [[ -n $NAME ]]; then
    echo "Hello $NAME !"
    exit
fi

echo "Hello World !"
1 Cette ligne indique au shell que si le fichier texte est exécutable, il faut le lancer avec le programme /bin/bash

Pour l’exécuter, nous pouvons l’appeler comme ceci :

adriano@jammy:~$ bash my_script.sh Adriano
Hello Adriano !

Mais nous pouvons aussi lui ajouter les droits d’exécution et lancer le script sans bash :

adriano@jammy:~$ chmod a+x my_script.sh

adriano@jammy:~$ ./my_script.sh
Hello World !

adriano@jammy:~$ /home/adriano/my_script.sh
Hello World !

Maintenant, nous allons créer un dossier ~/bin/ que nous utiliserons pour y copier nos scripts ou programmes personnels.

Pour ajouter un dossier à la variable $PATH de la session :

adriano@jammy:~$ mkdir ~/bin

adriano@jammy:~$ export PATH=~/bin:$PATH

adriano@jammy:~$ echo $PATH
/home/adriano/bin:/bin:/sbin:/usr/bin:/usr/local/bin

adriano@jammy:~$ my_script.sh Adriano
Hello Adriano !

Cependant, ceci n’est valable que pour cette session.
Si nous voulons que ce changement soit persistant, il faut l’ajouter au fichier de configuration ~/.bashrc :

adriano@jammy:~$ echo 'export PATH=~/bin:$PATH' >> ~/.bashrc

Commandes de base

cd, ls, mkdir, cp, mv, ln, cat, head, tail, less, most, file, curl, wget

Autres commandes

htop, dfc, ncdu