diff --git a/src/shell/commandes.md b/src/shell/commandes.md index f6a4af5..7ec4c28 100644 --- a/src/shell/commandes.md +++ b/src/shell/commandes.md @@ -2,34 +2,36 @@ ## Commandes -| | | -| ---------------- | ----------------------------------------------------------------------------------------------------- | -| `#` | commentaires (mais `#!/bin/sh` en début de fichier est le shebang) | -| `( commande )` | exécute la commande dans un sous-shell | -| `read a` | lecture d'une entrée pendant l'exécution d'un script | -| `exit num` | renvoie le statut du script au shell appelant | -| `. script` | inclusion et exécution du script dans le shell courant | -| `exec script` | exécute le script dans un nouveau shell | -| `cmd1 \|\| cmd2` | séparateur conditionnel (`cmd2` est exécutée même si `cmd1` ne s'est pas exécutée correctement) | -| `cmd1 && cmd2` | séparateur conditionnel (`cmd2` est exécutée seulement si `cmd1` s'est exécutée correctement) | -| `set` | liste de toutes les variables. | -| | Positionne les paramètres `$i` (`set a b c` positionne `$1` à `a`, `$2` à `b` et `$3` à `c`). | -| `unset var` | remise à zéro de la variable `var` | -| `type cmde` | indique la nature (et la localisaton) d'une commande | -| `alias al='cmd'` | crée une commande al équivalente à la commande `cmd` (qui peut être complexe) | -| `touch fichier` | change la date de dernière modification du fichier. Si le fichier n'existe pas, crée un fichier vide. | +| | | +| ----------------------------- | ----------------------------------------------------------------------------------------------------- | +| `#` | commentaires (mais `#!/bin/sh` en début de fichier est le shebang) | +| `( commande )` | exécute la commande dans un sous-shell | +| `read a` | lecture d'une entrée pendant l'exécution d'un script | +| `exit num` | renvoie le statut du script au shell appelant | +| `. script` ou `source script` | inclusion et exécution du script dans le shell courant | +| `cmd1 \|\| cmd2` | séparateur conditionnel (`cmd2` est exécutée même si `cmd1` ne s'est pas exécutée correctement) | +| `cmd1 && cmd2` | séparateur conditionnel (`cmd2` est exécutée seulement si `cmd1` s'est exécutée correctement) | +| `env` | liste toutes les variables d'environnement. | +| `env programme` | exécute le programme. Souvent utilisé dans les scripts après le *shebang* `#!` | +| `set` | liste de toutes les variables. | +| | Positionne les paramètres `$i` (`set a b c` positionne `$1` à `a`, `$2` à `b` et `$3` à `c`). | +| `unset var` | remise à zéro de la variable `var` | +| `type cmde` | indique la nature (et la localisaton) d'une commande | +| `alias al='cmd'` | crée une commande al équivalente à la commande `cmd` (qui peut être complexe) | +| `touch fichier` | change la date de dernière modification du fichier. Si le fichier n'existe pas, crée un fichier vide. | ## expr `expr` exécute des opérations arithmétiques sur des entiers (l'opérateur peut être `+`, `-`, `\*`, `/`, `%`, `=`, `\>`, `\<`, `\>=`, `\<=`, `!=`). -L'expression est une commande, donc pour affecter une opération à une variable, il faut forcer son exécution avec des antiquotes (`AltGr`-`7`) : +L'expression est une commande, donc pour affecter une opération à une variable, +il faut récupérer sa sortie standard avec `$(...)` : ```bash -a=`expr $b + $c` +a=$(expr $b + $c) ``` -> Si vous utilisez `bash`, il existe une syntaxe plus facile: `$((..))` (voir +> Si vous utilisez `bash`, il existe une syntaxe plus facile: `$((a=b+c))` (voir > [How to Increment and Decrement Variable in Bash > (Counter)](https://linuxize.com/post/bash-increment-decrement-variable/))