Journal lns: ln -s pour les étourdis

Posté par . Licence CC by-sa
21
16
avr.
2015

Bonjour à toutes et à tous,

encore un journal ennuyeux, alors lisez vraiment si vous n'avez que ça à faire, ou si vous avez une montagne de choses à faire mais que vous avez quand même du temps à perdre.

Une question pour commencer. Fermez vos terminaux, rangez vos documents. Vous, là-bas, éteignez votre téléphone s'il vous plaît. Ne trichez pas !

Bien. Quelle est la bonne commande pour créer un lien symbolique de nom $lien qui pointe vers $cible ? (plusieurs réponses possibles, sauf 1 et 2 qui ne peuvent pas être choisies en même temps bien sûr)

  1. ln -s $lien $cible
  2. ln -s $cible $lien
  3. J'écris mes liens symboliques avec dd
  4. C'est quoi un lien symbolique ?
  5. C'est quoi une commande ?

Si vous avez répondu 1 sans hésitation (ou avec, en fait, ou si vous avez répondu 2 sans en être sûr-e), alors il se peut que la suite vous apporte tout le bonheur du monde si vous avez parfois besoin de créer un lien symbolique. Dans les autres cas, en particulier si vous avez répondu 2, 4 ou 5 sans hésiter, ce qui suit ne vous concerne pas. Celles et ceux qui ont répondu 3 sont prié-e-s de ne pas faire les pitres pendant le journal, ils/elles discuteront à la fin. Merci d'avance.

Une commande ln -s chez moi est souvent suivie d'un rm, puis d'un autre ln -s tout à fait similaire au premier, mais avec les paramètres inversés. La dernière fois, c'était il y a 10 minutes. Ça ne voudra pas rentrer dans ma tête.

Alors ci-après une petite fonction shell à mettre dans votre ~/.bash_aliases ou dans votre ~/.bashrc (ou tout autre ~/.trucrc) qui a le même effet, mais qui ne nécessite qu'une seule commande et qui ne demande pas de réflexion sur l'ordre des paramètres :

lns() {
        # lns: ln -s for absent-minded people, English edition
        # Under the WTFPL license

        if [ "$#" -ne 2 ]; then
                echo 'lns expects two parameters: the name of the link, and the pointed object, in any order.'
                echo 'lns calls ln -s $target $linkname.'
                echo 'The pointed object must exist, and should be an absolute path, unless you know what you are doing.'
        else
                if [ -e "$1" ]; then
                        target=$1
                        linkName=$2
                elif [ -e "$2" ]; then
                        target=$2
                        linkName=$1
                else
                        echo "None of the parameters reference an existing object."
                        return
                fi

                ln -s "$target" "$linkName"
        fi
}

La même fonction, mais qui parle en français, parce qu'il ne faut pas déconner, ici on est dans un domaine francophone :

lns() {
        # lns: ln -s pour les étourdis, édition française
        # Sous licence LPRAB

        if [ "$#" -ne 2 ]; then
                echo 'lns attend deux paramètres : le nom du lien $nomLien et l’objet ciblé $objectCible, dans n’importe quel ordre.'
                echo 'lns appelle ln -s $objectCible $nomLien.'
                echo 'L’objet ciblé doit exister et doit être un chemin absolu, sauf si vous savez ce que vous faites.'
        else
                if [ -e "$1" ]; then
                        cible=$1
                        nomLien=$2
                elif [ -e "$2" ]; then
                        cible=$2
                        nomLien=$1
                else
                        echo 'Aucun des arguments ne fait référence à un objet qui existe.'
                        return
                fi

                ln -s "$cible" "$nomLien"
        fi
}

C'est loin d'être nouveau et je n'ai pas inventé l'eau chaude, mais ça peut servir.

Allez, pour vous, un exemple d'utilisation simple :

/tmp/testslns $ touch existing    # on crée un fichier vers lequel on va créer un lien
/tmp/testslns $ rm -rf link       # on s'assure que le lien qu'on va créer n'existe pas
/tmp/testslns $ lns /tmp/testslns/existing link 
/tmp/testslns $ ls -l
total 0
-rw-rw-r-- 1 raph raph 0 avril 16 10:43 existing
lrwxrwxrwx 1 raph raph 8 avril 16 10:44 link -> existing

L'exemple symétrique (puisque toute la subtilité de lns réside là dedans !) :

/tmp/testslns $ touch existing    # on crée un fichier vers lequel on va créer un lien
/tmp/testslns $ rm -rf link       # on s'assure que le lien qu'on va créer n'existe pas
/tmp/testslns $ lns link /tmp/testslns/existing 
/tmp/testslns $ ls -l
total 0
-rw-rw-r-- 1 raph raph 0 avril 16 10:44 existing
lrwxrwxrwx 1 raph raph 8 avril 16 10:45 link -> existing

Il ne reste plus qu'à ne pas oublier d'utiliser lns à la place de ln -s

Si ça ne fonctionne pas pour vous, vous n'avez qu'à apprendre à vous servir de la ligne de commande sur OpenClassrooms, ce n'est pas bien compliqué.

