issue58:c_c
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue58:c_c [2012/03/14 12:22] – [to do] frangi | issue58:c_c [2012/03/17 10:16] (Version actuelle) – auntiee | ||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
** | ** | ||
- | Je me rends compte que beaucoup de nos lecteurs sont des étudiants (comme je le suis). Selon le pays, un nouveau semestre vient de commencer, est sur le point de commencer, ou, dans le cas de l' | + | Je me rends compte que beaucoup de nos lecteurs sont des étudiants (comme je le suis). Selon le pays, un nouveau semestre vient de commencer, est sur le point de commencer, ou, dans le cas de l' |
- | Si vous avez l' | + | Si vous avez l' |
- | Il a pour but de poser des questions, | + | Il a pour but de poser des questions, |
** | ** | ||
Ligne 29: | Ligne 29: | ||
** | ** | ||
- | Je vais discuter brièvement de la fonctionnalité du script, et ensuite expliquer pourquoi chaque commande est utilisée (y compris une explication des usages dans le script). | + | Je vais discuter brièvement de la fonctionnalité du script et ensuite expliquer pourquoi chaque commande est utilisée (y compris une explication des usages dans le script). |
Que fait-il ? | Que fait-il ? | ||
- | Ce script shell prend les questions dans des fichiers du dossier des catégories, et les pose (au hasard) dans une fenêtre GUI formée par Zenity. Il affiche la question, attend, puis affiche la bonne réponse (un peu comme le font les flashcards). | + | Ce script shell prend les questions dans des fichiers du dossier des catégories et les pose (au hasard) dans une fenêtre GUI formée par Zenity. Il affiche la question, attend, puis affiche la bonne réponse (un peu comme le font les flashcards). |
Comment ça marche? | Comment ça marche? | ||
Ligne 39: | Ligne 39: | ||
Il utilise shuf pour prendre les fichiers du dossier catégories, | Il utilise shuf pour prendre les fichiers du dossier catégories, | ||
- | Une fois que cela est pris en charge, une fenêtre Zenity demande alors à l' | + | Une fois cela fait, une fenêtre Zenity demande alors à l' |
- | Une fenêtre Zenity pose la question suivante en attente dans la catégorie choisie. Cette fenêtre contient une barre de progression qui atteint 100% après un délai choisi par le joueur (le seul argument du script), ou 20 s par défaut. Une fois une catégorie épuisée, elle est ensuite à nouveau | + | Une fenêtre Zenity pose la question suivante en attente dans la catégorie choisie. Cette fenêtre contient une barre de progression qui atteint 100 % après un délai choisi par le joueur (le seul argument du script), ou 20 secondes |
Ligne 62: | Ligne 62: | ||
** | ** | ||
- | Conditions: | + | Conditions : |
Tout au long du script, les conditions sont utilisées pour naviguer dans les différentes branches du dossier. Elles sont utilisées dans les instructions if, while, et for. | Tout au long du script, les conditions sont utilisées pour naviguer dans les différentes branches du dossier. Elles sont utilisées dans les instructions if, while, et for. | ||
Ligne 68: | Ligne 68: | ||
16. if [-n " | 16. if [-n " | ||
- | Cette instruction if vérifie si l' | + | Cette instruction if vérifie si l' |
23. if [-z " | 23. if [-z " | ||
- | C'est l' | + | C'est l' |
28. if [ ! -d $XDG_DATA_HOME/ | 28. if [ ! -d $XDG_DATA_HOME/ | ||
Ligne 94: | Ligne 94: | ||
39. while [ -n " | 39. while [ -n " | ||
- | Ici, nous utilisons la condition que nous avons utilisé | + | Ici, nous utilisons la condition que nous avons utilisée |
42. if [ " | 42. if [ " | ||
- | Il s'agit d'une simple comparaison de chaînes, où nous vérifions si l' | + | Il s'agit d'une simple comparaison de chaînes, où nous vérifions si l' |
48. if [ ! -s " | 48. if [ ! -s " | ||
- | Habituellement -s est utilisé pour vérifier si un fichier existe et n'est pas vide. Puisque nous prenons le contraire (le «!»), nous vérifions en fait si le fichier est vide, c'est à dire si les questions relevant de la catégorie sont épuisées. | + | Habituellement -s est utilisé pour vérifier si un fichier existe et n'est pas vide. Puisque nous prenons le contraire (le « ! »), nous vérifions en fait si le fichier est vide, c'est-à-dire si les questions relevant de la catégorie sont épuisées. |
Ligne 125: | Ligne 125: | ||
Shuf: | Shuf: | ||
- | Shuf est un programme inclus dans le paquetage | + | Shuf est un programme inclus dans le paquet |
33. shuf -o " | 33. shuf -o " | ||
- | Dans ce cas, shuf prend le contenu du fichier (dont le nom est enregistré dans la variable | + | Dans ce cas, shuf prend le contenu du fichier (dont le nom est enregistré dans la variable |
44. `shuf -n 1 -e *` | 44. `shuf -n 1 -e *` | ||
- | Dans ce cas, shuf affiche seulement la première ligne de la permutation («-n 1»), et accepte comme argument le contenu du fichier («-e»). Cela signifie qu'il prend la liste des catégories, | + | Dans ce cas, shuf affiche seulement la première ligne de la permutation (« -n 1 ») et accepte comme argument le contenu du fichier (« -e »). Cela signifie qu'il prend la liste des catégories, |
50. shuf -o " | 50. shuf -o " | ||
Ligne 139: | Ligne 139: | ||
C'est la même chose qu'à la ligne 33, car il remplit tout simplement la catégorie épuisée. | C'est la même chose qu'à la ligne 33, car il remplit tout simplement la catégorie épuisée. | ||
- | ===== to do ===== | ||
** | ** | ||
Zenity: | Zenity: | ||
Ligne 149: | Ligne 148: | ||
This creates a GTK window with a radio list, using the token.png file as the window icon. It also includes the window title, the text (outside of the radio button), and offers some configuration (such as geometry). The radio buttons are populated by piping the output of ls -1 through sed and then zenity. Sed is used to format the ls output so that Zenity can use it. It should be noted that Zenity expects each string to be preceded by a TRUE or FALSE, where it denotes which string is the default choice (the line marked TRUE). | This creates a GTK window with a radio list, using the token.png file as the window icon. It also includes the window title, the text (outside of the radio button), and offers some configuration (such as geometry). The radio buttons are populated by piping the output of ls -1 through sed and then zenity. Sed is used to format the ls output so that Zenity can use it. It should be noted that Zenity expects each string to be preceded by a TRUE or FALSE, where it denotes which string is the default choice (the line marked TRUE). | ||
** | ** | ||
+ | |||
+ | Zenity : | ||
+ | |||
+ | « Zenity est un programme qui affiche des boîtes de dialogues de type GTK+ et qui retourne un code (soit par retour dans le script, soit à l' | ||
+ | |||
+ | 11. zenity --list --radiolist --window-icon=../ | ||
+ | |||
+ | Ceci crée une fenêtre GTK avec une liste de boutons « radio », en utilisant le fichier token.png comme icône de fenêtre. Il comprend également le titre de la fenêtre, le texte (en dehors du bouton radio) et offre quelques configurations (comme la géométrie). Les boutons radio sont labellisés en redirigeant la sortie de ls -1 à sed, puis à Zenity. Sed est utilisé pour formater la sortie ls de sorte que Zenity puisse l' | ||
** | ** | ||
Ligne 165: | Ligne 172: | ||
For a better introduction to Zenity, you can check out my article in FCM#46. | For a better introduction to Zenity, you can check out my article in FCM#46. | ||
** | ** | ||
+ | |||
+ | 51. zenity --info --window-icon=../ | ||
+ | |||
+ | C'est la fenêtre qui informe l' | ||
+ | |||
+ | 60. zenity --progress --window-icon=../ | ||
+ | |||
+ | Dans cet exemple, Zenity crée une barre de progression (en utilisant une boucle for pour parcourir un pourcentage de temps entre la question et la réponse, définie plus tôt dans le script). Le pourcentage de la barre de progression est lu à travers l' | ||
+ | |||
+ | 64. zenity --info --window-icon=../ | ||
+ | |||
+ | Une fois que la barre de progression a atteint 100 % et que l' | ||
+ | |||
+ | Pour une meilleure introduction à Zenity, vous pouvez consulter mon article dans le FCM n° 46. | ||
+ | |||
** | ** | ||
Ligne 179: | Ligne 201: | ||
Here, sed edits the list of questions in-place (“-i”) and simply removes the first line of the file, thereby effectively removing the question that was just asked. | Here, sed edits the list of questions in-place (“-i”) and simply removes the first line of the file, thereby effectively removing the question that was just asked. | ||
** | ** | ||
+ | |||
+ | Sed : | ||
+ | |||
+ | Sed est une commande qui vous permet d' | ||
+ | |||
+ | 11. sed iFALSE | ||
+ | |||
+ | Ceci est utilisé après la commande « ls -1 », et insère (d'où le «i») le mot « FALSE » (faux) devant chaque ligne, de sorte que Zenity peut formater correctement les données dans la liste des boutons radio. | ||
+ | |||
+ | 62. sed -i 1d " | ||
+ | |||
+ | Ici, sed modifie la liste des questions sur place (« -i ») et supprime tout simplement la première ligne du fichier, retirant ainsi la question qui vient d' | ||
** | ** | ||
Ligne 202: | Ligne 236: | ||
• info sed | • info sed | ||
** | ** | ||
+ | |||
+ | Comment puis-je ajouter des catégories? | ||
+ | |||
+ | Vous pouvez ajouter des catégories à l'aide de LibreOffice Calc (ou tout autre programme qui peut créer des fichiers CSV (Comma Separated Values [Ndt : dont les champs sont séparés par des virgules]). Au lieu de virgules, une tabulation devrait être utilisée comme séparateur et rien d' | ||
+ | |||
+ | J' | ||
+ | |||
+ | Pour aller plus loin : | ||
+ | |||
+ | • « Linux Shell Scripting avec Bash », Ken Burtch O. (Developer' | ||
+ | |||
+ | • Les pages de manuel correspondantes. | ||
+ | |||
+ | • Le FCM n° 46 (pour Zenity). | ||
+ | |||
+ | • info coreutils « test invocation ». | ||
+ | |||
+ | • info coreutils « shuf ». | ||
+ | |||
+ | • info sed. | ||
+ | |||
+ |
issue58/c_c.1331724149.txt.gz · Dernière modification : 2012/03/14 12:22 de frangi