Aller au contenu

# Terminal

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

    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.

Nombre de lignes, groupé par fichier :

    ls **/*.py | insert linecount { get name | open | lines | length }

Nombre de lignes total :

    ls **/*.py | insert linecount { get name | open | lines | length } | math sum

Vous pouvez aussi exlure les lignes vides et les les lignes de commentaire :

    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