Aller au contenu

problèmes sur un TP d'UNIX(Langage shell)


Jaynco

Messages recommandés

Je suis en 1ère année à l'université en maths-info et je dois faire ce TP d'unix et l'envoyer par mail dans 3 jours et ... je n'ai pas de pc sous unix sous la main donc si quelqu'un pouvait m'aider svp

TP 1 : créer un script testfichier, qui précisera le type du fichier

passé en paramètre, ses permissions d'accès pour l'utilisateur :

ex : résultats

Le fichier /etc est un répertoire :

"/etc" est accessible par root en lecture écriture exécution

Le fichier /etc/smb.conf est un fichier ordinaire qui n'est pas vide :

"/etc/smb.conf" est accessible par titi en lecture.

TP 2 : afficher le contenu d'un répertoire

Écrire un script bash listerc_dir.sh permettant d'afficher le contenu

d'un répertoire en séparant les fichiers et les (sous)répertoires :

$ ./listrc_dir.sh affichera :

----------------------------------- Fichiers dans /etc/rc.d

------------------------------------

rc

rc.local

rc.sysinit

----------------------------------- Repertoires dans /etc/rc.d

---------------------------------

init.d

rc0.d

rc1.d

rc2.d

rc3.d

rc4.d

rc5.d

rc6.d

TP 3 : lister les utilisateurs

Écrire un script bash affichant la liste des noms de login des

utilisateurs définis dans /etc/passwd ayant un UID supérieur à 500.

Indication : for in $(cat /etc/passwd) permet de parcourir les lignes du

dit fichier.

TP 4 : lecture au clavier

La commande bash read permet de lire une chaîne au clavier et de

l'affecter à une variable.

ex : echo -n "Entrer votre nom : "

read nom

echo "Votre nom est $nom"

La commande file affiche des informations sur le contenu d'un fichier

