Help, controle UNIX

Help, controle UNIX - Programmation

Marsh Posté le 23-01-2001 à 14:07:53    

bon j'ai un controle, si quelqu'un peut m'aider c'est cool!!
 
j'ai jusqu'a 16h maxi...
 
(ls -w ||whoami) && date
(ls -w && whoami) ||date
 
ca veut dire quoi?
 
merci

Reply

Marsh Posté le 23-01-2001 à 14:07:53   

Reply

Marsh Posté le 23-01-2001 à 14:18:27    

pas d'option -w pour le ls chez SUN.
 
Pour la signification ça veut dire que
ls -w ça ne marche pas => renvoie un message d'erreur (2) => faux
whoami marche => renvoie la valeur 0 => vrai
date marche => renvoie 0.
 
donc dans
1) (faux ou vrai) et vrai => vrai
2) (faux et vrai) ou vrai => vrai
 
Dans tous les cas la valeur booléenne de ton expression c'est vrai.
 
Si c'est pas ça ce que tu veux, va falloir être plus précise cher CeCe.

 

Reply

Marsh Posté le 23-01-2001 à 14:22:06    

Flagrant délit de double topic.
 
En plus sur BlaBla t'as pas dit que c'était pour un contrôle...

Reply

Marsh Posté le 23-01-2001 à 14:22:54    

oui c'est ca merci...
 
une autre question
 
supposons que ds votre repertoir courant il y ass
_ des fichiers scripts et donnees en texte
_ des fichiers binaires
_ des sous repertoires
creer un script qui affiche le contenu de tous les fichiers avec une ligne entête indiquand le nom du fichier
pour les fichiers non texte ne pas afficher leurs contenus mais signaler par une ligne:
fichier (indiquer le nom): repertoire ou non-texte suivant le cas

 

Reply

Marsh Posté le 23-01-2001 à 14:47:10    

J'ai trouvé, je rédige.

 

Reply

Marsh Posté le 23-01-2001 à 14:50:02    

merci Toxin, tu merites un gros gros bisoux!

 

Reply

Marsh Posté le 23-01-2001 à 14:55:29    

Toxin a écrit a écrit :

J'ai trouvé, je rédige.
 
 

 




arf!
:D
file est ton ami ;)

 

Reply

Marsh Posté le 23-01-2001 à 14:59:03    

Da file ist good.
 
Mais j'ai des problèmes avec la comparaison.

 

Reply

Marsh Posté le 23-01-2001 à 15:02:48    

Pour la première question, comme le dit Toxin, y a pas d'option -w dans le ls POSIX (mais elle existe sous GNU-bash).
 
Bon restons POSIX.
(ls -w || whoami) && date va donc être évaluée et retourner sur la sortie standard le nom de l'utilisateur et la date.
 
Par contre (ls -w && whoami) || date ne va retourner que la date parce que les opérateur doublés && et || n'évaluent le second membre que si le premier ne permet pas d'avoir le résultat.
 
Ainsi exp1 && exp2 n'évaluera pas exp2 si exp1 est faux
et exp1 || exp2 n'évaluera pas exp2 si exp1 est vrai.

 


--Message édité par Verdoux--

Reply

Marsh Posté le 23-01-2001 à 15:12:02    

Voilà ce que j'ai eu en testant les commandes :
 
ma_machine# {nom_user} /tmp > (ls -w ||whoami) && date
ls: illegal option -- w
usage: ls [-1ACFLNRabcdefgilmnopqrstux] [File...]
nom_user
Tue Jan 23 14:54:02 NFT 2001
ma_machine# {nom_user} /tmp > (ls -w && whoami) ||datess
ls: illegal option -- w
usage: ls [-1ACFLNRabcdefgilmnopqrstux] [File...]
Tue Jan 23 14:54:24 NFT 200
 
Histoire d'illustrer les propos de Verdoux.
 
Et qu'on arrête de dire que je fais de la mauvaise volonté!!!

Reply

Marsh Posté le 23-01-2001 à 15:12:02   

Reply

Marsh Posté le 23-01-2001 à 15:18:20    

merci les gars! ;)
 
une autre question:
 
 
creer la commande "monchoix" qui affiche les lignes suivantes:ss
Menu du (indiquer la date)ss
1: liste des fichiers de votre repertoire de depart (le home) avec les detailsss
2: liste des utilisateurs connectes a la machine tries suivant leurs nomsss
3: liste des variables d'environnementss
 
