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
    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/
  2. 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. 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. 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