Suivez-nous sur X

|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
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 :
...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" :
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 :
A chaque pilote d'imprimante rencontré, la commande Dir va vous afficher son nom suivi d'un point
d'interrogation :
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 :
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 :
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.
|