Exercice shell

Fermé
amn stern Messages postés 24 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 5 décembre 2012 - Modifié par mamiemando le 10/07/2012 à 11:02
 Utilisateur anonyme - 7 févr. 2014 à 20:27
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

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
10 juil. 2012 à 11:04
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
jeanbi Messages postés 15118 Date d'inscription samedi 9 décembre 2006 Statut Contributeur Dernière intervention 6 février 2023 2 177
Modifié par jeanbi le 6/02/2014 à 17:57
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)
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié par mamiemando le 7/02/2014 à 20:18
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...
0
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/
0
miloud.kaddi Messages postés 1 Date d'inscription jeudi 6 février 2014 Statut Membre Dernière intervention 6 février 2014
6 févr. 2014 à 17:02
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