de sorte que qd on lance "choix 1 " "choix 2" ou "choix3" on a les listes indiquesss
 
prevoir le cas ou on lance "choix" sans arguments, afficher le message "lancer choix avec arguments 1,2 ou 3"

 

Reply

Marsh Posté le 23-01-2001 à 15:25:22    

allez je m'y mets

Reply

Marsh Posté le 23-01-2001 à 15:30:22    

Ah Vi ça m'apprendra à pas tester.

 

Reply

Marsh Posté le 23-01-2001 à 15:36:15    

Il y a un pb de syntaxe avec les opérateurs de comparaison et je me souviens plus comment on fait.
 
Attention ' est le back-quote
 
#!/bin/ksh
 
liste='ls'
 
for i in $liste
do
   res='file $i'
 
   echo $res | grep text | wc -l | read btext
   echo $res | grep bit | wc -l | read bbin
   echo $res | grep directory | wc -l | read bdir
   echo $res | grep script | wc -l | read bscript
 
   if [ $btext -eq 1 -o $bscript -eq 1 ]
   then echo "Contenu de $i"
        cat $i
        echo
   else if [ $bbin -eq 1 ]
        then echo "$i : binaire"
        else if [ $bdir -eq 1 ]
             then echo "$i : repertoire"
             else echo "autre"
             fi
        fi
   fi
done
 
Une Connerie corrigé
Deux Conneries corrigées. Ca a l'air de marcher maintenant
 
 
 
 
 

 


--Message édité par Toxin--

Reply

Marsh Posté le 23-01-2001 à 15:40:55    

CeCe peux tu me donner le nom de tes professeurs UNIX. Par mail si tu veux pour pas les divulguer ici. Ca sent le vécu c'est pour ça.

 

Reply

Marsh Posté le 23-01-2001 à 15:42:00    

choix.ksh:
 
 
#!/bin/ksh
 
NBPARAM=$#
 
if [ "$NBPARAM" != 1 ]
then
 echo "lancer choix avec arguments 1,2 ou 3"
else
 case "$1" in
    "1" )
     ls -l $HOME
      ;;
    "2" )
     who | sort
     ;;
    "3" )
     env;;
     
   esac
fi
 
 
 
monchoix.ksh:
 
 
#!/bin/ksh
 
echo "Menu du `date`"
echo "1: liste des fichiers de votre repertoire de depart (le home) avec les details "  echo "2: liste des utilisateurs connectes a la machine tries suivant leurs noms  "
echo "3: liste des variables d'environnement"

 

--Message édité par jupiler--

Reply

Marsh Posté le 23-01-2001 à 15:45:54    

J'ai regardé les options de la commande who, et pareil, je vois pas comment trier non plus.
 
Dis-moi, par hasard il ne manque pas un cat temp.txt ou more temp.txt???

Reply

Marsh Posté le 23-01-2001 à 15:47:20    

Fred999 a écrit a écrit :

J'ai regardé les options de la commande who, et pareil, je vois pas comment trier non plus.
 
Dis-moi, par hasard il ne manque pas un cat temp.txt ou more temp.txt???

 





 
j'ai changé mon message, suffit de faire who | sort
 
sinon sort sur le fichier ca marche aussi mais c'est plus nécessaire ici

Reply

Marsh Posté le 23-01-2001 à 15:48:27    

Trié comme ça ???
 
who | awk '{ print $1 }' | sort

 

Reply

Marsh Posté le 23-01-2001 à 16:00:16    

testes "who | sort" tu verras bien
 
 
ta méthode ne fait que restreindre l'affichage au nom du connecté, mais le awk est inutile puisque le sort utilise le premier champ de la ligne donc le nom

 

--Message édité par jupiler--

Reply

Marsh Posté le 23-01-2001 à 16:02:52    

merci merci
 
 
autre question:ss
 
supposons que dansssvotre repertoire courant il y ass
_des fichiers scripts et donnees en textess
_ des fichiers binairesss
_ des sous repertoiresss
 
creez un script qui affiche le contenu de tous les fichiers avec une ligne entête indiquand le nom du fichier. Pour les fichiers non texte ne pas afficher leurs contenus mais signaler par une ligness
ss fichier (indiquer le nom): repertoire ou non texte suivant le casss
 
oups!!!ssdur dur

 

Reply

Marsh Posté le 23-01-2001 à 16:03:37    

