Obligement - L'Amiga au maximum

Mercredi 18 juillet 2018 - 10:30  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


En pratique : AmigaDOS - Shell et scripts
(Article écrit par Cécil B. de Mil et extrait d'Amiga News Tech - octobre 1989)


A lire ma prose au fil des numéros de Amiga News Tech, vous avez sans nul doute remarqué que je suis un maniaque du clavier. Tout ce qu'un utilisateur normal réalise avec les menus du Workbench, moi, je le réalise à partir du CLI !

Je fais même beaucoup plus, puisque les commandes d'AmigaDOS permettent un contrôle beaucoup plus grand de la machine. Mais le principal attrait d'AmigaDOS réside dans sa programmation. Toute procédure complexe, c'est-à-dire utilisant plus de deux commandes, mérite d'être enregistrée dans un fichier script. Le Shell du système 1.3 a apporté beaucoup dans ce domaine, puisqu'il incorpore deux outils majeurs : les alias et les attributs de fichiers.

Exemples d'alias

Les alias sont des synonymes aux commandes trop longues pour être tapées aisément. En voici quelques exemples, tirés du fichier de configuration du Shell, le S:Shell-Startup :

Prompt "%N.%S> "

Change l'interrogation du système. "%N" est remplacé par le numéro du Shell en cours, "%S" par le répertoire courant.

alias xcopy copy [] clone

Les crochets [] sont remplacé par les arguments de la commande. Ainsi par exemple, xcopy df0: dh0: all est équivalent à copy df0: dh0: all clone.

alias endshell endcli

Cet alias est le plus simple que l'on puisse trouver.

alias pro execute s:spat protect[]

Crée une commande nommée "pro", qui n'est autre que la commande Protect avec possibilité de spécifier une sélection de fichiers grâce à l'utilisation du script s:spat.

alias sdate execute s:spat setdate []

De manière identique, "sdate" permet de modifier les dates de création de plusieurs fichiers à la fois.

alias ren execute s.dpat rename []

Ici encore, les alias permettent de corriger les commandes existantes, en leur ajoutant la gestion des noms de fichiers.

alias clear echo "*E[0;0H*E[J"

Ici, ce sont les paramètres complexes d'une commande qui sont inclus dans le synonyme. On utilise les caractères de contrôle du standard ANSI pour modifier le comportement des fenêtres CON:.

alias reverse echo "*E[0;0H*E[41;30m*E[J"

Il faut essayer clear, reverse et normal avant de jouer avec ces caractères de contrôle...

alias normal echo "*E[0;0H*E[40;30m*E[J"

Mes alias

Jusque-là, nous avions les alias standards de Commodore. Rien ne nous empêche bien entendu d'en ajouter quelques-uns bien de chez nous.

alias del delete
alias cys cd sys:
alias md makedir
alias ls list [] quick
alias x execute
alias xable protect [] +s
alias m execute s:spat more #?[]
allas prog newshell from s:shell-startup-prog
alias fmt sys:system/format 

"X" est une réminiscence du système 1.2 où il fallait taper la commande "execute" à chaque fois que l'on souhaitait utiliser un script. Comme on n'avait pas d'alias, j'avais dupliqué la commande c:Execute sous le nom de c:X.

"xable" est un alias indispensable à ceux qui souhaitent manipuler beaucoup de scripts. Il permet par exemple de rendre EXECUTE-able tous les fichiers d'un répertoire.

Le programme d'affichage de texte More est si pratique que je l'ai transféré dans mon tiroir C: des commandes système. Cependant, il ne comprend pas les spécifications évoluées de fichiers. Avec cet alias, je peux désormais faire "m s:#?" pour visionner agréablement tous les fichiers du répertoire S:.

"Prog" utilise un petit truc qui me permet de créer des Shells avec un jeu d'alias spécifiques. Le paramètre FROM de la commande NewShell lui permet d'exécuter les commandes contenues dans un fichier, en lieu et place de celles contenues dans le S:Shell-Startup standard.

"Fmt" et peut-être le plus beau de mes alias actuels. Il intègre un raffinement extrêmement pratique : la redirection grâce au signe inférieur "<". En effet, la commande Format, qui attend normalement l'appui sur la touche "Entrée" pour fonctionner, prend ici la suite de ses commandes depuis le gestionnaire de périphérique NIL:. Le résultat est que cette commande n'attend plus l'utilisateur. Attention. c'est également le plus sûr moyen d'écraser le contenu d'une disquette si l'on n'est pas très prudent. Notez aussi que si vous souhaitez utiliser les caractères de redirection des entrées-sorties dans un fichier script, il est impératif de mettre en tête du fichier les trois instructions suivantes :

.key dummy
.bra {
.ket }

...qui créent un argument bidon (dummy) et remplacent les délimiteurs d'arguments, habituellement "<" et ">", par "{" et "}".

Le fichier S:Shell-Startup peut se révéler d'une très grande utilité, mais il ne faut pas cependant abuser en y insérant trop de commandes AmigaDOS normales. En effet, si la commande alias, interne au Shell, est exécutée instantanément, il n'en est pas de même pour les commandes qu'AmigaDOS doit charger depuis le disque système. Comme les commandes du fichier Shell-Startup sont exécutées à chaque lancement du Shell, les utilisateurs normaux préfèrent ne pas attendre. Lorsque la passion de la programmation me prend, j'utilise la commande Prog (voir son alias plus haut) : le fichier S:Shell-Startup-prog contient toutes les instructions du fichier S:Shell-Startup normal, plus quelques commandes spécifiques à mon environnement, que voici :

cd sources         ; direction mon répertoire préféré
avail              ; une bonne habitude à prendre pour éviter
status             ; quelques plantages très désagréables...
stack 10000        ; un peu de marge pour mes utilitaires
changetaskpri 5    ; dans le cas d'une utilisation intensive
                   ; en multitâche, j'alloue toujours une forte priorité aux
                   ; processus CLI-Shell à partir desquels je travaille. Par
                   ; contre les CLI-Shell d'exécution des programmes en cours de
                   ; tests sont remis à un niveau normal de priorité (par un
                   ; CHANGETASKPRI 0). Ainsi, lorsque le programme testé boucle 
                   ; sans fin, il ne gêne absolument pas le déroulement de mon
                   ; travail.

A titre d'exercice, je vous suggère d'essayer de créer un fichier de configuration S:Shell-Startup-R récursif, dans le genre :

newshell newcon:10/10/200/100/Test from S:Shell-Startup-R

On utilise ici le gestionnaire de fenêtre-console NewCON:, plus évolué que la version précédente CON:. De plus, en spécifiant les coordonnées, on ouvre des fenêtres plus petites, ce qui permet de faire fonctionner des tests sur des Amiga dotés de seulement 512 ko de mémoire. Avant que de le lancer, vous pouvez utiliser la commande résidente "c:newcli" pour accélérer le déroulement des opérations. Tapez ensuite la commande :

execute S:Shell-Startup-R

Ou bien :

protect S:Shell-Startup-R +s
Shell-Startup-R

Ce test met en évidence deux choses : les fichiers de configuration des Shells (Shell-Startup) ne sont que des fichiers scripts, et il existe une contrainte dans AmigaDOS qui limite le nombre de processus CLI-Shell actifs (pour ceux qui ne suivent pas cette série d'articles sur leur ordinateur, la limite est 20).

Fichier gremlette

Toujours dans le domaine des fichiers scripts, Carolyn Scheppner (responsable de l'assistance développeurs Amiga aux États-Unis) a démontré qu'AmigaDOS pouvait abandonner son côté rébarbatif lorsqu'on l'utilisait pour monter une blague. Tapez le texte des deux fichiers suivants avec votre éditeur préféré (Ed ou MEmacs par exemple). Placez-vous ensuite, par la commande "cd", dans le répertoire où vous avez mis les programmes, et exécutez le fichier "Gremlette". Passez finalement le clavier de l'Amiga à votre victime (surtout si elle prétend connaître AmigaDOS). Voici le contenu du fichier "S:Grernlette", qui permet de lancer aisément le programme principal "S:Gremlin".

; Fichier Gremlette
if exists Gremlin
   Execute Gremlin
else
   if exists s:Gremlin
      Execute s:Gremlin
   end if
endif

Voici maintenant le contenu du fichier "S:Gremlin", dont les commentaires devraient vous permettre de ne pas être trop surpris lors de l'exécution.

; Fichier Gremlin
.key dummy
.bra [
.ket ]
;
Failat 30
;
Lab prom
Assign >NIL: sg{$$}: exists
If NOT Warn
Assign sg{$$}:
Else
Assign sg{$$}: Sys:
Endif

; astuce de programmation établissant une bascule :
; si le répertoire sg(numéro du cli) avait un sens, il est
; est détruit; s'il n'existe pas, il est créé.
Echo "{$$}è.RAM DISK:) " NOLINE
; affiche une chaîne de caractères qui ressemble étrangement à
; une invite de commande
Skip >NIL: ?
; la commande Skip, qui permet de sauter à une adresse dans le
; fichier script, attend de l'utilisateur cette adresse, mais
; sans lui afficher de renseignements gràce à la redirection
; vers NIL:
Lab Alias
Echo "On m'appelle le Shell du Guru"
Skip prom BACK
;
Lab Assign
Echo "Le soleil brille"
Echo "Les arbres sont verdoyants"
Echo "Les oiseaux chantent"
Echo "Avez-vous écouté pousser votre barbe aujourd'hui ?"
Skip prom BACK
;
Lab Avail
Echo "Je suis prêt à tout"
Skip prom BACK
;
Lab Cd
Echo "Vous êtes perdu *N(moi aussi)*N(où sont les secours)"
Skip prom BACK
;
Lab Date
Echo "Vendredi 1-Apr-88 00:00:00"
Skip prom BACK
;
Lab Dir
Echo "Juste quelques fichiers sans importance"
Skip prom BACK
;
Lab Endcli
Lab Endshell
Echo "Non merci. je pense rester encore un peu"
Skip prom BACK
;
Lab Failat
Echo "Je n'échoue jamais !"
Skip prom BACK
;
Echo "C'est VOTRE faute !"
Skip prom BACK
;
Lab Help
Echo "Il n'y a plus d abonné au numéro que vous avez demandé"
Skip prom BACK
;
Lab Info
Echo "Rien d'intéressant"
Skip prom BACK
;
Lab Ls
Lab List
Echo "Lait*N Oeufs*N Papier Toilette"
Skip prom BACK
;
Lab Newcli
Lab Newshell
If exists Gremlette
NewShell from Gremlette
Else
If exists s:gremlette
 NewShell from s.gremlette
Endif
Else
Echo "Non. On reste là."
Endif 
Skip prom BACK
; c'est ici que le fichier s:gremlette prend tout son sens
;
Lab Path
Echo "Je sais pas, je ne suis pas du quartier"
Skip prom BACK
;
Lab Quit
Echo "J'y suis, j'y reste"
Skip prom BACK
;
Lab Status
Echo "Moi ? Ça va bien, merci"
Skip prom BACK
;
Lab Why
Echo "Parce que"
Skip prom BACK
;
Endskip
Lab Default
Assign >NIL: sg{$$}: exists
If Warn
Echo "Pas ce soir, chéri, j'ai la migraine"
Else
Echo "Arrête, ou j'efface quelque chose"
Endif
Skip prom BACK
; voici un endroit où le balancement sur le nom sg(numéro de CLI)
; permet de fournir alternativement deux réponses différentes.

Lorsque vous aurez tapé et fait fonctionner ce programme, la fonction de chacune de ses commandes devrait vous apparaître clairement. Le but général aussi, d'ailleurs, car après tout, il ne s'agit que d'un interpréteur de commandes bidon écrit en AmigaDOS, soit en rapport avec un nom valide de commande, soit avec des réponses par défaut.


[Retour en haut] / [Retour aux articles]