Bash 5 : une introduction

Posté par  . Édité par Ysabeau 🧶, Gil Cot ✔, Anonyme, Benoît Sibaud et palm123. Modéré par Ysabeau 🧶. Licence CC By‑SA.
44
5
août
2022
Ligne de commande

La troisième version du document « Introduction à la programmation en Bash » (IUT de Rodez) vient de paraître. Elle est principalement destinée aux étudiants de niveau Licence.

Contexte

Il s’agit de la troisième révision du cours donné par Eric Sanchis à l’IUT de Rodez.

Cursus

L’IUT de Rodez, dans l’Aveyron, est un site délocalisé de l’Université Toulouse 1 Capitole. Il délivre un Bachelor Universitaire de Technologie (BUT) au bout de deux années d’études, soit quatre semestres validés.

Il est possible ensuite, toujours à l’IUT de Rodez, de prolonger les études d’une année pour atteindre le niveau Licence dans le cursus LMD (Licence-Master-Doctorat).

« Introduction à la programmation en Bash » est le support de cours du BUT Informatique.

Auteur

Eric Sanchis est Associate Professor à l’université de Laval au Québec depuis 2012. Il est aussi Maître de conférences en informatique à l’IUT Rodez où il enseigne depuis 1992, et y est membre permanent de l’équipe de recherche ARAL.

Ce cours, dispensé depuis 2007, en est à sa troisième édition.

Contenu

Bien, que contient cette ressource ? Qu’y trouve-t-on pas ou pas ?

Essentiel

Il est mentionné au point 1.1.3.

Toutefois, afin de rendre l’étude de bash plus aisée, nous n’aborderons pas sa syntaxe de manière exhaustive ; en particulier, lorsqu’il existera plusieurs syntaxes pour mettre en œuvre la même fonctionnalité, seule la syntaxe la plus lisible sera présentée, parfois au détriment de la portabilité vers les autres shells ou de la compatibilité POSIX.