À plus !

  • # cp

    Posté par . Évalué à 10.

    Il faut juste penser que l'ordre des arguments de ln est le même que cp (mais au lieu de faire une copie on fait un lien). Et ça devient tout de suite plus logique…

    • [^] # Re: cp

      Posté par . Évalué à 5.

      En plus, c'est assez logique : [cp|mv|ln -s] source destination.

      • [^] # Re: cp

        Posté par . Évalué à 8.

        Pas tant que ça, parce que « cp » et « mv » peuvent attendre un nombre arbitraire (supérieur à zéro) de fichiers sources, pourvu que le dernier soit un répertoire, ce qui n'est pas valable pour « ln ».

        En plus, nombreux sont les cas ou la destination précède la source : la création d'une archive par exemple (*.tar ou autre) et tous les cas où l'on utilise une lvalue avant un « = », en particulier avec les alias du shell.

        • [^] # Re: cp

          Posté par . Évalué à 5.

          ln prends aussi un nombre variable de paramètre 1 ou 2 (sans compter le -s)

          comme ça ln -s /tmp/plop créera un lien symbolique plop dans le répertoire courant. Vu que je m'en sert assez souvent, c'est facile à retenir.

          Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: cp

          Posté par . Évalué à 5.

          Pas tant que ça, parce que « cp » et « mv » peuvent attendre un nombre arbitraire (supérieur à zéro) de fichiers sources, pourvu que le dernier soit un répertoire, ce qui n'est pas valable pour « ln ».

          T’as rêvé ça où ?

          ln -s * rep/ fonctionne très bien, merci.

          • [^] # Re: cp

            Posté par . Évalué à 2.

            Effectivement, j'ai posté trop vite. Ça me paraissait évident quand j'ai posté alors que dans le contexte, j'aurais pu tout-à-fait le faire aussi… :-\

            Méa culpa donc, mais attention quand même à la façon de spécifier les arguments. Autant « cd rep ; ln ../* . » donne de bons résultats, autant « ln -s * rep/ » me produit des liens symboliques qui s'auto-référencent. Sans compter que dans les deux cas, l'un de ces liens concerne le répertoire « rep » lui-même…

            • [^] # Re: cp

              Posté par . Évalué à 3.

              Mon exemple était minimal.

              Avec ln -s orig… dest, les orig… n’ont pas à exister. Les arguments sont utilisés tels quels pour créer les liens. Donc pas de transformation de la forme relative en forme absolue, pas de transformation de la forme relative pour que les liens pointent vers les fichiers listés.

              Pour ne pas se tromper avec ln -s :
              — soit on s’arrange pour que la destination soit le répertoire courant . et donc on est obligé d’exprimer les fichiers (contenus des liens) sous une forme relative correcte (cd machin ; ln -s ../blabla/* .),
              — soit on les exprime sous une forme absolue (ln -s /truc/blabla/* rep/).

              Pour le troisième cas, quand on exprime les arguments sous forme relative et que la destination n’est pas ., les arguments ne sont pas des chemins vers des fichiers réels mais les chemins vers ces fichiers si l’on était dans le répertoire de destination. P.ex., si on veut que ./rep/toto pointe vers ./truc/toto, il faut faire ln -s ../truc/toto rep/ et, dans ce cas, l’argument ../truc/toto n’est pas un chemin valide dans ., c’est un chemin valide dans ./rep/. Et ça, c’est chianf parce qu’on n’a pas le complétement automatique…

        • [^] # Re: cp

          Posté par (page perso) . Évalué à 1.

          Pas tant que ça, parce que « cp » et « mv » peuvent attendre un nombre arbitraire (supérieur à zéro) de fichiers sources, pourvu que le dernier soit un répertoire

          Damned ! Je suis un noob ! Merci d'avoir comblé mon ignorance.

          J'avais jamais pensé à lire le man de cp et mv. Oh la claque !

          • [^] # Re: cp

            Posté par . Évalué à 2.

            Hmm. En fait, c'est moi le noob, visiblement. Sylvain a raison (juste au dessus), la commande « ln » peut elle aussi prendre n arguments. Par contre, attention à la façon dont on les spécifie.

      • [^] # Re: cp

        Posté par (page perso) . Évalué à 7. Dernière modification le 16/04/15 à 14:16.

        C'est logique sur le papier, mais il faut que ce soit logique avec l'état mental de l'utilisateur.

        Avec cp ou mv, on pense que l'on a A qui doit devenir B, c'est une transformation, et la syntaxe est naturelle. D'ailleurs, copier ou bouger sont des verbes pour déplacer A en B.

        Avec ln, je pense que je vais créer un lien symbolique A pointant vers B. C'est exactement ce qui se passe, mais la commande attend les arguments dans l'ordre de cp et mv.

        Néanmoins, tu peux te passer de la commande ls grâce à la commande cp -l/cp -s, qui fait exactement ça.

        • [^] # Re: cp

          Posté par . Évalué à 2.

          Néanmoins, tu peux te passer de la commande ls grâce à la commande cp -l/cp -s, qui fait exactement ça.

          Super. Merci, je connaissais pas.

          • [^] # Re: cp

            Posté par . Évalué à 3.

            Juste FYI, ces options n'existent pas dans le cp BSD.

            Depending on the time of day, the French go either way.

    • [^] # Re: cp

      Posté par . Évalué à 5.

      C'est bien une reponse d'ingenieur ca.
      Oui, techniquement, t'as raison.

      En pratique, le model mental est inverse: tu copies quelque chose vers quelque chose d'autres (donc cp a b), mais tu fait un lien de quelque chose vers autres chose (donc ln b a). C'est un peu le concept du lien.
      Ca se reflete bien dans tous le systeme, avec par exemple un ls -l qui t'affiche b -> a.

      Le fait que 99% des gens (sondage institut odoimouyé) se gourre une fois sur deux sur l'ordre des parametres de ln mais ne se gourre absolument jamais sur cp ou mv devrait etre un signal assez fort.

      Linuxfr, le portail francais du logiciel libre et du neo nazisme.

  • # cp et mv

    Posté par (page perso) . Évalué à 8.

    Du coup, tu t'es fait un script pour cp et mv aussi ? Bon là c'est plus compliqué parce-qu'ils écrasent directement la destination.

    Je comprends pas pourquoi beaucoup de gens se trompent sur ln. C'est pareil que cp et mv, y a 0 piège.

    • [^] # Re: cp et mv

      Posté par . Évalué à 10.

      À la réflexion, je pense que le problème vient de la dénomination « source » et « cible ».

      C'est clair pour une copie :
      - la source est le fichier à copier
      - la cible est le fichier créé

      Dans le cas d'un lien symbolique, tu appelles « cible » du lien le fichier vers lequel il pointe. Mais la cible de la commande ln, c'est le lien à créer. Donc si tu penses « je mets la cible en dernier argument » tu peux te planter.

      Il faut simplement penser qu'on fait une copie au lieu d'un lien, ou que le dernier argument est ce que tu veux créer (ou écraser).

    • [^] # Re: cp et mv

      Posté par . Évalué à 4.

      Je fais moi aussi souvent la confusion, sans avoir de problème avec cp. La raison me semble en fait assez naturelle: "cp a b", je pense "copie a vers b"; "ln -s a b", je pense "crée un lien a vers b", dans le sens "un lien nommé a qui pointe vers b", alors qu'il faudrait voir ça comme "crée un lien sur a nommé b".

      • [^] # Re: cp et mv

        Posté par . Évalué à 4.

        Oui, c'est exactement ça. Maintenant, avec vos commentaires, je devrais m'en souvenir. Effectivement, c'est logique. Ça servira peut-être à ceux qui continueront à faire la confusion.

        Enfin, je me dis ça à chaque fois… mais à chaque fois les deux raisonnements me viennent et ça casse tout. Et je ne me sers pas assez de ln -s pour en avoir l'habitude. Dans l'aide de lns, l'utilisation de ln -s est donnée, ça peut servir aussi. De toute façon, ça paraît absurde de s'habituer à une commande telle que lns présente nulle part, et la dernière ligne du journal invite de façon déguisée les gens comme moi à apprendre à se servir de la ligne de commande ;-). Il faut savoir utiliser ln -s, point barre, c'est basique.

        Évidement, avec cp ou mv, je ne fais pas la confusion, ça me paraît naturel. Mais ça pourrait être intéressant d'avoir par défaut une demande de confirmation quand on essaie d'écraser la destination. Mais pareil, s'habituer à recevoir des demandes de confirmation alors que c'est le cas nulle-part, c'est dangereux, donc non pour moi.

  • # C'est vrai

    Posté par (page perso) . Évalué à 5.

    J'avoue que je me trompe tout le temps aussi :-(

    l'azerty est ce que subversion est aux SCMs

    • [^] # Re: C'est vrai

      Posté par (page perso) . Évalué à 5.

      Il suffit d'adopter ma technique, je fais man ln, puis ln /o\

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # Avec un seul argument sinon...

    Posté par . Évalué à 9.

    Ou sinon il suffit de se rappeler que
    ln -s /tmp/toto
    Créé un lien nommé toto vers /tmp/toto dans le répertoire courant.

  • # mon pote Hervé

    Posté par (page perso) . Évalué à 10.

    on m'a expliqué que c'est "réél vers virtuel", donc R V

    If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

  • # .

    Posté par (page perso) . Évalué à 8.

    T'as écrit ce texte avec le revolver d'une Femen sur la tempe, pour l'« agrémenter » d'agressions visuelles du genre prié-e-s ?

    • [^] # Re: .

      Posté par . Évalué à -9.

      C'est ce qui arrive quand on souhaite s'adresser à la population entière, et que l'on n'a pas envie d'en mettre une partie entre parenthèses. C'est une forme que l'on rencontre de plus en plus ;-)

      • [^] # Re: .

        Posté par (page perso) . Évalué à 10.

        Pourtant d'après les règles de français en vigueur, ne pas mentionné le "e" pour un pluriels mixtes ne met pas à l'écart les personnes habituellement concernées par le "e".
        En plus, cette nomenclature est moche.

        • [^] # Re: .

          Posté par . Évalué à 2.

          C'est un choix de rédaction que j'ai fait et je suis conscient que le neutre du français est le masculin.

          Il n'empêche que l'on trouve «~ Bonjour à toutes et à tous~ », «~ Chères concitoyennes, chers concitoyens~ » et d'autres formules de ce genre. Pourtant, d'après la grammaire française, ce n'est absolument pas nécessaire non plus il me semble. Pour moi, ça s'inscrit dans le même esprit.

          On ne tombera probablement pas d'accord là dessus. Mais moi, ça me fait bizarre de n'utiliser que le masculin, alors je préfère ne pas le faire. Le fait que ce soit « moche » est une question de goût et d'habitudes je suppose. Il m'arrive de temps en temps de m'apercevoir que les gens qui écrivent sur Internet dans le domaine de l'informatique n'ont que la gente masculine à l'esprit (en anglais également), et ça me met mal à l'aise, alors tant que c'est un problème, je préfère inclure explicitement. Voilà mes raisons, je suis conscient que beaucoup le monde ne sera pas d'accord avec ça et il se peut que je change moi-même d'avis là dessus dans le futur ;-).

          • [^] # Re: .

            Posté par (page perso) . Évalué à 8.

            Je peux comprendre ta motivation, c'est ta justification précédente qui ne m'avait pas convaincu, à savoir la partie que tu t'adresses à tout le monde et tu ne veux mettre personne de côté ce qui sous-entend que ceux qui ne suivent pas ton exemple font une séparation qui en réalité n'existe pas.

            Il n'empêche que l'on trouve «~ Bonjour à toutes et à tous~ », «~ Chères concitoyennes, chers concitoyens~ » et d'autres formules de ce genre. Pourtant, d'après la grammaire française, ce n'est absolument pas nécessaire non plus il me semble. Pour moi, ça s'inscrit dans le même esprit.

            Ce sont des formules de politesses, que tu dis une fois ou deux dans un document et c'est tout. De la même façon que tu trouves des "M. Le Président de la République", des "Messieurs les députés" ou autres qui sont dans le même esprit alors qu'ils ne sont pas strictement nécessaires non plus. Là tu parles d'une syntaxe que tu seras amené à répéter potentiellement des dizaines voire des centaines/milliers de fois dans tes écrits, c'est bien plus lourd que ce soit en rédaction comme en lecture que ces formules de politesses.

            • [^] # Re: .

              Posté par . Évalué à 4. Dernière modification le 16/04/15 à 13:10.

              Effectivement, c'est ce qui pourrait me faire changer d'avis sur la question.

              Mea culpa, j'ai été maladroit dans ma réponse. Je me suis senti un peu titillé par la réponse de Sufflope qui m'a mis en position de défense, alors qu'il n'y avait peut-être pas lieu d'être ;-).

          • [^] # Re: .

            Posté par (page perso) . Évalué à 9.

            La forme « Bonjour à tous » comme la forme « Bonjour à toutes et à tous » sont prononçable (et aucune des deux formes n’exclue la population féminine), alors que la forme « Bonjour à tou-te-s » n’est pas prononçable (et n’apporte rien de plus aux femmes).

            Personnellement, je préfère employer une langue prononçable, c’est vraiment pratique dans la vie.

            De plus, la formes « prié-e-s » est une syntaxe de préprocession, elle oblige le lecteur à faire un travail d’interprétation syntaxique à la lecture, ce qui est pénible et fatiguant, et distrait le lecteur du travail d’interprétation sémantique et de son appréciation du style.

            Personnellement, lorsque j’écris, je fais l’effort de rendre le texte lisible directement par mon lecteur, pas dans une forme qui ne sera lisible qu’après que mon lecteur l’ai soumis à un préprocesseur.

            Il est important qu’une langue soit écrite telle qu’elle est lue, et quelle soit écrite telle qu’elle est prononcée, et il est important de permettre au lecteur de pouvoir concentrer son attention sur l’interprétation sémantique et l’appréciation du style (c’est important, la beauté du verbe) et de ne pas donc pas détourner son attention sur l’analyse de parasites syntaxiques.

            ce commentaire est sous licence cc by 4 et précédentes

            • [^] # Re: .

              Posté par . Évalué à -1. Dernière modification le 16/04/15 à 22:14.

              Ok, je comprends le point de vue qui est intéressant, notamment je n'avais pas pensé au fait que ça puisse ralentir le lecteur.

              À noter quand même qu'une quantité de choses à l'écrit ne se prononcent pas à l'oral en français, à commencer par les 's' de pluriel (sauf certaines liaisons) et pas mal de 'e' du féminin, notamment, et ne sont que des éléments syntaxiques à interpréter. Peut-être le plus spectaculaire étant le "ent" de la troisième personne du pluriel. Au contraire du latin, de l'allemand, de l'espagnol, et peut-être dans une moindre mesure de l'anglais par exemple, où presque tout se prononce.

              Et je prononce "prié-e-s" tout à fait comme "priés", et "sûr-e" comme "sûr", ça reste prononçable.

              Après, pour ce qui concerne ce fil de discussion : je suis vraiment désolé d'avoir déclenché ça, ce n'était ni le but du journal, ni son sujet. Je ne pensais pas que ça pouvait ne serait-ce que susciter une réaction dans les commentaires. Je suis loin d'être l'inventeur du procédé aussi et c'est bon, il n'y a que deux occurrences dans le journal, j'espère que ça ne suffit pas à rendre la lecture pénible. (à noter que je n'ai pas utilisé la forme "Bonjour à tou-te-s" qui n'est effectivement pas vraiment prononçable).

              Par contre, ce que je ne comprends pas bien, c'est d'avoir été moinsé à fond plus haut sur une réponse passablement désagréable(*) à un commentaire carrément misogyne (je suis le seul à penser ça ? pourquoi tant de monde l'a plussé ?) et totalement déplacé de Sufflope qui n'a retenu que ces deux bizarreries de mon journal certes manquant un peu de fond, je le reconnais. Je suis tout à fait ouvert aux critiques sur cet élément spécifique de mon journal et conçois tout à fait que ce soit critiquable, ça passe juste mieux quand c'est moins provocant. D'ailleurs, le reste des messages est tout à fait courtois.

              (*) dans laquelle je n'ai jamais affirmé que vous oubliez systématiquement les femmes si vous ne faites pas comme moi, je préfère repréciser.

              • [^] # Re: .

                Posté par (page perso) . Évalué à 2.

                à un commentaire carrément misogyne (je suis le seul à penser ça ? pourquoi tant de monde l'a plussé ?)

                Peut-être qu’on a encore le droit de ne pas avoir de problème avec la gent féminine en général et en même temps de ne pas être à l’aise avec les femen ? :p

                Et en fait il a été violemment moinssé aussi, c’est juste qu’il y a eu plus de plussage que de moinssage, ce qui arrive avec des commentaires corrosifs, parce qu’autant le fond que la forme permettent les avis partagés. :-)

                ce commentaire est sous licence cc by 4 et précédentes

                • [^] # Re: .

                  Posté par . Évalué à 0. Dernière modification le 17/04/15 à 00:19.

                  à un commentaire carrément misogyne (je suis le seul à penser ça ? pourquoi tant de monde l'a plussé ?)

                  Peut-être qu’on a encore le droit de ne pas avoir de problème avec la gent féminine en général et en même temps de ne pas être à l’aise avec les femen ? :p

                  Totalement :-)

                  Cependant, il me semble qu'il ne s'agit pas de ça. Je ne connais pas du tout les femen, il s'agit à première vue d'un groupe de féministes.

                  Soit elles sont effectivement extrémistes, et là bien sûr on peut être mal à l'aise à cause du côté extrémiste sans avoir de problème avec la gente féminine, mais du coup inclure ces formes "originales" dans mon journal est forcément une œuvre extrémiste, ce qui peut être insultant pour les femmes selon les interprétations, en tout cas pour moi.

                  Soit les femen ne sont pas extrémistes, et là c'est doublement misogyne, parce qu'on est dans le même cas mais qu'en plus on suppose un groupe féministe extrémiste (on peut tout à fait être mal à l'aise avec le féminisme en général sans être misogyne, je peux concevoir et à vrai dire ce n'est pas trop mes oignons)

                  J'ai relevé le ton ironique du commentaire de Sufflope, pas de soucis, mais ça ne passe pas ici, désolé ;-)

            • [^] # Re: .

              Posté par (page perso) . Évalué à 1.

              [ … ] et quelle soit écrite telle qu’elle est prononcée [ … ]

              Je veux pas polémiquer, mais sur ce point, le français c'est pas vraiment ça.

              "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

            • [^] # Re: .

              Posté par . Évalué à 3.

              (c’est important, la beauté du verbe) et de ne pas donc pas détourner son attention

              Ouais, c'est important la beauté du verbe.

              • [^] # Re: .

                Posté par . Évalué à 4.

                En effet, une faute involontaire peut parfois être gênante à lire, encore qu'en l'occurrence et dans mon cas, j'ai fait la correction machinalement à la lecture sans même m'en rendre compte ni que cela me ralentisse (c'est typiquement le genre de fautes que je ne décèle parfois même pas).

                Alors qu'en plus d'être gênante, car ne pouvant être prononcée et nécessitant plusieurs lectures, une formulation volontairement sexualisée (qui introduit une discrimination plus que de la neutralité) ne bénéficie d'aucun réflexe d'autocorrection à la volée, et est de surcroît appelée à être rencontrée partout dans le texte. Bref, l'horreur… Personnellement, j'arrête bien souvent la lecture tant cela en devient désagréable.

                Faire des fautes, cela arrive, à moi le premier, surtout en rédigeant rapidement un commentaire sur Internet, où il est possible d'abuser de la facilité de reconstruire ses phrases à la volée, en oubliant parfois de se relire ensuite. Il n'en reste pas moins que ces fautes sont involontaires.

                D'autant que voir apparaître les mêmes justifications à cette forme dénaturée que celles qui sont employées de longue date par les adeptes du langage SMS ou autres « dyslexiques revendiqués » du Net, afin d'imposer aux autres la gêne que représente la lecture de leur prose volontairement difficilement compréhensible, je trouve que cela n'améliore en rien la crédibilité de la chose.

              • [^] # Re: .

                Posté par (page perso) . Évalué à 2. Dernière modification le 17/04/15 à 22:35.

                C’est pour montrer à quel point une irrégularité peut perturber la lecture. :p

                …et ça fait partie du rite de faire des fautes quand on fait la morale sur un point de langage ! ;-)

                ce commentaire est sous licence cc by 4 et précédentes

        • [^] # Re: .

          Posté par . Évalué à 6.

          Le français étant une langue vivante, rien n'empêche ses locuteurs de la faire évoluer.

          Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

          • [^] # Re: .

            Posté par (page perso) . Évalué à 4.

            Le français étant une langue vivante, rien n'empêche ses locuteurs de la faire évoluer.

            En effet, rien n’empêche de faire évoluer la langue, mais l’évolution proposée est une évolution qui ne fonctionne qu’à l’écrit, c’est à dire lorsque le texte est figé donc mort, et qu’il n’est pas prononcé par la langue. Pour une langue vivante, ça la fout mal.

            ce commentaire est sous licence cc by 4 et précédentes

            • [^] # Re: .

              Posté par . Évalué à 4.

              Je suis dans un pays où "tv:n" est un mot communément admis à l'écrit sans aucun problème. Ça n'empêche pas de le prononcer. Tout comme il est parfaitement acceptable d'écrire Gal de Gaulle, ou Dr Curie, sans prononcer "gal" de Gaulle ou "dr" Curie. L'écrit et l'oral d'un texte peuvent être différents.

              Je ne vois pas ce qui empêche de formuler l'idée présente dans le texte écrit comme cela. En tout cas pas moins que la présence de guillemets, de parenthèses, de points de suspensions, …

              Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

              • [^] # Re: .

                Posté par . Évalué à 1.

                "tv:n", ça désigne quoi ?

                • [^] # Re: .

                  Posté par . Évalué à 3.

                  "La tv". Le "n" est là pour transformer un mot de la forme indéterminée à la forme déterminée :

                  en tv -> une tv, en citron -> un citron
                  tv:n -> la tv, citronen -> le citron

                  Ça c'est pour les mots dont le genre est "en", parce qu'il y a aussi les mots dont le genre est "ett", là il faut rajouter "et", par exemple ett barn -> barnet (un enfant -> l'enfant)
                  C'est du suédois, et je suis plutôt mauvais en suédois ;-) (faut dire qu'ils ne font aucun effort pour m'obliger à l'apprendre, ils parlent tous anglais)

                  Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

                  • [^] # Re: .

                    Posté par . Évalué à 0.

                    ok, merci :-)

                • [^] # Re: .

                  Posté par . Évalué à 1.

                  Ceci dit, "tv" se prononce "tévé". Du coup, "tv:n", ça fait "tévéne", ça reste quand même très prononçable.

  • # qui ne demande pas de réflexion ...

    Posté par . Évalué à 3.

    Suis-je le seul qui tique à la lecture de cette phrase ?

    Après on se demande pourquoi on a tant de virus, malware, failles, etc …

    Tout est dans la perte de l'habitude de réfléchir : on se repose sur la machine, et on ne pense pas réellement à ce que l'on fait.

    Personnellement je me suis trouvé longtemps comme l'auteur de ce post, à devoir recréer un lien symbolique parce que je m'étais trompé. J'aurais pu créer un alias de ce genre mais je ne l'ai pas fait car ça m'oblige à faire attention à ce que je fais, et je garde cette habitude.

    Maintenant chacun fait ce qu'il veut.

    • [^] # Re: qui ne demande pas de réflexion ...

      Posté par . Évalué à 2.

      Ou alors, on peut gagner du temps de réflexion sur d'autres choses que la création d'un lien symbolique. De toute façon, il faut vérifier que les choses ont fonctionné comme il faut, et lorsque ce que je fais implique des questions de sécurité ou demande une réflexion qui va plus loin que des problèmes d'ordres de paramètre, je prends le temps de réfléchir. Je ne suis pas sûr qu'il s'agisse de la même situation. De toute façon, j'ai bien plus réfléchi en écrivant ce journal qu'en essayant d'apprendre par cœur l'ordre des paramètres de ln.

      Quoi qu'il en soit, il faut apprendre à utiliser ln -s, lns ou ce genre de chose ne sera pas disponible sur tous les ordinateurs que l'on manipulera, C'est certain.

      Au final, je n'aurais peut-être pas dû publier ce journal, j'ai voulu m'amuser un peu dans le feu de l'action, ce qui est rare. J'espère qu'il aura plût à certaines personnes ;-)

    • [^] # Re: qui ne demande pas de réflexion ...

      Posté par . Évalué à 2.

      Ben, l'attention, on en a une quantité finie sous peine de fatigue intellectuelle. Personnellement, je préfère l'affecter à des trucs plus pertinents que la manpage de ls. C'est de l'automatisation, c'est comme tout le reste. Avec des arguments pareils on en vient à interdire sed s/a/b/g parce que ça oblige à faire attention. Ben moi je focalise mon attention sur les détails non triviaux ;).

      Ça, ce sont les sources. Le mouton que tu veux est dedans.

      • [^] # Re: qui ne demande pas de réflexion ...

        Posté par . Évalué à 2.

        C'est de l'automatisation, c'est comme tout le reste. Avec des arguments pareils on en vient à interdire sed s/a/b/g parce que ça oblige à faire attention.

        L'automatisation, c'est ne pas avoir à taper lns ou ln -s ou n'importe quoi d'autre.

        Avec des arguments pareils on en vient à interdire sed s/a/b/g parce que ça oblige à faire attention.
        Non, ça c'est de l'automatisation. Mais tu es obligé de réfléchir et de te concentrer pour faire les choses correctement (ou tu risques de tout casser).

  • # Problème

    Posté par . Évalué à 10.

    Le problème de ce genre de script, c'est qu'une fois fini de l'écrire, on connait le sujet et on ne se trompe plus.

    Du coup le script ne sert plus à rien !

  • # plus simple

    Posté par . Évalué à 0.

    Pour les étourdis il y a surtout la commande bien plus simple :
    ln -s $cible qui nomme le $lien du même nom que $cible.

  • # Mon moyen a moi

    Posté par . Évalué à 1.

    Je sais pas si c'est ce que veut dire le -s, mais je le prend pour un raccourci pour dire "source". Donc j'indique la source avec le -s et j'indique le nom du raccourci: ln -s .

    Et depuis ce temps la, je ne me trompe plus.

    • [^] # Re: Mon moyen a moi

      Posté par (page perso) . Évalué à 4.

      Je sais pas si c'est ce que veut dire le -s

      Non, ça veut dire “créer un lien symbolique” (soft link). Le comportement par défaut de ln (sans cette option) est de créer un lien physique.

  • # C'est pourtant simple...

    Posté par (page perso) . Évalué à 3. Dernière modification le 16/04/15 à 14:31.

    …c'est l'inverse de mklink… :-)

    C'est sous MS-DOS, pour ceux qui ne connaissent pas. Autant ln -s ne me pose aucun problème (il faut dire que je l'utilise souvent qu'avec un seul argument), autant je suis toujours obligé de m'y reprendre à plusieurs fois avec mklink pour trouver la bonne option à utiliser, bien que j'affiche systématiquement la page d'aide, ne fût-ce que pour retrouver le libellé des options…

    Freelance en ingénierie informatique.

  • # J'ai appris le man ...

    Posté par . Évalué à 3.

    J'ai répété x fois à haute voix

    ln [OPTION]... TARGET... DIRECTORY
    Et maintenant dès que je tape ln je pense TARGET … DIRECTORY
    Bref j'ai appris. Idem pour tar.

    • [^] # Re: J'ai appris le man ...

      Posté par . Évalué à 4.

      A chaque fois que je tape la commande, je repense à la version avec un seul argument, pour créer un équivalent sans nom particulier dans le dossier courant.

      ln -s /target/file

      Donc pour nommer le lien que j'aurais fait avec cette commande, je rajoute le nom différent que j'aurais voulu lui donner :

      ln -s /target/file /tmp/name

      Sans nom, ça met le nom par défaut dans le répertoire indiqué :

      ln -s /target/file /tmp/

      A force… ça fini par rentrer, même quand l'utilisation est espacée dans le temps :-)

  • # Piège

    Posté par . Évalué à 2.

    Que se passe-t-il si tu passes deux fichiers qui existent à ta commande?

    • [^] # Re: Piège

      Posté par . Évalué à 1. Dernière modification le 16/04/15 à 14:50.

      Ça garde l'ordre initial et écrase l'autre fichier (ou te sors une erreur je n'ai jamais testé)

      • [^] # Re: Piège

        Posté par . Évalué à 1.

        Ça dit que la cible existe et ça s'arrête, ln n'écrase pas un fichier qui existe déjà.

        • [^] # Re: Piège

          Posté par . Évalué à 3.

          et tu peux forcer l'écriture :)

          ln -sf /bin/bash /sbin/nologin

          Il ne faut pas décorner les boeufs avant d'avoir semé le vent

          • [^] # Re: Piège

            Posté par . Évalué à 1.

            ça me fait penser qu'il doit se passer des choses bizarres si on fait un truc du genre

            lns -f un_fichier_existant
            

            :-)

  • # Moyen mémo... mnémo... bref technique pour se souvenir

    Posté par . Évalué à 1.

    Ça n'a rien à voir, mais comme je fais quasiment toujours des liens symboliques, un jour j'ai remarqué que -s c'est un peu source, donc ln -s source destination.

    • [^] # Re: Moyen mémo... mnémo... bref technique pour se souvenir

      Posté par (page perso) . Évalué à 3.

      Ça peut être piégeur si un jour tu tombes sur un script (ou un autre extrait de code quelconque, dans une documentation par exemple) qui fait ceci :

      ln cible -s lien

      ou même

      ln cible lien -s

      … ce qui est parfaitement valide avec le ln de GNU.

      Rappel : la plupart des outils GNU n’imposent pas que les options précèdent systématiquement les arguments positionnels, sauf si la variable POSIXLY_CORRECT est définie dans l’environnement.

  • # rm or not rm

    Posté par (page perso) . Évalué à 1. Dernière modification le 16/04/15 à 20:54.

    Une commande ln -s chez moi est souvent suivie d'un rm, puis d'un autre ln -s tout à fait similaire au premier, mais avec les paramètres inversés. La dernière fois, c'était il y a 10 minutes. Ça ne voudra pas rentrer dans ma tête.

    .

    ln -nfs source cible
    Tu viens de gagner un RM =)

    Is it a Bird? Is it a Plane?? No, it's Super Poil !!!

  • # Autre problème de ln -s

    Posté par . Évalué à 3.

    Moi j'ai un autre problème avec les liens symboliques, il concerne la relativité des chemins.

    Par exemple j'ai un fichier toto dans le répertoire courant et je veux faire un lien vers lui depuis un autre endroit :
    ln -s toto /ailleurs/totobis
    Eh bien non, ça ne fonctionne pas comme ça. À la place je peux faire :
    ln -s $PWD/toto /ailleurs/totobis

    C'est d'autant plus facile de se tromper que ln toto /ailleurs/totobis fonctionne évidemment très bien…

    • [^] # Re: Autre problème de ln -s

      Posté par (page perso) . Évalué à 2.

      La contrepartie positive c'est que si dans /base/work/subdir tu fais un lien vers ../topfile (en l'occurence /base/work/topfile), si tu bouges ton répertoire de travail dans /new, ça marche encore puisque le lien est vers ../topfile donc maintenant /new/work/topfile.

      Pour que le cas que tu décris te convienne, il faudrait qu'à la création le lien soit normalisé de ../topfile vers /base/work/subdir et donc après déplacement il serait cassé.

      Je sais pas si l'un des deux cas est plus utile que l'autre mais le fait est qu'un seul des deux peut exister, sauf à rajouter encore une option mais là on est pas sorti des macros pour rendre ln-s utilisable.

  • # Nombre d'arguments

    Posté par (page perso) . Évalué à 2.

    Pour se souvenir de l'ordre des arguments, il suffit de se souvenir qu'on peut omettre le dernier. En toute évidence on ne peut pas omettre la cible du lien, donc celui qu'on peut omettre est le nouveau nom du fichier.

    Sinon, tes scripts sont pas mal du tout, mais juste pour le plaisir je t'encourage à utiliser les notations ${VARIABLE} au lieu de juste $VARIABLE parceque c'est ensuite moins de travail pour utiliser des modificateurs de remplacement :- etc. ou copier la fonction dans un Makefile, et puis ça rend le code un peu plus homogène.

    • [^] # Re: Nombre d'arguments

      Posté par (page perso) . Évalué à 3. Dernière modification le 19/04/15 à 02:06.

      Puisque chacun en est à sa petite anecdote sur comment il s'en sort avec ln -s, moi aussi je veux mes 15 secondes de gloire.

      Quand j'ai installé ma première Debian, j'avais pas d'imprimante. Donc j'avais appris par cœur l'URL et toutes les étapes de la formation Debian antérieures à la récupération d'un accès internet en console. Y compris l'URL de téléchargement du noyau (oui le chemin complet genre http://kernel.org/pub/linux/kernel/v2/2.6/linux-2.6.X.Y.tar.bz2 avec X et Y qui changeaient au grès de mes essais pour passer sous Linux), y compris les make menuconfig etc…

      Et donc l'étape de téléchargement du dernier 2.6 dans /usr/src/ disait de faire un lien symbolique linux vers le linux-2.6.X.Y pour avoir dans /usr/src/linux les sources du noyau courant. Donc j'ai appris par cœur en le récitant mentalement "èlène tiret esse linuxversion linux".

      C'était il y a plus de 10 ans, depuis je suis sous Fedora et je ne compile plus de noyau (y a pas forcément de lien (hahaha blague)). Mais à chaque fois que je dois faire un lien symbolique je répète dans ma tête "èlène tiret esse linuxversion linux" puis je me dis "et forcément linuxversion c'est le fichier effectif puisque je viens de le télécharger". A chaque fois.

      • [^] # Re: Nombre d'arguments

        Posté par (page perso) . Évalué à 2.

        Bon, j'ai foiré mon lien vers la formation et c'est trop tard pour éditer, donc au lieu du lien actuel vous trouverez une erreur 404 une précision comme quoi c'était l'URL de l'époque où elle était sur l'espace perso d'Alexis de Lattre que j'avais mise pour pas passer pour un noob (hé à l'époque je devais passer bf24 au boot pour pas partir sur un 2.2 !).

      • [^] # Re: Nombre d'arguments

        Posté par (page perso) . Évalué à 1. Dernière modification le 19/04/15 à 03:38.

        Quand j'ai installé ma première Debian,[…] http://kernel.org/pub/linux/kernel/v2/2.6/linux-2.6.X.Y.tar.bz2

        Ho le jeunot, ma première Debian était Potato avec un Linux 2.19. La même année (2001 proablement) je suis passé et resté sous FreeBSD! (4.9 à l'époque si je me souviens bien!) :) C'est d'ailleurs cette année là avec ce FreeBSD que je me suis inscrit sous LinuxFR. :D 36-15 MAVIE-EN-3D

Suivre le flux des commentaires

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