Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/04/2010, à 13:24

Polochon_street

Pages man au hasard

Salut à tous!
Je cherchais, il n'y a pas très longtemps, un moyen d'afficher une page man au hasard (quand on s'ennuie, on peut découvrir des commandes tongue). Comme j'ai un bouquin sur nux qui parle du bash, je me suis dit "pourquoi ne t'entraînerais-tu pas en faisant toi même le script?". Et voilà, il est là, tout beau, tout chaud de ce matin. Je le modifierai sûrement, il est foireux je pense, et ne traite pas de toutes les pages de man, mais il a le mérite d'exister big_smile
Si vous voulez les autres version, vous demandez tongue
http://omploader.org/vNDRhcA/man_random.sh


Passez signer la pétition pour des drivers lexmark!
http://forum.ubuntu-fr.org/viewtopic.php?id=327397
http://jesigne.fr/drivers-imprimantes-lexmark-linux

Hors ligne

#2 Le 11/04/2010, à 14:24

yanightmare

Re : Pages man au hasard

Génial !

C'est sûr ça sert pas à grand chose et tu dois pas mal t'embêter dans la vie, mais j'apprécie l'idée big_smile.

Merci beaucoup !

Hors ligne

#3 Le 11/04/2010, à 14:56

Polochon_street

Re : Pages man au hasard

Correction, on peut lancer le prog en utilisateur normal
http://omploader.org/vNDRheA/man_random.sh


Passez signer la pétition pour des drivers lexmark!
http://forum.ubuntu-fr.org/viewtopic.php?id=327397
http://jesigne.fr/drivers-imprimantes-lexmark-linux

Hors ligne

#4 Le 11/04/2010, à 16:27

Polochon_street

Re : Pages man au hasard

Troisième version, qui prends en compte les pages françaises aussi!
Si vous avez des suggestions...
big_smile
http://omploader.org/vNDRiMA/man_random.sh


Passez signer la pétition pour des drivers lexmark!
http://forum.ubuntu-fr.org/viewtopic.php?id=327397
http://jesigne.fr/drivers-imprimantes-lexmark-linux

Hors ligne

#5 Le 11/04/2010, à 20:37

sputnick

Re : Pages man au hasard

Tu te limite à la branche 1 des mans.
Cette commande gère tous les mans en seulement 2 pipes en user simple :

 find /usr/share/man -name '*.gz' |
awk -F'/' '
    {gsub(/^man/, "", $(NF-1))
    gsub(/\..*\.gz$/, "", $NF)
    arr[c++]=$(NF-1) " " $NF
}END{
    print "man 2\076/dev/null " arr[(((rd%NR)+1))] | "bash -e"
}' rd=$RANDOM

Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr

Hors ligne

#6 Le 11/04/2010, à 20:46

Polochon_street

Re : Pages man au hasard

Oulà, c'est du haut niveau, ça big_smile
Je verrais ça samedi prochain, merci big_smile
[EDIT]J'ai testé rapidement, et des fois ça affiche des pages noires, pas de pages, toussa... Enfin j'vais me pencher sur la question, je continue mon prog de mon côté (à la base c'est un exercice pour m'entraîner au bash, hein big_smile)
Merci!

Dernière modification par Polochon_street (Le 11/04/2010, à 20:53)


Passez signer la pétition pour des drivers lexmark!
http://forum.ubuntu-fr.org/viewtopic.php?id=327397
http://jesigne.fr/drivers-imprimantes-lexmark-linux

Hors ligne

#7 Le 12/04/2010, à 07:51

credenhill

Re : Pages man au hasard

hello
enlever le -s 1 pour ne pas se limiter à la section 1

 apropos -s 1 -r .|awk '{x[NR]=$1};END{system("man " x[int(rand()*NR)])}'

Hors ligne

#8 Le 12/04/2010, à 18:46

Polochon_street

Re : Pages man au hasard

Troisième version, je l'ai fait sans tenir compte de vos commentaires, désolé, mais cette nuit j'ai eu une illumination et j'ai absolument voulu tester tongue
http://omploader.org/vNDRvZQ/man_random.sh


Passez signer la pétition pour des drivers lexmark!
http://forum.ubuntu-fr.org/viewtopic.php?id=327397
http://jesigne.fr/drivers-imprimantes-lexmark-linux

Hors ligne

#9 Le 12/04/2010, à 19:01

JB-home

Re : Pages man au hasard

voilà se que ça donne chez moi :

zorg@zorg-laptop:~/Bureau$ ./man_*
Quelle page de manuel voulez-vous ?
Que faire? q = quitter, n = page de man suivante
n
Quelle page de manuel voulez-vous ?
Que faire? q = quitter, n = page de man suivante
q
zorg@zorg-laptop:~/Bureau$

comme ceci ça fonctionne :

#!/bin/bash


	
	VAR="n"
	while [[ $VAR = "n" ]]
	do
	MAN=$((ls -1 /usr/share/man/man1 && ls -1 /usr/share/man/fr/man1) | sort -d | uniq | sort -R | cut -d. -f1 | head -1)
  	man $MAN
	echo "Que faire? q = quitter, n = page de man suivante"
	read VAR 
	done

Dernière modification par z0rg> (Le 12/04/2010, à 19:07)

Hors ligne

#10 Le 12/04/2010, à 19:12

JB-home

Re : Pages man au hasard

pour avoir tout les branche de man, peut être avec cette commande ?

ls /usr/share/man/fr/*

Dernière modification par z0rg> (Le 12/04/2010, à 19:17)

Hors ligne

#11 Le 12/04/2010, à 21:06

nesthib

Re : Pages man au hasard

@Polochon_street : peux-tu éditer tes messages pour y inclure le code de tes scripts au lieu d'un lien vers un fichier sur un site tiers ? merci


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#12 Le 14/04/2010, à 20:28

JB-home

Re : Pages man au hasard

Polochon_street, tu as abandonné ?

Hors ligne

#13 Le 14/04/2010, à 22:49

sputnick

Re : Pages man au hasard

Pas mal credenhill, sauf que tu a oublié de lancer srand, ce qui fait que ta commande n'est pas du tout aléatoire. Perso, je n'utilise jamais apropos, j'utilise man -k.

man -k . | awk 'BEGIN{srand()}{x[NR]=$1}END{system("man "x[int(rand()*NR)])}'

Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr

Hors ligne

#14 Le 15/04/2010, à 09:12

credenhill

Re : Pages man au hasard

sputnick a écrit :

sauf que tu a oublié de lancer srand, ce qui fait que ta commande n'est pas du tout aléatoire.

avec un seul nombre aéatoire par awk et des awk qui ne sont pas exécutés dans le même seconde, pas besoin de srand
srand() est inutile:
awk seeds the random  number  generator  from the clock at startup so there is no real need to call srand().  Srand(expr) is useful for repeating pseudo  random sequences.

$ echo|awk '{print rand()}'
0.947825
$ echo|awk '{print rand()}'
0.342439
$ echo|awk '{print rand()}'
0.473976
$ echo|awk '{print rand()}'
0.605514
$ echo|awk '{print rand()}'
0.737052

là d'accord
$ seq 1 10 | xargs -L1 bash -c "echo|awk '{print rand()}'"
0.133229
0.133229
0.133229
0.133229
0.133229
0.133229
0.133229
0.133229
0.133229
0.264767
$

Dernière modification par credenhill (Le 15/04/2010, à 09:42)

Hors ligne

#15 Le 15/04/2010, à 12:51

sputnick

Re : Pages man au hasard

Ben regarde mes tests, ça parle de soi même :

$ readlink -f $(type -p awk)
/bin/gawk
$ gawk --version
GNU Awk 3.1.7
$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
jeu. avril 15 12:50:08 CEST 2010
man wall
$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
jeu. avril 15 12:50:17 CEST 2010
man wall
$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
jeu. avril 15 12:50:24 CEST 2010
man wall
$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
jeu. avril 15 12:50:30 CEST 2010
man wall

Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr

Hors ligne

#16 Le 15/04/2010, à 13:08

credenhill

Re : Pages man au hasard

gawk != awk
gawk != awk

$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
Thu Apr 15 13:06:44 CEST 2010
man file
$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
Thu Apr 15 13:06:46 CEST 2010
man lockfile-touch
$ date; apropos -s 1 -r .|awk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
Thu Apr 15 13:06:48 CEST 2010
man sdptool
$
$ date; apropos -s 1 -r .|gawk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
Thu Apr 15 13:19:36 CEST 2010
man fc-cache
$ date; apropos -s 1 -r .|gawk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
Thu Apr 15 13:19:39 CEST 2010
man fc-cache
$ date; apropos -s 1 -r .|gawk '{x[NR]=$1};END{print "man", x[int(rand()*NR)]}'
Thu Apr 15 13:19:43 CEST 2010
man fc-cache
$
$

Dernière modification par credenhill (Le 15/04/2010, à 13:20)

Hors ligne

#17 Le 15/04/2010, à 16:21

Polochon_street

Re : Pages man au hasard

Scusez, j'ai pas abandonné, mais j'ai plus posté vers gentoo-québec. Si vous voulez la suite, voilà le code:

#!/bin/bash


	
	VAR="n"
	while [[ $VAR = "n" ]]
	do
	MAN=$((cd /usr/share/man && find -name "*.bz2") | cut -d/ -f3 | cut -d. -f1 | sort -d | uniq | sort -R | head -1 ) 
  	man $MAN
	echo "Que faire? q = quitter, n = page de man suivante"
	read VAR 
	done

Si quelqu'un est intéressé par la suite, je peux poster quand j'ai fait une MAJ si vous voulez.
Bon, maintenant on peut faire plusieurs pages d'affilés, et il cherche dans tous les dossiers de /usr/share/man. De plus, je n'ai pas essayer de "parser ls output", comme disaient les gars sur #bash.
Merci à tous pour vos scripts, je les lirais samedi, quand les vacances arriveront big_smile


Passez signer la pétition pour des drivers lexmark!
http://forum.ubuntu-fr.org/viewtopic.php?id=327397
http://jesigne.fr/drivers-imprimantes-lexmark-linux

Hors ligne

#18 Le 15/04/2010, à 16:31

sputnick

Re : Pages man au hasard

parser ls output

Haaan ! C'est LE MAL absolu et éternel ^^

CF http://partmaps.org/era/unix/award.html#ls

Ya toujours une meilleure façon de faire.

Je suis un disciple de #bash et on y prêche la bonne parole pour le bien des brebis égarées.


Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr

Hors ligne