(elle applique des règles basées sur l'examen rapide du contenu du fichier).

Les fichier de texte peuvent être affiché page par page avec la commande

more :

1- Tester ces trois commandes ;

2- Écrire un script qui propose à l'utilisateur de visualiser page par

page chaque fichier texte du répertoire spécifié en argument. Le script

affichera pour chaque fichier texte (et seulement ceux là) la question

"voulez vous visualiser le fichier biduletruc ?". En cas de réponse

positive, il lancera more, avant de passer à l'examen du fichier suivant.

TP 5 : ecrire un script bash pour créer un jeu qui genère un nombre

aléatoire entre (0- 1024) et qu'il faut trouver

ex : résultats

trouvez le nombre caché: proposez un nombre entre 0 et 1024:

555

plus petit

200

plus grand

325

exact

Merci d'avance ^^

Lien vers le commentaire
Partager sur d’autres sites

Bah j'avais fait le 1er avec un ami , on avait trouvé mais pour les autres je sèches :s

ça donnait ça pour le 1er :

if [ -d $1 ]

then echo le fichier $1 est un repertoire

elif [ \( -f $1 \) -a \( -s $1 \) ]

then echo "le fichier $1 est un fichier ordinaire qui n'est pas vide"

else echo "le fichier $1 est un fichier vide ou inexistant"

fi

if [ -r $1 ]

then

if [ -w $1 ]

then

if [ -x $1 ]

then echo "$1 est accessible en lecture ecriture execution"

else echo "$1 est accessible en lecture ecriture"

fi

else

if [ -x $1 ]

then echo "$1 est accessible en lecture execution"

else echo "$1 est accessible en lecture"

fi

fi

else

if [ -w $1 ]

then

if [ -x $1 ]

then echo "$1 est accessible en ecriture execution"

else echo "$1 est accessible en ecriture"

fi

else

if [ -x $1 ]

then echo "$1 est accessible en execution"

else echo "$1 n'est pas accessible"

fi

fi

fi

J'essaye de faire les autres sur papier mais je ne peux pas vérifier si ça marche

Lien vers le commentaire
Partager sur d’autres sites

voila pour le TP2 ... je l'ai tester il marche y'a pas de pb

je suis en premiere anné d'IUT info a dijon, sa me fais un peut d'entrainement pour mes cour d'unix ...

#!/bin/bash

echo "-----------------Fichier dans /etc/rc.d-----------------"

for LeFic in `ls /etc/rc.d/*`

do

if [ -f $LeFic ] ; then echo $LeFic |cut -d'/' -f6 ; fi

done

echo "----------------Répertoire dans /etc/rc.d---------------"

ls -l /etc/rc.d/* |grep "^d" | tr -s " " | cut -d' ' -f8

si j'ai le temps je ferais les suivant

Lien vers le commentaire
Partager sur d’autres sites

Je suis en 1ère année à l'université en maths-info et je dois faire ce TP d'unix et l'envoyer par mail dans 3 jours et ... je n'ai pas de pc sous unix sous la main donc si quelqu'un pouvait m'aider svp

http://knoppix-fr.org/download/#knoppix

http://kaella.linux-azur.org/index.php#telechargement

Sont tes amies.

Tu peux tester là dessus.

Ensuite vient mettre tes résultats ici, ça intéressera les personnes qui ne maitrisent pas bash et ceux qui connaissent pourront te donner leur avis.

Mais prendre du temps pour te le faire, ça non.

Indication : for in $(cat /etc/passwd) permet de parcourir les lignes du

dit fichier.

manque un nom de variable.
ex : echo -n "Entrer votre nom : "
EntreZ

if [ -d $1 ]

then echo le fichier $1 est un repertoire

elif [ \( -f $1 \) -a \( -s $1 \) ]

then echo "le fichier $1 est un fichier ordinaire qui n'est pas vide"

else echo "le fichier $1 est un fichier vide ou inexistant"

fi

if [ -r $1 ]

then

if [ -w $1 ]

then

if [ -x $1 ]

then echo "$1 est accessible en lecture ecriture execution"

else echo "$1 est accessible en lecture ecriture"

fi

else

if [ -x $1 ]

then echo "$1 est accessible en lecture execution"

else echo "$1 est accessible en lecture"

fi

fi

else

if [ -w $1 ]

then

if [ -x $1 ]

then echo "$1 est accessible en ecriture execution"

else echo "$1 est accessible en ecriture"

fi

else

if [ -x $1 ]

then echo "$1 est accessible en execution"

else echo "$1 n'est pas accessible"

fi

fi

fi

J'essaye de faire les autres sur papier mais je ne peux pas vérifier si ça marche

Moi j'aurait fait comme ça : (Pas testé)

#! /bin/bash

[ ! -r $1 ] && [ ! -w $1 ] && [ ! -x $1 ] && echo "non accessible" && exit


echo -n "$1 est accessible en mode"
[ -r $1 ] && echo -n " lecture"
if [ -w $1 ]; then
	[ -r $1 ] && echo -n ","
	echo -n " écriture"
fi
if [ -x $1 ]; then
	[ -r $1 ] || [ -w $1 ] && echo -n " et"
	echo -n " execution"
fi
echo ""

En + ce sujet serait + à sa place dans Programmation ... même si c'est de la prog sous Linux ;-)

:transpi:

Ou dans le topic sur bash

Ou comme dit zoto, tu peux aussi utiliser qemu (enfin c'est brutal quand même, je pense que c'est plus agréable de passer par cygwin ou un livre CD... avant d'avoir la bonne idée de mettre définitivement windows à la poubelle).

edit duke : le panneau :transpi:

Lien vers le commentaire
Partager sur d’autres sites

for LeFic in `ls /etc/rc.d/*`
Arg, surtout pas ça !

Pourquoi utiliser ls ?

Et puis ta ligne est bien compliquée...

Pareil, pas testé non plus, mais moi j'aurait fait comme ça :

for myfile in /etc/rc.d/*; do
	if [ -f $file ] # Ou peut être /etc/rc.d/$file plutôt, ça me semble plus logique
			echo "..."

Pareil avec -d.

Lien vers le commentaire
Partager sur d’autres sites

En + ce sujet serait + à sa place dans Programmation ... même si c'est de la prog sous Linux ;-)

ben je me suis demandé, mais les scripts bash sont plutot traités ici (dur dur de classer des fois ...)

donc je laisse ici :chinois: (à moins que quelqu'un ait un argument massue qui m'a échappé -> mp :mdr: )

je pense aussi que ca fouttrait plus le bordel qu'autre chose de fusionner avec le topic bash. Comme dit dans les règles, de manières générales, on se conte du "un problème, un topic" afin de faciliter les recherches :yes:

ps : merci de pas quoter les modopliz :D

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Etant newb, je me suis amusé à faire le TP5 pour me remettre au bash. Donc voici mon script:

#!bin/bash

MAX=1025

let "nb_aleatoire = $RANDOM % $MAX"
# % 10 >> modulo 10

entrer_nombre()
# memorise un nombre donne par l'utilisateur dans la variable "nb"
{
echo -n "Donnez un nombre entre 1 et 1024: "
read nb
}

comparer_nombre()
# compare le nombre donne par l'utilisateur au nombre aleatoire
# informe l'utilisateur si le nombre est plus grand ou plus petit
# que le nombre aleatoire
{
if [ $1 -gt $nb_aleatoire ]
then
echo "Le nombre est plus petit que $1"
entrer_nombre
else
echo "Le nombre est plus grand que $1"
entrer_nombre
fi
}

entrer_nombre
while [ $nb_aleatoire -ne $nb ]
do
 comparer_nombre $nb
done

echo "Bravo, vous avez trouvé!!"

NB: Ca pourra servir de correction pour Jaynco (après confirmation)

Lien vers le commentaire
Partager sur d’autres sites

Jaynco : C'est bien dommage. Tu pouvais demander de l'aide au forum, on est là pour ça. D'ailleurs certaines personnes t'on aidées.

Il faut juste ne pas confondre aider et faire le boulot des autres.

Par ailleurs si tu avait posté tes solutions ou là où tu coincait, je suis sûr que plein de gens auraient lu ça et on aurait pu échanger des avis sur la façon de coder, d'optimiser, de faire, c'est toujours intéressant.

Et puis ça peut rafraichir la mémoire de ceux qui n'ont pas programmé depuis lontemps et/ou donner des idées aux personnes qui ne programment pas encore (voir leur donner envie de scripter).

Enfin... J'espère que tu as réussi ton examen.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...