Ainsi, on trouvera la forme foo $(bar baz) fuu et non foo `bar baz` fuu
De même, il est directement question en 10.2.2 de [[ sans jamais évoquer le plus portable [ mais plus limité.
Ce choix assumé devrait permettre d’apprendre rapidement bash quand on vient d’autres langages de scripting.

Progressif

La table des matières montre un avancement progressif, et assez didactique.
Les chapitres 2 et 3 traitent de l’expansion de la ligne de commande.
Le chapitre 4 embrasse toute la problématique des méta-caractères et des expressions génériques.
Le chapitre suivant discute des redirections et tubes qui font l’autre force des shell unixiens.
Ensuite, on enchaîne sur les groupements de commandes et tout ce qui est relatif aux codes de retour.
Les chapitres 9, 11 et 12, traitent respectivement : des chaînes de caractères, des expressions arithmétiques, et des tableaux.
Les structures de contrôle du langage de programmation sont abordées aux chapitres 8 (pour case et while) et 10 (pour for et if)
Les deux derniers chapitres évoquent les alias et les fonctions.

Illustré

Les différents concepts évoqués sont accompagnés d’exemples que l’on peut reproduire.
Pour ne rien gâcher, il y a quelques exercices intéressants.

Critiques

Comme ce n’est pas une dépêche purement publicitaire, vous aurez bien entendu droit aux avis de l’équipe de rédaction.

D’abord, bash 5… Les exemples ont été en effet testés avec la version 5.1, mais il n’y à rien qui soit spécifique aux versions 4.x ou 5.x ! Pour les gourous du bash qui espéraient trouver quelque plus, il faudra passer son chemin.

Comme déjà dit, ce tutoriel va à l’essentiel en privilégiant les formes les plus lisibles. C’est une bonne chose de ne pas évoquer, quand c’est possible, les ésotérismes du shell…
Par contre, la présentation des exemples peut dérouter quand il y a des commentaires. On trouve par exemple (en 11.7)

declare -i x    # affiche les dix chiffres
for (( x=0 ; x<10 ; x++ ))
do
  echo $x
done

et aussi des trucs comme (en 2.1.1)

$ x=coucou  y=bonjour       => la variable x contient la chaîne de caractères coucou
$               => la variable y contient la chaîne bonjour

Le contrat initial de favoriser une seule forme (en 1.1.3.) est rompu à la fin (en 14.10.) avec l’évocation de source et .

Le contenu est disponible en deux versions : une web (cf. lien) découpée en plusieurs pages avec liens de navigation (précédant/sommaire/suivant), et un PDF téléchargeable.
La version PDF utilise une étrange coloration syntaxique sans fond tandis que la version web n’utilise qu’un fond uni et du texte en noir, uni pour les exemples avec des variations de graisse et inclinaison dans le texte d’explication.
Enfin, seule la version PDF comporte des exercices, ainsi que des références complémentaires

Malgré tout cela, c’est une bonne ressource complète en français qui est plus simple que le mythique ABS (listé parmi les références de l’auteur.)

NdM : cette dépêche a été soumise par l’auteur du cours, mais sous une forme tellement succincte qu’elle ne pouvait pas passer sous les fourches caudines de la modération qui a, cependant, trouvé le sujet intéressant. Gil Cot l’a quasiment entièrement récrite en l’enrichissant considérablement, notamment avec « le point de vue de la rédaction ». Il a mérité au passage les plus chaleureux remerciements de la modération.

Aller plus loin

  • # Suite de fibonacci en bash:

    Posté par  . Évalué à 2. Dernière modification le 05 août 2022 à 15:58.

    Est ce qu'a la fin du cours on est capable de comprendre les méchanismes internes de ce one-liner? ;)

     a=('a[a[n]=a[n-1]+a[n-2],n++/94]' 2 0 1); echo "${a[@]:n=4,a}"
    • [^] # Re: Suite de fibonacci en bash:

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Juste après avoir avoir fini le cours, pour un/une complet/complète débutant/débutante, j'ai un petit doute. Ceci dit, pour avoir entièrement parcouru le cours, oui il y a tous les éléments pour le comprendre ; juste qu'il faut quand même quelques temps de pratique à mon avis.

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: Suite de fibonacci en bash:

      Posté par  . Évalué à 10. Dernière modification le 05 août 2022 à 20:30.

      Amusant. Bien que pratiquant le Bash fréquemment, je dois avouer avoir dû consulter le man pour le comprendre.

      SPOILER ALERT:

      a est donc un tableau contenant 4 éléments.
      a[0] --> 'a[a[n]=a[n-1]+a[n-2],n++/94]'
      a[1] --> 2
      a[2] --> 0
      a[3] --> 1

      Pour un tableau X, la syntaxe ${X[@]:i} permet d'obtenir les éléments à partir de l'indice i soit X[i] X[i+1] ...

      Ici, i correspond à l'expression n=4,a qui est alors évaluée en mode ARITHMETIQUE.

      Comme en C, l'opérateur , permet d'évaluer plusieurs expressions et retourne la valeur de la dernière. Ici, on a donc n=4 puis le résultat final a.

      Or, en Bash, une référence simple à un tableau retourne son premier élément.

      L'indice 'i' est donc équivalent à

      i --> n=4, a[a[n]=a[n-1]+a[n-2],n++/94]

      Comme n++/94 est équivalent à n=n+1, n/94 on a donc

      a[0] --> a[a[n]=a[n-1]+a[n-2],n++/94]

      a[0] --> a[a[n]=a[n-1]+a[n-2],n=n+1,n/94]

      a[0] --> a[n]=a[n-1]+a[n-2], n=n+1, a[n/94]

      Et l'indice i est donc évalué comme

      i --> n=4, a[n]=a[n-1]+a[n-2], n=n+1, a[n/94]
      i --> n=4, a[4]=a[3]+a[2], n=5, a[5/94]
      i --> n=4, a[4]=a[3]+a[2], n=5, a[0]

      On remplace alors a[0] par sa valeur pour obtenir

      i --> n=4, a[4]=a[3]+a[2], n=5, a[n]=a[n-1]+a[n-2], n=n+1, a[n/94]
      i --> n=4, a[4]=a[3]+a[2], n=5, a[5]=a[4]+a[3], n=6, a[6/94]
      i --> n=4, a[4]=a[3]+a[2], n=5, a[5]=a[4]+a[3], n=6, a[0]

      Le même processus récursif se poursuit jusqu'à ce que n soit égal à 94 et donc que a[n/94] devienne a[1].

      L'indice i est donc évalué comme

      i --> n=4, a[4]=a[3]+a[2], n=5, a[5]=a[4]+a[3], n=6, ... , a[93]=a[92]+a[91], n=94, a[1]

      La valeur finale de l'indice i est donc a[1] = 2 et le résultat final ${a[@]:i} = a[2] a[3] ... a[93], la suite de Fibonacci.

  • # BUT en 2 ans ??

    Posté par  . Évalué à 3.

    Juste sur ce point.
    Un Bachelor se fait en 3 ans. On peut avoir un DUT au bout de 2 ans (délivrance intermédiaire).

    Comment faites-vous à Rodez ?

    • [^] # Re: BUT en 2 ans ??

      Posté par  (site web personnel) . Évalué à 3.

      Le BUT dans les IUT, c'est 3 années.

    • [^] # Re: BUT en 2 ans ??

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      La source de l'info est le site de l'université de Toulouse dont il dépend :
      https://www.ut-capitole.fr/accueil/universite/composantes/iut-de-rodez

      Et la fiche sur le site de l'IUT n'est pas terriblement claire (pas pour moi en tout cas) :
      https://www.iut-rodez.fr/fr/les-formations/but-informatique/but-informatique-presentation

      Mais ça peut se corriger.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

    • [^] # Re: BUT en 2 ans ??

      Posté par  . Évalué à 10.

      La réforme du DUT et Licence Pro en BUT maintient effectivement la possibilité d'obtenir le DUT au bout de 2 ans, mais ce n'est pas pour autant que cela sera considéré comme le même DUT par tout le monde. Certaines écoles indiquent que comme les enseignements sont étalés sur 3 ans, le niveau DUT sera acquis à la fin du BUT et donc les étudiants seront acceptés dans les écoles en 1ère année du cycle ingénieur, donc 6 ans pour obtenir le titre : CPU vs CDEFI

      Je n'enseigne plus cette année en IUT mais j'y ai passé environ 15 ans donc voici mon analyse de la réforme et mon ressenti.

      Le niveau des étudiants devient plus hétérogène avec l'obligation d'accepter 50% de BAC STI alors que dans pas mal d'IUT on pouvait remplir avec 100% de BAC S car beaucoup d'étudiants de S qui aiment l'info préfèrent passer 2 ans à faire ça plutôt que de passer par des prépas, ou des licences avec beaucoup de maths, physique, etc.
      Et maintenant on a des bons étudiants avec un BAC S, toutes les options maths + info qui se retrouvent face à des BAC STI de différents niveaux et c'est pas simple à gérer.
      Pour l'instant il faut attendre de voir quelles sont les filières qui vont accepter les étudiants de BUT : les écoles, les L3 informatique, les masters ???
      De mon point de vue, la réforme n'est pas là pour aider les étudiants, ni fournir des moyens de mieux les former.
      Il faut aussi voir comment ça a été mené en plein COVID avec des infos contradictoires ou des interprétations différentes des textes, l'introduction de pleins de projets comme ça ça coûte moins cher en heures, un stage de 8 semaines non obligatoirement rémunéré en 2ème année, un stage plus long en 3ème année et on peut se demander comment les étudiants vont trouver autant de stages.
      Toute cette réforme évidemment élaborée en lien étroit avec les équipes pédagogiques concernées sur le terrain… ou pas !
      La prochaine étape sera peut être d'imposer des taux de réussite (le rectorat a cette possibilité apparemment) pour assurer que 80% des étudiants obtiennent un BAC+3 qui ne sera pas une licence.
      Ou alors je n'ai pas très bien compris l'intérêt de la réforme…
      De toute façon, les équipes pédagogiques vont tout faire pour ne pas lâcher les étudiants, donc ça va donner l'apparence que la réforme fonctionne, mais c'est très difficile sur le terrain, dans mon IUT on a par exemple abandonné la formation en Année Spéciale qui permettait à des étudiants ayant un BAC+2 non info ou une expérience professionnelle de suivre une formation intensive d'1 an pour obtenir le DUT et une double compétence ou se réorienter.

  • # Merci à Monsieur Sanchis

    Posté par  (site web personnel) . Évalué à 10.

    Et un grand merci à ce prof sans qui:
    - j'aurai arrêté mon DUT à la première année
    - qui m'a fait découvrir le logiciel libre avec un cours abordant le coté historique et philosophique du libre
    - sans qui je ne serai pas aujourd'hui contributeur au projet GNOME

    Et à l'époque, on avait des cours KSH sous HPUX :) (1999)

    • [^] # Re: Merci à Monsieur Sanchis

      Posté par  (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 06 août 2022 à 11:32.

      Il y a quelques petits trucs du Korn qui n'ont pas été repris dans Bourne Again. Ksh est vraiment fascinent pour l'époque.

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: Merci à Monsieur Sanchis

        Posté par  . Évalué à 3.

        Ksh est vraiment fascinent pour l'époque.

        Pourquoi ?

        https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

        • [^] # Re: Merci à Monsieur Sanchis

          Posté par  (site web personnel, Mastodon) . Évalué à 5.

          Bah si tu te remets dans l'époque, Jo a apporté beaucoup de choses qui faisaient défaut aux autres shells et permis de faire plus que csh en restant dans l'esprit Bourne. Beaucoup de choses qui semblent aller de soi aujourd'hui (rien que la complétion avec la touche de tabulation par exemple, mais aussi les tableaux), dans bash ou zsh, sont apparues avec ksh ; je m'excuse de trouver ça fascinant.

          Encore aujourd'hui, il reste de petites choses sympas (qui comme je dis n'ont pas été reprises dans bash) Par exemple, en shell POSIX

          que_minuscules=$(echo "LinuxFR" | tr "[:upper:]" "[:lower:]")

          …qu'il faut répéter à chaque modification de la valeur. Je laisse le bashisme qui va bien à titre d'exercice (je ne pratique pas assez pour me souvenir de la façon élégante et concise de le faire.) En kshisme c'est aussi marrant que

          typeset -l que_minuscules
          que_minuscules="LinuxFR"
          echo $que_minuscules
          linuxfr

          et si je change la valeur de ma variable ça continue à le faire tout seul.

          Les tubes aussi c'est pas mal …dans certaines constructions intuitives.
          Ainsi, en bash

          bash-3.1$ echo linuxfr | read variable
          bash-3.1$ echo $variable
          
          bash-3.1$ 

          Le pourquoi est expliqué dans le cours. En ksh

          ksh93$ echo linuxfr | read variable
          ksh93$ echo $variable
          linuxfr
          ksh93$ 

          Ça fait longtemps que je ne fait que des scripts POSIX, mais en fouillant je pourrai te retrouver d'autres joyeusetés ksh.

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

          • [^] # Re: Merci à Monsieur Sanchis

            Posté par  . Évalué à 6.

            je m'excuse de trouver ça fascinant.

            C'était une question, je ne me suis jamais penché sur csh/ksh/tcsh et je comprends pour l'autocomplétion effectivement.

            je ne pratique pas assez pour me souvenir de la façon élégante et concise de le faire.

            Depuis la version 4, tu peux soit utiliser la même méthode soit :

            $ site=linuxfr
            $ printf "%s\n" ${site} ${site^} ${site^^} ${site^^[iu]}
            linuxfr
            Linuxfr
            LINUXFR
            lInUxfr

            https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

            • [^] # Re: Merci à Monsieur Sanchis

              Posté par  (site web personnel, Mastodon) . Évalué à 2.

              Ah oui, ^… D'ailleurs, je ne me souviens pas si je l'ai aperçu dans le cours (par contre me souviens bien que les formes */%// ont été mentionnées.) Si c'est le cas, ce sera un exemple de la critique de la dépêche indiquant qu'on ne trouve pas des choses spécifiques aux versions 4 et 5 (tout le cours devrait pouvoir se dérouler avec bash 2 je pense, mais bash 3 pour sûr)

              “It is seldom that liberty of any kind is lost all at once.” ― David Hume

              • [^] # Re: Merci à Monsieur Sanchis

                Posté par  . Évalué à 2.

                tout le cours devrait pouvoir se dérouler avec bash 2 je pense, mais bash 3 pour sûr

                Pourquoi devrait ? Il fait son cours comme il veut et décrit que c'est prévu pour bash 5.1. Et la dépêche dit "Bash 5 : une introduction"

                Où est-ce qu'on trouve encore bash 2 et 3 ? Bash 3 sur les bsd qui fuient la GPLv3 pour le base system ? Ils n'ont pas switché sur dash ou zsh ?

                https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

                • [^] # Re: Merci à Monsieur Sanchis

                  Posté par  (site web personnel, Mastodon) . Évalué à 1.

                  J'écrivais « devrait pouvoir » au sens de ce qui est garanti. Et mon propos est qu'on a bien la base (normal pour une introduction) mais rien qui soit spécifique aux dernières versions. En ce sens, le cours n'est pas prévu pour bash 5.1 mais juste que tout a été testé avec cette version. Je confirme donc, après lecture attentive du cours, qu'il ne faut pas avoir peur d'utiliser ce matériel si on n'a pas spécifiquement la version 5.1 (et c'est un plus/avantage pour un cours introductif.)

                  “It is seldom that liberty of any kind is lost all at once.” ― David Hume

            • [^] # Re: Merci à Monsieur Sanchis

              Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 07 août 2022 à 12:55.

              Attention que ce n'est pas exactement la même méthode : En mode POSIX (portable) on passe par une autre commande, tr, mais avec bash il y a des mécanismes d'expansion de variable qui font directement le boulot. L'approche de ksh n'est pas au niveau de la manipulation explicite de la variable (c'est ce que j'entendais par le fait qu'il faudra toujours refaire la manip, donc d'écrire par exemple {site^} et pas juste {site}… —je ne mets pas les dollars devant ça mathjax malgré les backticks) alors que ksh encode cela dans la déclaration même (basiquement typeset est équivalent à declare mais c'est vrai que c'est moins propre que l'approche de bash car si on est puriste on remarque qu'on mélange traitement et typage en quelque sorte —cette contorsion se justifie par le fait qu'il y a un type lowercase au même titre que integer, et que ce type inclue/implique le traitement automatique à l'initialisation de ton objet si je peux me permettre cette analogie.)

              “It is seldom that liberty of any kind is lost all at once.” ― David Hume

              • [^] # Re: Merci à Monsieur Sanchis

                Posté par  . Évalué à 2.

                L'approche de ksh n'est pas au niveau de la manipulation explicite de la variable (c'est ce que j'entendais par le fait qu'il faudra toujours refaire la manip

                Et cette approche fonctionne dans bash4. Tu peux utiliser typeset pour définir une variable lower case.

                Je vois pas quand c'est une bonne idée, mais tu peux.

                https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

                • [^] # Re: Merci à Monsieur Sanchis

                  Posté par  (site web personnel, Mastodon) . Évalué à 4.

                  Possible que ça marche aussi et que ce soit signalé dans le manuel avancé

                  $ help typeset
                  typeset: typeset [-afFirtx] [-p] name[=value] ...
                      Obsolete.  See `declare'.
                  $ help declare
                  declare: declare [-afFirtx] [-p] [name[=value] ...]
                      Declare variables and/or give them attributes.  If no NAMEs are
                      given, then display the values of variables instead.  The -p option
                      will display the attributes and values of each NAME.
                  
                      The flags are:
                  
                        -a    to make NAMEs arrays (if supported)
                        -f    to select from among function names only
                        -F    to display function names (and line number and source file name if
                          debugging) without definitions
                        -i    to make NAMEs have the `integer' attribute
                        -r    to make NAMEs readonly
                        -t    to make NAMEs have the `trace' attribute
                        -x    to make NAMEs export
                  
                      Variables with the integer attribute have arithmetic evaluation (see
                      `let') done when the variable is assigned to.
                  
                      When displaying values of variables, -f displays a function's name
                      and definition.  The -F option restricts the display to function
                      name only.
                  
                      Using `+' instead of `-' turns off the given attribute instead.  When
                      used in a function, makes NAMEs local, as with the `local' command.

                  Comme je disais, bonne ou mauvaise idée dépend des goûts de chacun, mais c'est juste que les approches sont différentes. Le plus vieux a des « déclarations » étendues pour répondre à certains usages courants. Le plus jeune distingue les déclarations et les « traitements » et ça fait plus propre pour beaucoup de gens aujourd'hui. Juste deux approches différentes qui réflètent aussi des époques différentes.

                  “It is seldom that liberty of any kind is lost all at once.” ― David Hume

                  • [^] # Re: Merci à Monsieur Sanchis

                    Posté par  . Évalué à 2.

                    Je sais pas sur quelle version tu as essayé sur 4.1 :

                    root@Workstation:/# bash --version
                    GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
                    Copyright (C) 2009 Free Software Foundation, Inc.
                    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
                    
                    This is free software; you are free to change and redistribute it.
                    There is NO WARRANTY, to the extent permitted by law.
                    root@Workstation:/# help typeset
                    typeset: typeset [-aAfFilrtux] [-p] name[=value] ...
                        Set variable values and attributes.
                    
                        Obsolete.  See `help declare'.
                    root@Workstation:/# help declare
                    declare: declare [-aAfFilrtux] [-p] [name[=value] ...]
                        Set variable values and attributes.
                    
                        Declare variables and give them attributes.  If no NAMEs are given,
                        display the attributes and values of all variables.
                    
                        Options:
                          -f    restrict action or display to function names and definitions
                          -F    restrict display to function names only (plus line number and
                            source file when debugging)
                          -p    display the attributes and value of each NAME
                    
                        Options which set attributes:
                          -a    to make NAMEs indexed arrays (if supported)
                          -A    to make NAMEs associative arrays (if supported)
                          -i    to make NAMEs have the `integer' attribute
                          -l    to convert NAMEs to lower case on assignment
                          -r    to make NAMEs readonly
                          -t    to make NAMEs have the `trace' attribute
                          -u    to convert NAMEs to upper case on assignment
                          -x    to make NAMEs export
                    
                        Using `+' instead of `-' turns off the given attribute.
                    
                        Variables with the integer attribute have arithmetic evaluation (see
                        the `let' command) performed when the variable is assigned a value.
                    
                        When used in a function, `declare' makes NAMEs local, as with the `local'
                        command.
                    
                        Exit Status:
                        Returns success unless an invalid option is supplied or an error occurs.
                    

                    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

                    • [^] # Re: Merci à Monsieur Sanchis

                      Posté par  (site web personnel, Mastodon) . Évalué à 2.

                      Ah d'accord… Du 3.2 sur la machine où j'écris présentement

                      $ ksh --version
                        version         sh (AT&T Research) 93u+ 2012-08-01
                      $ bash --version
                      GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)
                      Copyright (C) 2007 Free Software Foundation, Inc.

                      J'ai aussi du 3.x sur certains serveurs Solaris au taf (machines où il y a des scripts ksh qui ne passent dans dans bash mais que personne n'a jamais eu le temps de porter) ; et du 2.1 ou 2.2 sur le SCO d'un client

                      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

                      • [^] # Re: Merci à Monsieur Sanchis

                        Posté par  . Évalué à 2. Dernière modification le 17 août 2022 à 08:25.

                        Comme je disais c'est arrivé avec la version 4.

                        https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # x=coucou y=bonjour

    Posté par  . Évalué à 5.

    Ça fait des années que j'utilise bash, et rien qu'avec cette dépêche j’apprends qu'on peut déclarer des variables sur la même ligne sans les séparer par un point-virgule…

    Il faut vraiment que je lise ce cours.

    • [^] # Re: x=coucou y=bonjour

      Posté par  (site web personnel) . Évalué à 8. Dernière modification le 06 août 2022 à 14:04.

      Je ne veux t'affoler mais ça fait des années que j'utilise un noyau Linux et j'en ignore une grande partie des fonctionnalités et du fonctionnement. Un peu comme la glibc, gcc, ssh, GIMP ou wireshark. Sans même parler de Linuxfr.org ;-).

    • [^] # Re: x=coucou y=bonjour

      Posté par  . Évalué à 3.

      Bonjour

      … on peut déclarer des variables sur la même ligne sans les séparer par un point-virgule…

      J'utilise aussi cette méthode quand, entre autres, j'ai un doute au sujet d'une éventuelle erreur d'interprétation ou de traduction dans certains manuels, et dans ces cas là, je fais précéder la commande man de : LANG=C

      Par exemple pour visualiser la version originale (non traduite) du manuel de l'interpréteur de commandes bash

      LANG=C man bash
      

      ou bien, pour visualiser une version non traduite du message d'erreur retourné par une ligne de commande :

      LANG=C tar -cf monFich
      
  • # Lien

    Posté par  . Évalué à 2. Dernière modification le 06 août 2022 à 22:29.

    Le lien dans « Aller plus loin » ne fonctionne pas chez moi. La redirection https → http ne semble pas autorisé par mon navigateur. Je ne sais pas si c'est une configuration chez moi ou si c'est classique.

    Après nouveau test ça fonctionne. Peut être que c'était juste un problème transitoire.

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

    • [^] # Re: Lien

      Posté par  . Évalué à 3.

      J'ai aussi un problème de redirection quand je suis en navigation privée.

  • # t d m

    Posté par  (site web personnel, Mastodon) . Évalué à 2.

    Je viens de me rendre compte qu'il n'y a pas de sommaire à la dépêche. À quoi est-ce du ?

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.