Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 3.0 de Friendly Interactive Shell pour Windows, Linux et macOS est disponible
Avec plusieurs changements non rétrocompatibles

Le , par Patrick Ruiz

220PARTAGES

13  0 
La version 3.0 de Friendly Interactive Shell est disponible depuis peu avec vingt changements non rétrocompatibles et une liste de dépréciations beaucoup moins longue.

Ce qui a changé et qui devrait poser des problèmes de compatibilité avec des scripts montés avec d’anciennes versions de Fish est que les tentatives d’assignation de valeur (via une unique commande) à plusieurs éléments d’un tableau sont désormais considérées comme invalides ; en d’autres termes, l’usage d’un set tab[1], tab[2] devrait générer le message « erreur de syntaxe. » Pareil pour les tentatives d’accès à l’élément « 0 » d’un tableau ; les têtes derrière le shell ont décidé que les indices des tableaux et listes sont numérotés à partir de 1 sous Fish 3.0, ce, comme c’est le pour des langages comme Visual Basic. L’un des plus gros changements aurait été le retrait de l’opérateur de redirection (^) et du caractère générique (?), mais ce n’est qu’une question de temps puisque l’équipe de développement les a fait apparaître sur la liste des dépréciations. Ces fonctionnalités vont donc tirer leur révérence dans une prochaine release.

Le shell s’est amélioré du point de vue de la syntaxe. À défaut d’écrire and, or ou not dans le cadre de la gestion d’opérations logiques, le développeur peut désormais faire usage de &&, || et ! comme en langage C. Cette nouvelle disposition est destinée à faciliter la migration depuis des shells compatibles POSIX. En sus, la nouvelle mouture permet l’utilisation des variables comme commandes. Fish 3.0 introduit une liste d’une dizaine de changements en ce qui concerne les nouvelles commandes et les nouveaux éléments de syntaxe.


Fish est un shell Unix conçu pour être plus interactif et convivial que ses prédécesseurs (bash, zsh, csh, etc.) dans la même famille. La syntaxe de Fish ressemble à celle d’un shell compatible POSIX, mais s’en écarte en beaucoup d’aspects, notamment, ceux pour lesquels ses concepteurs ont estimé que le shell POSIX est mal conçu. Lors de la création de scripts complexes avec Fish, il peut être utile d’analyser les arguments fournis par le biais de la ligne de commande. La plupart des tutoriels disponibles en ligne s’appuient sur bash pour cette opération et vont expliquer l’utilisation de getopts. Sous Fish, cette commande n’est pas disponible, mais les utilisateurs disposent du standard Unix getopt pour atteindre le même objectif. Illustration avec la portion de code qui suit.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function help_exit
    echo "Usage:  [options] arguments..."
    echo "Arguments:"
    echo "-a : Do something"
    echo "-d : Do something else"
    echo "-c stuff : Do someting with stuff"
    exit 1
end

set args (getopt -s sh abc: $argv); or help_exit
set args (fish -c "for el in $args; echo \$el; end")

set i 1
while true
    switch $args[$i]
        case "-a"
            echo "argument a is specified"
        case "-b"
            echo "argument b is specified"
        case "-c"
            set i (math "$i + 1")
            echo "value of argument c is" $args[$i]
        case "--"
            break
    end
    set i (math "$i + 1")
end
set pargs
if math "$i <" (count $args) > /dev/null
    set pargs $args[(math "$i + 1")..-1]
end

echo "positional arguments:" $pargs
Source : Notes de version

Et vous ?

Qu’en pensez-vous ?

Avez-vous déjà fait usage de ce shell ? Si oui, quel retour pouvez vous en faire ?

Comment le comparez-vous à bash ? Csh ?

Quel est votre shell préféré ? Pourquoi ?

Voir aussi :

Microsoft apporte le shell Unix Bash à Windows 10 : le résultat d'une collaboration avec Canonical

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de helix_tp
Nouveau membre du Club https://www.developpez.com
Le 03/01/2019 à 10:41
Curieux d'un cote on applique une convention C (&&, || et ! comme en langage C) et de l'autre on l'a retire en passant sur une syntaxe VB (tableaux et listes sont numérotés à partir de 1 ).

Je lui préféré toujours ZSH.
0  0 
Avatar de Br31zh
Nouveau Candidat au Club https://www.developpez.com
Le 03/01/2019 à 14:20
Ils n'ont pas changé le fonctionnement des index, ça a toujours commencé à 1. Mais avant, et c'est toujours dans la doc, un index invalide était ignoré silencieusement, et maintenant cela provoque une erreur.

> Note that array indices start at 1 in fish, not 0, as is more common in other languages. This is because many common Unix tools like seq are more suited to such use. An invalid index is silently ignored resulting in no value being substituted (not an empty string).

C'est d'ailleurs ce qui est indiqué dans la Release Note…

> Literally accessing a zero-index is now illegal syntax and is caught by the parser (#4862). (fish indices start at 1)

Personnellement je ne l'utilise qu'en interactif, pour son auto-completion imbattable et la coloration à la volée. Pour les scripts, ça manque de portabilité (pas de compatibilité POSIX, et rarement installé). Pour les scripts, j'utilise ce bon vieux Bash.
0  0