IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Fish Shell, un shell de ligne de commande intelligent et convivial pour les systèmes Unix


Sujet :

Shell et commandes GNU

  1. #21
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    J'aimerais surtout enfin que le monde Unix fasse son ménage et sorte un terminal+shell qui interprète Ctrl+C (^C) comme copier et non SIGINT.
    ctrl-C pour faire un copier, ça vient de Windows, même si ça c'est imposé dans les GUI. Sous MS-DOS ctrl-C interrompait aussi le programme. On peut encore avoir ce comportement dans cmd.exe avec la commande break
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #22
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Est-ce que ce n'est pas théorique ? Les gens appellent leurs scripts machin.sh, et croient réellement faire du standard, alors que l'exécutable est un raccourci vers bash ou zsh; et dans le code, ils utilisent vraiment des particularismes bash. Bref, avalanche de faux-semblants pour faire croire qu'on fait "standard". L'exécutable "sh" est suranné.
    Hello, que tu sois sous Linux (implémentation Bash) ou macOS (implémentation Zsh) tu peux utiliser la syntaxe Bourne Shell. Tu ne vas pas forcer l'équipe sous Linux à installer Zsh parce que tu es sous Mac, ou t'amuser à aller installer Zsh sur les serveurs Linux, mais tu peux faire abstraction des Bash, Zsh et autres avec Bourne Shell, tu as même des validateurs de syntaxe.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #23
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    ctrl-C pour faire un copier, ça vient de Windows, même s ça c'est imposé dns les GUI. Sous MS-DOS ctrl-C interrompait aussi le programme. On peut encore avoir ce comportement dans cmd.exe avec la commande break
    Mon point était qu'on s'en fiche un peu d'où ça vient, Ctrl+C pour copier est devenu universel, l'ergonomie des navigateurs web et des GUIs s'est répandue partout. Les gen z ont appris l'informatique avec un web browser pas un shell. Même moi qui suis gen Y.
    ll n'y a vraiment que les boomers genX qui y sont vaguement attachés : il faut évoluer.

    P.S. C'est un sujet sensible, souvent reconnu clivant. De mon point de vue gros intérêt à trancher et aller de l'avant.

  4. #24
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    Mon point était qu'on s'en fiche un peu d'où ça vient, Ctrl+C pour copier est devenu universel
    oui, certes, mais :
    ctrl-c est devenu universel pour copier dans les GUI, mais reste universel pour interrompre un processus dans un shell. Si tu fais de la ligne de commande, il faut le savoir. Par contre, je ne sais pas le comportement avec PowerShell, ni avec le nouveau terminal Windows. Point intéressant pour ceux qui font de l'environnement hétérogène.

    Tu ne vas pas forcer l'équipe sous Linux à installer Zsh parce que tu es sous Mac
    zsh est relativement récent sur Mac (depuis Catalina). Et en cas de mise à jour depuis système antérieur, il reste par défaut sur Bash avec une notification et une commande pour basculer sur zsh par défaut. De toute façon tu dois tenir compte des différences de plateforme dans tes scripts, après ça dépend ce que tu fais.

    Je ne suis pas spécialiste shell, mais je pense qu'il est tout à fait possible de faire un script qui fonctionnera quel que soit le shell, mais du coup, aucun intérêt particulier à utiliser l'un ou l’autre. Soit on veut faire dans le compatible/facilement reprenable, soit on utilise celui qu'on veut avec pour avantage les addons par rapport à d'autres shells, avec pour inconvénient l'éventuelle non portabilité et donc l'obligation de rester sur le shell choisi.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #25
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    il est tout à fait possible de faire un script qui fonctionnera quel que soit le shell
    tout à fait; en respectant scrupuleusement la norme POSIX.
    mais pas csh qui n'est pas du tout POSIX.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #26
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 476
    Points : 11 051
    Points
    11 051
    Par défaut
    Oui N_BaH,
    Oui Gugelhupf,
    Citation Envoyé par Gugelhupf Voir le message
    Hello, je vais essayer d'apporter 1 réponse simple à ces 4 questions: Le meilleur shell est celui qui est disponible "partout", par défaut Bourne Shell (cf: #!/bin/sh) dont Bash, Zsh, et autres apportent une surcouche.
    C'est grâce à tout ça que des missions sont réussies en tant qu'ingénieur/administrateur système (j'y adjoins mes collègues réseau, DBA, supervision, sécurité, etc.) chez des clients CAC 40, grandes administrations, où,
    fort heureusement, les prestataires précédents (dont des internes qui sont souvent ex-prestataires) ont pris le temps, la force de caractère, le professionnalisme, de respecter l'historique de la société et de ses usages en termes POSIX, de présence de VI (voir à ce propos la «bataille historique» Guerre d'éditeurs), pour intervenir de façon tout terrain (cf. 4 x 4) sur leurs infrastructures partout dans le monde ...

    [Edit]
    On peut evidemment adopter d'autres pratiques mais ça doit faire l'objet d'un projet à part entière de refonte du SI (Système d'Information) initié par la Direction, validé par les Directions opérationnelles, etc.
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  7. #27
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Je ne suis pas spécialiste shell, mais je pense qu'il est tout à fait possible de faire un script qui fonctionnera quel que soit le shell
    Oui c'est facile :
    > python monscript.py


  8. #28
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    mouais,
    sous réserve de pas faire un dev sur Python 2 à exécuter sur une machine avec Python 3.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #29
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    Citation Envoyé par MaximeCh Voir le message
    Mon point était qu'on s'en fiche un peu d'où ça vient, Ctrl+C pour copier est devenu universel, l'ergonomie des navigateurs web et des GUIs s'est répandue partout. Les gen z ont appris l'informatique avec un web browser pas un shell. Même moi qui suis gen Y.
    ll n'y a vraiment que les boomers genX qui y sont vaguement attachés : il faut évoluer.

    P.S. C'est un sujet sensible, souvent reconnu clivant. De mon point de vue gros intérêt à trancher et aller de l'avant.
    Marrant, déjà hors sujet puisque c'est juste de la conf de tty et non du shell

    De plus, avant de faire ch... les unixiens pour leur console / terminal qui utilisent Ctrl-C pour autre chose qu'un copier, va dire à ton pote windows de le mettre en place sur ses consoles powershell ou msdos

    Et un truc plus merdique que ton copier, c'est les fichiers textes dont chaque OS (UNIX / MAC / WINDOWS) y va de de sa petite sauce pour ne pas mettre tout le monde d'accord.
    Cordialement.

  10. #30
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 438
    Points : 43 081
    Points
    43 081
    Par défaut
    va dire à ton pote windows de le mettre en place sur ses consoles powershell ou msdos
    Comme je le disais, tu as l'option dans cmd.exe. Pour PowerShell, je sais pas, mais je présumes que tu dois pouvoir activer/désctiver le truc.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  11. #31
    Membre expérimenté
    Profil pro
    Ingénieur système Linux N3
    Inscrit en
    Juillet 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur système Linux N3

    Informations forums :
    Inscription : Juillet 2008
    Messages : 419
    Points : 1 527
    Points
    1 527
    Par défaut Pas d'accord
    Citation Envoyé par disedorgue Voir le message
    Il y a au moins 3 choses que bash ne sait pas faire: renommer et/ou effacer un fichier et créer un répertoire (d'ailleurs, je ne pense pas que les ksh ou zsh savent le faire), est-ce que fish shell sait le faire ?

    PS: ici, je parle de façon native, sans utiliser de commandes externes telles que mv, rm ou mkdir.
    Je ne suis pas du tout d'accord avec ton point de vue. Dans ton exemple les commandes mv rm et mkdir sont externes, elles sont codées, maintenues, compatibles avec les différents filesystems qu'on peut rencontrer, ne font qu'une chose et sont réputées bien le faire. Les intégrer directement dans le shell veut dire soit ré-écrire soit recopier le code si la licence le permet, pour ensuite créer la surcharge de travail pour maintenir plusieurs versions du même exécutable et intégrer tous les correctifs. As-tu entendu parler de la factorisation du code ? As-tu entendu parler des bibliothèques de fonction ? Je pense que ta remarque est due à une approche fondamentalement mauvaise du codage informatique. KISS: keep it simple and stupid, un programme=une fonctionnalité. Don't reinvent the wheel. Pourquoi pas une nouvelle version de TAR+GZIP directement dans le shell, et puis le gestionnaire de paquets tant qu'on y est

  12. #32
    Membre expérimenté
    Profil pro
    Ingénieur système Linux N3
    Inscrit en
    Juillet 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur système Linux N3

    Informations forums :
    Inscription : Juillet 2008
    Messages : 419
    Points : 1 527
    Points
    1 527
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    ...
    Je ne suis pas spécialiste shell, mais je pense qu'il est tout à fait possible de faire un script qui fonctionnera quel que soit le shell...
    Je plussoie, une mission précédente mettait en oeuvre un script bash qui fonctionnait indifféremment sur AIX, Solaris et Redhat Linux... J'ai pu le faire parce que bash était installé par défaut sur tous les environnements mais si ça n'avait pas été le cas, je me serais restreint à bourne Shell. Ensuite, à moi de gérer les subtilités ou les différentes versions de package manager, mais j'étais payé pour ça en fait

  13. #33
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    Citation Envoyé par CaptainDangeax Voir le message
    Je ne suis pas du tout d'accord avec ton point de vue. Dans ton exemple les commandes mv rm et mkdir sont externes, elles sont codées, maintenues, compatibles avec les différents filesystems qu'on peut rencontrer, ne font qu'une chose et sont réputées bien le faire. Les intégrer directement dans le shell veut dire soit ré-écrire soit recopier le code si la licence le permet, pour ensuite créer la surcharge de travail pour maintenir plusieurs versions du même exécutable et intégrer tous les correctifs. As-tu entendu parler de la factorisation du code ? As-tu entendu parler des bibliothèques de fonction ? Je pense que ta remarque est due à une approche fondamentalement mauvaise du codage informatique. KISS: keep it simple and stupid, un programme=une fonctionnalité. Don't reinvent the wheel. Pourquoi pas une nouvelle version de TAR+GZIP directement dans le shell, et puis le gestionnaire de paquets tant qu'on y est
    tar+gzip ne sont pas des appels systèmes.
    Et si on suit cette politique pourquoi un shell comme bash a des commande tel que echo ou kill ?

    Et pourquoi implémente-il des simulations de device tel que /dev/tcp ?

    Je ne dis pas qu'il doit réimplémenter les commande rm,mv et mkdir, mais au moins avoir des commandes équivalentes qui ne font qu'appeler l'appel système.
    Cordialement.

  14. #34
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 470
    Points : 6 107
    Points
    6 107
    Par défaut
    À part ça, du côté des shells alternatifs peu connus, je viens de découvrir Nushell qui n'est pas mature, mais qui est conceptuellement intéressant. Le monde de l'informatique est vaste.

  15. #35
    Futur Membre du Club
    Homme Profil pro
    none
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 6
    Points
    6
    Par défaut Fish pour la productivité du shell /bin/env sh pour la compatibilité
    Pour améliorer la productivité j'utilisais OhMyZsh qui permet de facilement ajouter des extensions dans Zsh pour améliorer la productivité.

    Le problème avec les extensions c'est que la surcouche + les extensions peuvent ralentir l'utilisation.

    Depuis je suis passé sur fish. Pour une configuration équivalente j'ai pu mesurer que fish est 3 à 4 fois plus rapide.

    La raison est simple... Les extensions fish (via fisher) sont beaucoup plus légère à charger.


    Du coup j'utilise l'architecture suivante :

    • ~/.local/bin <= script #!/usr/bin/env sh
    • ~/.config/fish <= extension fish (natif dans fish)

Discussions similaires

  1. [AC-2013] Access - commande Like ou comme pour les champ vide ou null
    Par m_charmat dans le forum Access
    Réponses: 1
    Dernier message: 07/02/2019, 12h28
  2. Réponses: 1
    Dernier message: 14/08/2008, 09h48
  3. [SHELL] ligne de commande
    Par Youni_1989 dans le forum Linux
    Réponses: 5
    Dernier message: 06/11/2007, 09h54
  4. (shell) php, mysql en ligne de commande
    Par pinpom dans le forum Linux
    Réponses: 2
    Dernier message: 30/08/2007, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo