Sith/docs/howto/terminal.md
2024-07-21 00:56:58 +02:00

2.3 KiB

Quel terminal utiliser ?

Quel que soit votre configuration, si vous avez réussi à installer le projet, il y a de fortes chances que bash existe sur votre ordinateur. Certains d'entre vous utilisent peut-être un autre shell, comme zsh.

En effet, bash est bien, il fait le taff ; mais son ergonomie finit par montrer ses limites. C'est pourquoi il existe des shells plus avancés, qui peuvent améliorer l'ergonomie, la complétion des commandes, et l'apparence. C'est le cas de zsh. Certains vont même plus loin et refont carrément la syntaxe. C'est le cas de nu.

Pour choisir un terminal, demandez-vous juste quel est votre usage du terminal :

  • Si c'est juste quelques commandes basiques et que vous ne voulez pas vous embêter à changer votre configuration, bash convient parfaitement.
  • Si vous commencez à utilisez le terminal de manière plus intensive, à varier les commandes que vous utilisez et/ou que vous voulez customiser un peu votre expérience, zsh est parfait pour vous.
  • Si vous aimez la programmation fonctionnelle, que vous adorez les pipes et que vous voulez faire des scripts complets mais qui restent lisibles, nu vous plaira à coup sûr.

!!! note

Ce ne sont que des suggestions.
Le meilleur choix restera toujours celui
avec lequel vous êtes le plus confortable.

Commandes utiles

Compter le nombre de lignes du projet

=== "bash/zsh"

```bash
sudo apt install cloc
cloc --exclude-dir=doc,env .
```
Ok, c'est de la triche, on installe un package externe.
Mais bon, ça marche, et l'équivalent pur bash
serait carrément plus moche.

=== "nu"

Nombre de lignes, groupé par fichier :
```nu
ls **/*.py | insert linecount { get name | open | lines | length }
```

Nombre de lignes total :
```nu
ls **/*.py | insert linecount { get name | open | lines | length } | math sum
```

Vous pouvez aussi exlure les lignes vides
et les les lignes de commentaire :
```nu
ls **/*.py |
insert linecount {
    get name |
    open |
    lines |
    each { str trim } |
    filter { |l| not ($l | str starts-with "#") } |  # commentaires
    filter { |l| ($l | str length) > 0 } |  # lignes vides
    length
} |
math sum
```