URL: https://linuxfr.org/users/pachamaro/journaux/petite-introduction-a-fish Title: petite introduction à Fish Authors: pachamaro Date: 2018年04月10日T13:27:27+02:00 License: CC By-SA Tags: fish, shell et logiciel Score: 23 Fish est un shell qui se veut simple. Il est tout à fait utilisable, quoiqu'il souffre encore de quelques bugs. Son mode interactif est particulièrement agréable. Utiliser Bash, le shell par défaut de nombreuses distributions, consiste en partie à éviter les pièges et à se retrouver dans un empilement de syntaxes ajoutées au fil du temps. Fish, lui, essaye d’être cohérent. Il ne cherche pas à respecter POSIX, enfin pas [complètement](https://github.com/fish-shell/fish-shell/wiki/POSIX-compatibility-thoughts), même si je pense qu’il ne devrait même pas essayer, car il risquerait d’y perdre une partie de sa cohérence. Fish est sous licence [GPL v2](https://fishshell.com/docs/current/license.html). * [page officielle](https://fishshell.com/) * [documentation] (https://fishshell.com/docs/current/index.html) L’invite de commande ```bash untel@hostname ~> ls entrée erreur kakoune/ sortie_standard ``` Les redirections n’utilisent pas de numéro. Les habituelles `<` pour l’entrée et `>` pour la sortie sont bien présentes, par contre `^` est utilisée pour les erreurs. ```bash ~> cat < entrée> ./sortie_standard ^ ./erreur ``` La mise en arrière-plan se fait classiquement avec l’esperluette. ```bash ~> gvim & ``` retour au premier plan ```bash ~> fg ``` remise en arrière-plan ```bash ~> bg ``` la conditionnelle : ```bash ~> if test 1=1 echo oui else echo non end oui ``` ```bash ~> if true echo oui end oui ``` Fish utilise essentiellement `test` pour les comparaisons. En réalité, c’est bien le code de retour de `test` qui est utilisé. `test` gère les comparaisons de fichiers et de nombres. Le code retour n’est pas stocké dans `$?` mais dans `$status` ```bash ~> true ~> echo $status 0 ``` La boucle for : ```bash ~> for i in * echo $i end entrée erreur kakoune sortie_standard ``` L’indentation est faite automatiquement. La boucle n’a pas de bloc ouvrant, mais le bloc fermant sera toujours `end`. `Alt-Entrée` pourra permettre d’ajouter des lignes lorsque Fish aurait exécuté le code lors de l’appui sur `entrée`. La boucle while : ```bash ~> set i 5 ~> while test 1 -lt $i echo $i set i (math $i - 1) end 5 4 3 2 ``` L’échappement : Les paramètres n’ont pas besoins d’être échappés. Ils sont utilisables tels quels : ```bash ~> set a 'a b' ~> echo $a a b ``` pour rappel, en Bash : ```bash $ a="a b" $ echo "$a" a b $ echo $a a b ``` Les arguments des fonctions se retrouvent dans `argv`. ```bash ~> function echo2 echo $argv end ~> echo2 1 2 3 1 2 3 ``` Les variables : ```bash ~> set a 5 ``` affecte 5 à a ```bash ~> set --export a 5 ``` rend la variable accessible aux sous processus ```bash ~> set --universal a 5 ``` rend la variable accessible à toutes les instances de Fish de l’utilisateur. Cette variable sera accessible même après un redémarrage du shell. L’autocomplétion : ```bash ~> ls |-l -r -t ``` Si je tapais `ls |` (`|` désigne le curseur) puis tab, le shell proposerait ```bash ~> ls |-l -r -t ``` avec la partie à droite de `|` grisée Alt-F permettrait alors d’obtenir `ls -l`, alors qu’avec la flèche droite nous obtiendrons `ls -l -r -t`. Ce n’est pas celle que vous voyez, mais la coloration syntaxique fonctionne en mode interactif. Une version locale de la [documentation](https://fishshell.com/docs/current/index.html) est accessible par la commande `help`, qui s’ouvrira dans votre navigateur. Elle est d’excellente qualité, mais en anglais seulement. Un certain nombre de commandes disposent également de leurs pages de manuels accessible avec la commande `man`.

AltStyle によって変換されたページ (->オリジナル) /