Partage
  • Partager sur Facebook
  • Partager sur Twitter

besoin d'aide en script shell

a

    24 mai 2015 à 18:04:34

    Bonjour tt le monde !! Ecrire un script qui donne les droits d'un fichier passé comme paramètre sous la forme suivante:

    ------------------------les droits de test sont -----------------------

                                     read                write              execute
    

    User oui oui non Group oui non non Others oui non non

    Voilà, j'ai pensé en premier temps d'écrire comme ça :

    !/bin/bash

    echo"------------les droits de $1 sont : --------------" ls -l $1

    Mais ça marche pas, je dois avoir presque un tableau avec des ouis et des nons, Aidez-moi , et Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 18:45:42

      Pourquoi ne pas utiliser stat ? Comme ça tu récupère juste le résultat de:

      stat -c %A $1

      Et après le traitement est super simple. Ici non = '-' et oui = tout le reste. ;)

      -
      Edité par Mad scientist 24 mai 2015 à 18:47:09

      • Partager sur Facebook
      • Partager sur Twitter
      Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
        26 mai 2015 à 10:21:43

        Le ls -l te donne bien le droits (tout comme stat) mais il faut les comprendre et les modifier pour obtenir ton tableau.

        Utilisons la commande stat car le résultat est plus concis.

        sur un fichier classique tu obtiendra peut être un résultat tel que celui ci : -rw-rw-r--

        chaque caractère est important. Le 1er signifie le type de fichier ("-"=fichier, "d"=répertoire, ...)

        Les 3 suivants représente les droits du propriétaire (Read, Write, eXecute), les 3 encore après les droits du groupe (même forme) et enfin les 3 dernier les droits des autres (toujours sur la même forme.

        Pour faire ton tableau tu va devoir récupérer ces valeur et le remplir au fur et à mesure avec différent test dans ta boucle de remplissage.

        J’espère que ça t'a aidé ^^

        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2015 à 12:14:48

          EDIT: Je crois que je viens de comprendre que c'était un énoncé, donc j'enlève mon script tous fait, le but étant de t'aider et non de te donner la réponse.

          Pour t'aider, j'utiliserai stat également, avec un petit sed :

          echo -rwxr-xr-x | sed -r 's/[r,w,x]/oui /g;s/-/non /g'
          non oui oui oui oui non oui oui non oui

          Après tu sais que le premier est le byte spécifique (fichier, dossier, sticky etc ...).

          Les trois suivant sont donc pour User, les trois d'après pour Group et les trois derniers pour Other.

          A scripté avec une boucle ou un awk, et tu devrait avoir le résultat attendu

          -
          Edité par thetataz 26 mai 2015 à 12:36:31

          • Partager sur Facebook
          • Partager sur Twitter
          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème
            26 mai 2015 à 13:36:35

            salut,

            les virgules, entre crochets, ne servent à rien ici.

            s'il y en avait sur la ligne à traiter, elles seraient aussi remplacées par «oui».

            $ echo -rwx,r-x,r-x | sed -r 's/[r,w,x]/oui /g;s/-/non /g'
            non oui oui oui oui oui non oui oui oui non oui 
            $ echo -rwxr-xr-x | sed -r 's/[rwx]/oui /g;s/-/non /g'
            non oui oui oui oui non oui oui non oui 
            • Partager sur Facebook
            • Partager sur Twitter

            Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            besoin d'aide en script shell

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown