Obligement - L'Amiga au maximum

Dimanche 21 octobre 2018 - 01:03  

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 - Commande MakeDir
(Article écrit par Dominique Lorre et extrait d'Amiga News Tech - mars 1990)


Parmi tous les utilisateurs d'Amiga que j'ai espionné pendant qu'ils utilisaient le CLI, la plupart d'entre eux ne connaissaient pas le quart des possibilités du Shell. Cela est surtout vrai pour les programmeurs qui ont déjà utilisé MS-DOS ou Unix, tellement la philosophie du Shell de l'Amiga est différente de celle des interpréteurs de commandes que l'on trouve sur d'autres machines. Un bon exemple de cette méconnaissance du Shell est l'utilisation de la commande "MakeDir", qui crée un répertoire. Cette commande est pratiquement inutile sous AmigaDOS alors qu'elle primordiale sous MS-DOS. La commande Copy peut créer elle-même ses répertoires pendant la copie et la commande Rename permet elle de déplacer des répertoires. La commande MakeDir n'a donc besoin d'être utilisée que pour créer des nouveaux répertoires, chose extrêmement rare en temps normal.

Exemple d'une copie sur disque dur

Pour illustrer ce que je viens de dire, supposons que l'on vous donne une disquette d'images et que vous décidiez de la recopier sur votre disque dur. La première idée qui vient à l'esprit est la création d'un répertoire "Images" puis la copie de ces images de la disquette vers le répertoire Images. Comme je l'ai précisé, la commande Copy peut s'en charger toute seule :

Copy DF0: to DH0:Images ALL

Si le répertoire Images n'existe pas, Copy le crée et ensuite copie les fichiers normalement. Supposons maintenant que l'on, vous donne une disquette contenant des musiques accompagnant ces images. Vous allez donc créer un répertoire "Musiques" de la même façon que vous avez fait pour les images. Vous vous retrouverez donc avec deux nouveaux répertoires sur votre disque dur. Pour éviter de semer la pagaille dans votre disque dur, je suppose que vous allez penser à regrouper ces deux répertoires dans un seul appelé "Présentation". Cela se fait très simplement de la façon suivante :

MakeDir Présentation
Rename Images AS Présentation/Images
Rename Musiques AS Présentation/Musiques

En tout, vous aurez tapé cinq lignes sous Shell, alors qu'un utilisateur moins expérimenté aurait certainement essayé quelque chose comme cela :

MakeDir Images Copy DF0:=? TO Images
MakeDir Musiques Copy DF0:=? TO Musiques
MakeDir Présentation
Cd Présentation
MakeDir Musiques
MakeDir Images
Copy DH0:Images/=? TO Images
Copy DH0:Musiques/=? TO Musiques
Cd DH0:
Delete Musiques/=?
Delete Images/=?
Delete Musiques
Delete Images

Ces instructions vous permettent d'en arriver au même but mais en quinze lignes. De plus, une erreur de frappe est vite arrivée, ce qui augmente d'autant plus le nombre de lignes de commandes à taper au clavier.

Historique

D'ailleurs, si vous utilisez le Shell, son historique de commandes vous permettra de ne taper entièrement que trois lignes et de modifier deux lignes :

Copy DF0:Images TO DH0:Images ALL

Après avoir lancé la commande, vous appuyez sur la touche curseur vers le haut. La ligne que vous avez tapée précédemment réapparaît. Il ne vous reste plus qu'à vous déplacer avec les touches curseurs gauche et droite, et vous servir des touches "Effacement" et "Suppression" pour changer "Images" en "Musiques". Remarquez d'ailleurs que Shift+Curseur Gauche et Shift+Curseur Droit vous permettent d'aller au début et à la fin de la ligne. Validez la ligne comme d'habitude avec "Entrée". Faites la même opération avec la commande Rename et vous n'aurez tapé effectivement que trois lignes.

Regroupement de nombreux répertoires

Cette ruse de sioux était sûrement connue de beaucoup d'entre vous. Peut-être serez-vous moins nombreux à savoir comment résoudre le problème suivant. Imaginez qu'à la place de vos deux répertoires, vous en ayez une centaine que vous désirez regrouper sous un seul. Ici même l'historique de commandes ne vous permettra pas de gagner beaucoup de temps. La bonne solution ne vous prendra pas plus de quinze secondes. La clef de l'énigme réside dans la commande List qui vous permet de générer des fichiers script automatiquement. Voici comment :

List » RAM:regroupe DIRS LFORMAT "Rename %S as Présentation/%S"
MakeDir Présentation
Execute RAM:regroupe

Et cela fonctionne ! La première commande vous permet de générer un fichier script en RAM: appelé "regroupe". Il aura la forme suivante :

Rename Images AS Présentation/Images
Rename Musiques AS Présentation/Musiques

...et contiendra une ligne pour chaque répertoire présent dans votre disque dur. Cela peut être dangereux si votre disque dur contient des répertoires du système tels que Libs, Devs, L ou S : c'est pourquoi il vaut mieux s'assurer que seuls les bons répertoires seront renommés. Un éditeur de texte peut vous permettre de résoudre ce genre de problèmes. Il faudra supprimer dans le fichier RAM:regroupe toutes les lignes concernant les répertoires qui ne doivent pas être renommés.

Utilisation de la date

Mais ce problème n'existe pas véritablement car je vais vous dévoiler une meilleure méthode qui utilise la date de création de chaque répertoire. Si vous entrez la ligne :

List DIRS

...l'ensemble des répertoires présents sur le disque dur va s'afficher avec également la date de leur création. En général, les répertoires du système ont été les premiers créés. Et la probabilité est grande pour que les répertoires que vous désirez regrouper soient les plus récents à la consultation de leur date de création. C'est ici qu'il faut utiliser le paramètre "SINCE" de la commande "List" :

List DIRS SINCE TODAY

La nouvelle liste des répertoires devrait être beaucoup plus réduite, car elle ne contient que les répertoires créés à partir d'aujourd'hui. Il est donc primordial d'avoir toujours une date système correcte sinon vous ne pourrez pas vous fier à la commande List. La commande utilisée pour générer le fichier script devient maintenant :

List » RAM:regroupe DIRS SINCE TODAY
LFORMAT "Rename %S AS Présentation/%S"

Bien que la sécurité de la commande a été améliorée, vous devriez quand même vérifier que seuls les répertoires voulus sont énumérés dans le fichier script.

Effacement multiple

La commande List permet de mettre de l'ordre dans ses fichiers tout en permettant d'éviter beaucoup de catastrophes. Prenons le cas des pilotes d'imprimantes qui se trouvent dans le répertoire Devs:printers. Comme je suppose que vous n'avez qu'une seule imprimante, la plupart des pilotes fournis ne vous servent à rien et c'est une bonne idée de les enlever. Ils sont au nombre de vingt-sept et je pense que vous avez autre chose à faire que de taper vingt-six commandes "Delete". La première solution correcte passe par l'utilisation de la commande Dir en mode interactif :

Dir Devs:printers INTER

A chaque pilote d'imprimante rencontré, la commande Dir va vous afficher son nom suivi d'un point d'interrogation :

Alphacom_AlphaPro_101?

Si vous tapez sur la touche "Entrée", le fichier sera conservé, et le suivant sera affiché. Pour le supprimer, il vous faudra entrer le mot "Del" ou "Delete" suivi d'un retour chariot. Cette commande est beaucoup plus conviviale que si vous aviez eu à utiliser Delete pour chaque fichier, mais ce n'est pas la meilleure solution.

La commande List vous permet d'arriver au même but beaucoup plus rapidement et aussi plus sûrement. Car avec Dir, on peut se tromper et supprimer le fichier que l'on voulait garder. On peut aussi oublier de supprimer un fichier que l'on voulait enlever. Dans tous les cas, cela va nous forcer à effectuer beaucoup de manipulations. Voici la commande List pour supprimer les pilote d'imprimante :

List » RAM:supprime DEVS:printers LFORMAT "Delete %S%S"

Le fichier supprimé ressemblera à :

Delete Devs:printers/Qume_LetterPro_20
Delete Devs:printers/Okidata_2931
Delete Devs:printers/EpsonQ
Delete Devs:printers/CBM_MPS1000
Delete Devs:printers/Hovvtek_Pixelmaster
Delete Devs:printers/Okidata_92

L'avantage est que jusqu'ici rien ne s'est encore passé. Un fichier script nommé RAM:supprime a été créé qui contient la liste de tous les pilotes d'imprimante. Ce qu'il nous reste à faire, c'est de modifier le fichier avec un éditeur de texte en enlevant la ligne où se trouve le pilote que nous voulons conserver, sauver le fichier et enfin le lancer avec :

Execute RAM:supprime

La commande List contient un petit piège dans le sens où un seul "%S" représente le nom du fichier seul et "%S%S" représente le chemin complet du fichier.

Exemple de copie de polices

Un autre exemple intéressant est celui où vous voulez copier toutes les polices de caractères de votre disque dur sur des disquettes. En effet, si votre disque dur contient beaucoup de polices, beaucoup de programmes refuseront de les afficher toutes. La meilleure solution est ici de formater plusieurs disquettes appelées "Fonts:" où vous copierez sur chacune un certain nombre de polices. A chaque fois que vous mettrez une disquette appelé "Fonts:" dans un lecteur, celle-ci aura la priorité sur le répertoire "Fonts:" de votre disque dur et ainsi vous pourrez accéder à n'importe quelle police à partir de n'importe quel programme. Une fois encore, nous allons utiliser la commande List :

List » RAM:ListeFontes FONTS: LFORMAT "Copy *"%S%S*" TO DF0: ALL"

Le caractère "*" permet ici d'insérer un guillemet dans le fichier script, ce qui vous sera indispensable si certaines de vos polices contiennent des espaces.

Ce qu'il vous faut maintenant, c'est trier le fichier RAM:ListeFontes pour que les fichiers ".font" se retrouvent à côté des répertoires correspondants :

Sort FROM RAM:ListeFontes TO RAM:CopieFontes

Le fichier "CopieFontes" est pratiquement prêt à l'emploi. Il vous faut maintenant le séparer en plusieurs fichiers, un pour chaque disquette utilisée, où vous ne laisserez que les lignes contenant les polices voulues. La meilleure méthode est encore d'utiliser un éditeur de texte permettant le couper/copier/coller, AZ est parfait pour cela. Si vous ne connaissez pas les opérations de bloc de votre éditeur de texte, il vous restera toujours la solution de faire plusieurs copies de ce fichier puis de supprimer des lignes différentes à chaque fois. Après avoir créé vos différents fichiers script (CopieFontes1, CopieFontes2, etc.), il ne vous reste plus qu'à formater vos disquettes :

Format DRIVE DF0: NAME Fonts NOICONS

Chacune d'entre elle ayant le même nom, et enfin exécuter vos fichiers script :

Execute RAM:CopieFontes1

Puis formatez-en une autre et exécutez CopieFontes2 et ainsi de suite.

Le mois prochain nous explorerons d'autres possibilités mystérieuses du Shell.


[Retour en haut] / [Retour aux articles]