# Commandes diverses - Shell - UNIX

## 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. |

## 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`) :

```bash
a=`expr $b + $c`
```

> Si vous utilisez `bash`, il existe une syntaxe plus facile: `$((..))` (voir
> [How to Increment and Decrement Variable in Bash
> (Counter)](https://linuxize.com/post/bash-increment-decrement-variable/))
