Pages : 1
#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 ). 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
Si vous voulez les autres version, vous demandez
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 .
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...
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
Je verrais ça samedi prochain, merci
[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 )
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
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
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
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
Pages : 1