Vi mais on ne voit QUE les noms des utilisateurs UNIX, pas le reste. On n'a pas demandé la liste des tty dans l'énoncé.
 
Par contre comment on fait un group des lignes ????

 

Reply

Marsh Posté le 23-01-2001 à 16:04:46    

CeCe a écrit a écrit :

merci merci
 
 
autre question:  
supposons que dans  votre repertoire courant il y a  
_des fichiers scripts et donnees en texte  
_ des fichiers binaires  _ des sous repertoires  
creez un script qui affiche le contenu de tous les fichiers avec une ligne entête indiquand le nom du fichier. Pour les fichiers non texte ne pas afficher leurs contenus mais signaler par une ligne  
   fichier (indiquer le nom): repertoire ou non texte suivant le cas  
oups!!!  dur dur

 





 
Relis tout le topic, CeCe

 

Reply

Marsh Posté le 23-01-2001 à 16:07:36    

Toxin a écrit a écrit :

Vi mais on ne voit QUE les noms des utilisateurs UNIX, pas le reste. On n'a pas demandé la liste des tty dans l'énoncé.
 
Par contre comment on fait un group des lignes ????
 
 

 





 
tu veux dire, pour éliminer les doublons??

Reply

Marsh Posté le 23-01-2001 à 16:08:26    

Vi. En awk je sais faire mais pas sur une seule ligne.

 

Reply

Marsh Posté le 23-01-2001 à 16:11:33    

Toxin a écrit a écrit :

Vi. En awk je sais faire mais pas sur une seule ligne.
 
 

 





 
dans ce cas-la ta ligne est bien mais tu rajoutes -u
 
who | awk '{ print $1 }' | sort -u

Reply

Marsh Posté le 23-01-2001 à 16:14:25    

Voilà !!!!! A deux on y arrive :D

 

Reply

Marsh Posté le 23-01-2001 à 16:18:15    

ouaips, question suivantess:hap:

Reply

Marsh Posté le 23-01-2001 à 16:19:35    

Mais il est 16h passé et j'ai été absent pendant plus d'une demi-heure pour papoter avec un directeur de projet.
 
Ca n'a pas dû aider CeCe.
 

 


--Message édité par Toxin--

Reply

Marsh Posté le 23-01-2001 à 16:20:38    

derniere question, et apres, vous avez droit a une sucette!!! :rolleyes:
 
copier le fichier/etc/passwd chez vous
afficher dans l'ordre alphabetique tous les noms utilisateurs avec leurs shells, pas d'autres informations superflues

 

Reply

Marsh Posté le 23-01-2001 à 16:25:08    

putain, c'est un control sur l'utilisation du man

Reply

Marsh Posté le 23-01-2001 à 16:29:13    

et tu sais y repondre?
j'ai le debut, mais j'ai du mal pour la liste...
 
 

jupiler a écrit a écrit :

putain, c'est un control sur l'utilisation du man

 




 

Reply

Marsh Posté le 23-01-2001 à 16:30:00    

-- Voilà voilà, ça arrive :D --
 
#!/bin/ksh
 
cat /etc/passwd | awk '
BEGIN
{
FS=":"
}
 
{
ligne[$0]=sprintf("%s %s",$1, $7)
}
 
END
{
for (i in ligne)
ss printf("%s
", ligne[i])
} ' | sort

 

Reply

Marsh Posté le 23-01-2001 à 16:32:51    

pas mieux
 
pour éviter les doublons rajouter -u après le sort

Reply

Marsh Posté le 23-01-2001 à 16:33:09    

Mais je crois que c'est cut qu'il faut utiliser :D

 

Reply

Marsh Posté le 23-01-2001 à 16:38:26    

cat /etc/hosts | cut -f1,7 -d":" | sort
Mais il y a un ":" qui reste. Tu peux rajouter
| sed s/[:]/ /g
Pour le virer :D

 

Reply

Marsh Posté le 23-01-2001 à 16:39:24    

cela dit, ya moyen de faire plus simple au niveau du code,
 
genre avec une seule ligne:
 
awk -F: '{print $1 "ss" $7}' /etc/passwd | sort -u

Reply

Marsh Posté le 23-01-2001 à 16:43:07    

Vi euh.... c'est mieux c'est sûr :D
 
Comme je n'utilise jamais awk tout seul sur la ligne de commande, je connaissais pas -F

 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed