Exercice shell

Bonjour,

j'ai un probléme avec les scripts et j'ai un script a réaliser, je vous prie de bien m'aider a le réaliser.
voila le script que je dois réaliser :
- ecrire un script qui parcours le fichier /etc/passwd et affiche pour chaque utilisateur ordinaire le login,l'UID et le repertoire personnel et son shell.

merci d'avance pour votre aide.



Ce n'est pas le temps qui passe, mais nous qui passons dans le temps.

4 réponses

  1. Modérateur
    Je t'invite à lire les pages de man et un tutoriel sur le langage shell qui explique ce qu'est un "pipe". Tu n'as besoin que de cat et cut pour répondre à cet exercice, il faut ensuite juste trouver quelles options passer et comment faire le pipe.

    man cat
    man cut


    Pour savoir à quoi correspondent chaque colonnes de /etc/passwd :

    man 5 passwd


    Bonne chance
    1. Bonsoir,
      Voilà une solution:

      #!/bin/bash
      for i in 'cut -d":" -f3 /etc/passwd'
      do
      #Extraction des utilisateurs ordinaire
      if [ $i -ge 500 ]
      then
      grep "$i" /etc/passwd | cut -d":" -f1,3,7
      fi
      done
      1. Contributeur
        re,
        j'esper que depuis le temps , elle ou il a trouver la solution , car sinon elle ou il a eu droit a une belle bulle !!!
        je comprends pas l'interet de deterer de vieux post et de plus de donner des solutions alors que le but d'un forum n'est pas de faire les exercices des posteurs .
        il est vrai que la culture c'est comme .......................... signe Francoise Sagan
        a+

        FC 19 - Mandriva 2010 -Debian 6.0-
        Les meilleures choses ont besoin de patience.(JC ANGLADE)
        1. Modérateur
          Surtout que l'algorithme proposé est sous optimal puisqu'on va faire un grep sur tout /etc/passwd autant de fois qu'il y a de lignes dans le fichier, alors qu'on peut afficher la réponse en une seule passe... Accessoirement l'exercice peut être réalisé sans utiliser grep.

          Ainsi, quitte à saborder un exercice proposé par un enseignant pour élève trop feignant(e) pour chercher 5 minutes dans
          man cut
          et ici ...
          https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne

          ... merci de faire ce sabordage correctement.

          #!/bin/bash
          
          min_uid=500
          
          while read line
          do
              uid=$(echo $line | cut -d ":" -f 3)
              if [ "$uid" -ge "$min_uid" ]
              then
                  echo $line | cut -d ":" -f 1,3,7
              fi
          done < /etc/passwd
          
          return 0
          


          Bref...
          1. salut,

            #!/bin/sh
            
            min_uid=500
            while IFS=':' read nom _ uid _ _ _ shell
            do
               test "$uid" -ge "$min_uid" && echo "$nom:$uid:$shell"
            done < /etc/passwd


            \o/