home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga GigaPD 3
/
Amiga_GigaPD_v3_3of3.iso
/
fred_fish
/
fish_601-700_lha
/
fish_624.lha
/
CSH
/
csh519f.lha
/
csh.doc
< prev
next >
Wrap
Text File
|
1992-02-26
|
106KB
|
2,870 lines
INSTRUCTIONS POUR C-SHELL VERSION: 5.19 Octobre 1991
====================================================
Sommaire
--------
O. Installation
I. Description
II. Vue gΘnΘrale des fonctions
III. Restrictions
IV. PIPES
V. Le PrΘprocesseur de Commandes
VI. Edition de la Ligne de Commande
VII. Touches de Fonction
VIII. Commandes du Shell
IX. Liste des Variables SpΘciales
X. Fonctions
XI. Divers
XII. Fichiers sources d'exemple
XIII. Valeurs par dΘfaut
XIV. PossibilitΘs orientΘes objet
XV. Claviers
O. Installation
----------------
Pour de l'aide en ligne α l'intΘrieur de csh, assignez CSH: quelque part et
mettez-y csh.doc. Alors, vous pouvez utiliser la commande 'man' pour toute
commande dΘsirΘe. Pressez la touche HELP pour une liste des commandes.
Vous pouvez simplement invoquer csh depuis la ligne de commande ou α la fin
de votre startup-sequence, parce que du point de vue AmigaDOS, csh n'est pas
un shell comme l:shell-seg. NΘanmoins, csh est 'pure', donc si votre
archiveur a oubliΘ le bit 'p', remettez-le maintenant.
Installation finale proposΘe: Si vous voulez rendre csh rΘsident, faites
ceci:
- Kickstart 1.3
1. Copiez csh n'importe o∙ dans votre disque(dur), par ex. dans dh1:outils
2. Soyez s√r que votre s:startup-sequence contient:
Resident CLI L:Shell-Seg SYSTEM PURE ADD
Resident dh1:outils/csh ADD
Newshell FROM s:csh-startup
Endcli
3. Mettez ceci dans s:csh-startup
Stack 8000
csh -r s:firstlogin.sh
4. Dans s:firstlogin.sh, mettez n'importe quelle commande qui doive Ωtre
appellΘe une seule fois, comme setmap, assign, setclock. C'est un script
shell, utilisez # pour les commentaires, et n'utilisez pas des commandes
du type .key. A la fin du fichier, ajoutez
source s:login.sh
5. Dans s:login.sh, vous mettez toutes les commandes qui doivent Ωtre
exΘcutΘes α chaque lancement, comme 'alias','set' et ainsi de suite.
6. Mettez ce qui suit dans s:cli-startup et s:shell-startup, ainsi csh sera
lancΘ dans toute fenΩtre ouverte par NewCli, Newshell ou depuis le
workbench.
csh s:login.sh
- Kickstart 1.3 plus un shell ARP existant:
Plus recommandΘ, parce que le shell ARP n'est pas compatible 2.0 et que
chaque invocation de csh prend 55K de mΘmoire au lieu de 30K sinon. Vous
feriez mieux d'enlever le shell ARP, peut-Ωtre en gardant certaines
commandes ARP.
- Kickstart 2.0
1. Copiez csh n'importe o∙ sur votre disque(dur), par ex. dans dh1:outils
2. Soyez s√r que s:startup-sequence contient:
Stack 8000
Resident dh1:outils/csh ADD
csh s:firstlogin.sh
3. Continuez depuis l'Θtape 4 pour kickstart 1.3
De plus, je recommande d'assigner CSH: quelque part et d'y mettre vos docs et
scripts CShell. Vous pouvez faire l'assign depuis l'intΘrieur de shell, ce
n'est pas nΘcessaire dΦs le lancement.
Le fichier s:.login est exΘcutΘ α chaque lancement s'il existe.
I. DESCRIPTION
---------------
Cette version du Shell est la suite de:
Shell V2.04 (C)Copyright 1986, Matthew Dillon, Tous Droits RΘservΘs
Shell V2.04M-V2.07M par Steve Drew
Shell V2.08MI, V3.xxA et V4.xxA par Carlo Borreo & Cesare Dieni
Shell V5.xxL par U. Dominik Mueller
Si vous avez des suggestions/critiques/rapports de bugs ou bouteilles de
biΦre, envoyez les α:
FIDONET: Urban Mueller@2:302/906 (AUGL)
INTERNET: umueller@iiic.ethz.ch
umueller@amiga.physik.unizh.ch
ou
U. Dominik. Mueller
Schulhausstrasse 83
CH-6312 Steinhausen
SWITZERLAND
Tout signe de crΘature intelligente est le bienvenu. On parle Allemand, Anglais
et Franτais.
S'il vous plaεt, vΘrifiez les paragraphes 'restrictions' avant de reporter
tout bug et ajoutez votre version de CShell et une description de votre
configuration. Le BBS de support est AUGL (2:302/906), +41 75 8 20 19,
+41 75 8 20 18, +41 75 2 15 87 (toutes lignes USRobotics HST ou V.32)
login='cshell', password='support'.
Vous pouvez distribuer ce programme non-modifiΘ et sans faire aucun profit.
*** VOUS NE DEVEZ PAS MODIFIER CE PROGRAMME ET LE REDISTRIBUER ***
S'il vous plaεt contactez moi si vous voulez faire des changements.
DISPONIBILITE
-------------
CShell peut-Ωtre constamment tΘlΘchargΘ depuis le BBS AUGL. Certaines parties
supplΘmentaires (documentation franτaise) y sont aussi disponibles.
Pour ceux qui veulent l'obtenir par requΩte de fichier FIDO, l'archive est
nommΘe 'csh515.lzh' pour CShell 5.15 et 'csh515s.lzh' pour ses sources.
Pour une requΩte de fichier FTP ou bitnet sur ab20.larc.nasa.gov [128.155.23.64],
les noms d'archives sont les mΩmes, et sont situΘes soit dans le rΘpertoire
/incoming/amiga ou dans /amiga/utils/system/cli/shells.
Vous pouvez obtenir la documentation franτaise depuis AUGL ou la commander
contre 20 Francs Franτais α:
BUGSS
4, Place de L'Aube
33170 GRADIGNAN
FRANCE
Posez toute question α berger@geocub.greco-prog.fr .
REMERCIEMENTS
-------------
Arexx est un programme de William Hawes.
Cygnus Ed Professional (C) 1988 CygnusSoft Software.
ARP est sous copyright de ses auteurs.
Merci α:
Matt Dillon, Steve Drew, Carlo Borreo et Cesare Dieni pour les versions
prΘcΘdentes de Csh.
Eddy Carroll, Gary Duncan, Randell Jesup, Steve Koren, Tim MacKenzie et
Mike Schwartz pour leurs contributions α la programation et leurs suggestions.
Michael Beer, Hubert Feyere, Magnus Heldestad, Carsten Heyl, Alex Liu, Declan
McArdle, Svante Eriksson, Luke Mewburn, Peter Orbaek, Allard Siemelink, Roddi
Walker, Shimon Weissman et le Suedois inconnu qui a trouvΘ le bug du double-LF
pour leurs rapports de bugs et leurs rΘactions.
Roy Haverman, Martin Horneffer, Hans-Christian Huerlimann, Markus Illenseer,
Daniel Pfulg, Patrizio Rusconi et Christian Schneider pour la traduction en
allemand des docs.
Olivier Berger pour la traduction en franτais de la doc.
II. VUE GENERALE
----------------
Shell fournit une interface de commande pratique alternative α AmigaDos.
Toutes ses commandes sont internes et donc il ne dΘpend pas des commandes de
c: pour fonctionner.
Les possibilitΘs majeures incluent:
-Θdition des lignes de commande programmable librement
-historique simple
-piping
-alias avec arguments
-variables & gestion des variables (variables encapsulΘes)
-expansion des noms de fichiers par motifs conventionnels ('?', '*' et
plus)
-conditionnels (if/else etc..)
-fichiers scripts (avec gotos et labels)
-complΘtion des noms de fichiers avec TAB
-spΘcificitΘs orientΘes objet (classes de fichiers, actions)
-beaucoup de commandes encapsulΘes pour accΘlΘrer les choses.
-fonctionnalitΘ complΦte sur les terminaux VT
CShell fonctionne avec une pile minimum, pour les alias rΘcursifs et les
fichiers scripts, mieux vaut augmenter la taille de la pile jusqu'α 8K ou
plus.
Si vous utilisez CShell pour la premiΦre fois, rappelez-vous ce qui suit:
-Les commandes internes CShell doivent Ωtre en minuscules et peuvent
Ωtre abrΘgΘes
-La commande 'Execute' AmigaDOS provoque des problΦmes. Vous ne
pouvez pas la rediriger, vous ne devez pas la renommer, et vous
n'obtenez aucun code de retour. Vous pouvez aussi utiliser 'source'
pour lancer vos scripts, mais vous devrez les rΘΘcrire lΘgΦrement.
En dehors des commandes de type '.key', 'source' admet une
compatibilitΘ descendante avec 'Execute'.
-Vous pouvez toujours obtenir plus d'informations sur une commande si
csh.doc est dans le rΘpertoire courant ou dans csh: (vous serez
capable de modifier ceci) et vous entrez 'man <command>'
-Le motif #? ne marche pas. Utilisez *
III. RESTRICTIONS
-----------------
Ce qui suit ne s'applique qu'α la version V36 du Kickstart 2.0: Les
commandes INTERNES ne peuvent Ωtre lancΘes. La mΩme chose est vraie pour les
commandes de C: si elles ont ΘtΘ rendues rΘsidentes en utilisant la commande
'Resident' (avec le 'resident' de cshell, elle marchent). Ainsi, vous
devez dΘsactiver les rΘsidentes INTERNES en utilisant l'option de
lancement -i0 si vous avez un Kickstart V36.
Sous 1.3, vous ne pouvez pas lancer des rΘsidents AmigaDOS directement. Mais
vous pouvez utiliser l'option de lancement -r, qui va copier une fois pour
toutes la liste de rΘsidents AmigaDOS dans la liste rΘsidente ARP (et rendre
ces rΘsidents inenlevables). Je vais essayer de trouver une meilleure
solution.
Le meilleur choix sous les deux kickstarts est de rendre seulement csh
lui-mΩme rΘsident AmigaDOS, et toutes les autres commandes, s'il y en a,
rΘsidentes ARP. Sous 1.3, vous pouvez lancer le shell (comme toutes les
autres commandes) depuis la liste rΘsidente seulement si vous avez fait
'resident CLI l:Shell-seg' et 'newcli'.
La commande c:Execute ne peut Ωtre redirigΘe, ne renvoie pas de code de
retour, et pourrait causer d'autres problΦmes. Elle ne fonctionnera pas du
tout si elle a ΘtΘ renommΘe.
Le VDK: handler et le BootRam-Handler de Frank Seidel ont un bug en fixant
les dates des fichier, aussi quand vous utilisez la commande copy vous
devez essayer les options -d et -p sinon la date de votre fichier sera
mauvaise. (ce n'est pas un bug de shell)
Si vous utilisez ce Shell avec ConMan il est prΘfΘrable de lancer le shell
avec l'option -a pour enlever les commandes d'Θdition de lignes dans le Shell
et utiliser α la place celles de ConMan. Vous perdrez, par contre, plusieurs
possibilitΘs du shell comme la complΘtion des noms de fichiers avec TAB.
CB-Handler (un outil qui installe une barre de scrolling dans la fenΩtre CLI)
n'est pas 100% compatible avec cshell. L'affichage ne reprΘsentera pas
toujours le contenu rΘel de l'Θcran.
IV. NOTES sur les PIPES
-----------------------
PIPES
Les PIPES ont ΘtΘ implΘmentΘs en utilisant des fichiers temporaires
dans T: . Ainsi vous devrez faire attention quand vous indiquerez une
extension "T:*" car cela pourrait inclure les fichiers temporaires.
Ces fichiers sont dΘtruits α la fin de l'utilisation du pipe.
Les noms de fichiers utilisΘs sont complΦtement uniques, mΩme avec
des Shells multiples fonctionnant simultanΘment.
Ma nouvelle fonction prΘfΘrΘe est le fait que vous pouvez maintenant
rediriger depuis ou vers un fichier, et piper les commandes internes.
'echo charlie >ram:x', par exemple. Autre favorite:
echo "echo mem | shell" | csh
AUCUN programme BCPL ne doit Ωtre redirigΘ en concatΘnation (>>).
V. PRE-PROCESSEUR de COMMANDES
-------------------------------
PREPROCESSEUR
Un prΘtraεtement est fait sur la ligne de commande avant de la
passer α une routine interne or externe:
^c o∙ c est un caractΦre est converti en ce caractΦre de
contr⌠le. Ainsi, mettez '^l' pour control-l.
\233 insΦre le caractΦre de code octal 233. N'utilisez pas les
valeurs entre 200o et 232o, car elles ont des significations
spΘciales. \240 est le sΘparateur de mots.
$nom o∙ nom est un nom de variable. Les noms de variables sont
soit un chiffre ou une lettre: 0-9, a-z, A-Z, et (_). Le
contenu de la variable spΘcifiΘe est utilisΘ. Si la variable
shell n'existe pas, csh essaye de trouver une variable ENV:
du mΩme nom. Si τa Θchoue aussi, "$nom" est insΘrΘe... C'est
α dire que si une variable 'i' contient 'charlie', alors
'$i' -> 'charlie'. Si la variable 'i' n'existe pas, alors
'$i'->'$i'.
; dΘlimite les commandes. ex: echo charlie ; echo ben.
' ' (un espace). Les espaces dΘlimitent les arguments.
"chaεne" une chaεne entre guillemets. Les guillemets finals sont
optionnels. Par exemple, si vous voulez un echo de 5 espaces
et un 'a':
echo a -> a
echo " a" -> a
\c annule la signification des caractΦres spΘciaux. '\^a' est
un accent circonflexe puis un a au lieu de control-a. Pour
avoir un backslash, vous devez faire '\\'.
aussi utilisΘ pour annuler la recherche par alias des
commandes.
>fichier indique une redirection de sortie. Toute sortie de la
commande est placΘe dans le fichier indiquΘ.
>>fichier indique une redirection de concatΘnation (Ne marche pas
avec un programme en BCPL).
<fichier indique une redirection d'entrΘe. La commande prend son
entrΘe dans le fichier plut⌠t qu'α partir du clavier. (NB:
toutes les commandes ne requiΦrent pas une entrΘe; τa n'a pas
de sens pour 'echo <charlie' puisque 'echo' est une commande
qui met uniquement ses arguments en sortie).
| indique un PIPE . La sortie de la commande de gauche devient
l'entrΘe de la commande de droite. L'actuelle implΘmentation
de SHELL utilise des fichiers temporaires pour mΘmoriser les
donnΘes.
!! exΘcute la prΘcΘdente commande dΘjα exΘcutΘe.
!n (n est un nombre). InsΦre la commande numΘro n dans
l'historique (voir la commande HISTORY)
!partie recherche dans la liste d'historique une commande qui
ressemble α 'partie', et l'execute.
# entre commentaires. Le reste de la ligne est effacΘ (note:
\# signifie bien s√r le caractΦre spΘcial #)
{e hi; e ho} exΘcute deux commandes en une seule, ainsi elles peuvent
Ωtre redirigΘes ensemble (voir la commande ALIAS). La derniΦre
accolade est optionnelle.
$(toto) insΦre la sortie standard de la commande 'toto' α cette
position de la ligne de commande. Toute ligne de l'affichage
sera considΘrΘe comme un argument. La parenthΦse fermante est
optionnelle.
`toto` insΦre la sortie standard de la commande 'toto' α cette
position de la ligne de commande. Toute ligne de l'affichage
sera considΘrΘe comme un argument. Les espaces au dΘbut, α la
fin ou multiples seront enlevΘs. L'accent grave α la fin
est optionnel.
Notez s'il vous plaεt la subtile diffΘrence entre
alias compte {echo un;echo deux}
alias compte "echo un;echo deux"
La premiΦre forme crΘera un alias qui contient un alias local.
L'autre crΘera un alias plein. Aussi, les trucs entre les accolades
ne seront pas interprΘtΘs plus d'une fois, ainsi un antislash n'a
pas besoin d'Ωtre prΘcΘdΘ d'une paire d'antislashs. Ainsi les
commandes sont identiques α celles tapΘes au prompt. Pour
afficher beaucoup de '#', utilisez soit:
forever {echo \#
forever "echo \\\#
Un bloc peut se dΘrouler sur plusieurs lignes. Voir la commande
SOURCE.
VI. EDITION de LIGNES de COMMANDES
----------------------------------
o La ligne de Commande peut avoir au plus 255 caractΦres.
o Les insertions et effacements sont manipulΘs correctement sur plusieurs
lignes.
o Le script 'menu.sh' installe un menu intuition qui contient la plupart
des fonctions d'Θdition
EDITION
-- DEPLACEMENT --
FlΦcheGauche Un caractΦre vers la gauche.
FlΦcheDroite Un caractΦre vers la droite.
Shift-FlΦcheGauche DΘplace le curseur d'un mot vers la gauche
Shift-FlΦcheDroite - -- -- -- -- droite
ESC-FlΦcheGauche Debut de ligne (^A) (^Z)
ESC-FlΦcheDroite Fin de ligne (^E)
-- EFFACEMENT --
Backspace (<-) CaractΦre prΘcΘdent
Del CaractΦre sous le curseur
ESC-Backspace Mot prΘcΘdent (^W)
ESC-Del Prochain mot
ESC-x-Backspace Jusqu'au dΘbut de la ligne (^B)
ESC-X-Del Jusqu'α la fin de la ligne (^K)
ESC-d La ligne entiΦre (^X)
-- HISTORIQUE --
FlΦcheHaute Rappel des commandes prΘcΘdentes
FlΦcheBasse Rappel des commandes suivantes
Shift-FlΦcheHaute Prend l'historique α partir d'un morceau (ou d'un
nombre
Shift-FlΦcheBasse Descend derriΦre la derniΦre commande de
l'historique
ESC-FlΦcheHaute DΘbut de l'historique
ESC-FlΦcheBasse Fin -- - ----------
ESC-! Prend dans l'historique α partir d'une partie ou d'un
nombre
^T InsΦre la queue (tout sauf le premier mot) de la
ligne prΘcΘdente
^P Duplique le mot prΘcΘdent (utile pour mv)
-- COMPLETION --
TAB InsΦre le premier nom de fichier qui correspond
Shift-TAB InsΦre le plus long motif commun
ESC-TAB InsΦre tous les noms de fichiers correspondants
(comme ESC-*)
ESC-c Fait un cd rapide sur le mot gauche (TAB pour cycler)
ESC-~ InsΦre le dernier rΘpertoire courant
^D Affiche tous les fichiers qui correspondent α un motif
(comme ESC-=)
-- EXECUTION DE LA LIGNE --
Return ExΘcute la ligne
ESC-Return ExΘcute cette ligne de l'historique et affiche la
prochaine
^N Prochaine ligne. N'exΘcute pas celle-ci mais la
stocke dans l'historique
^\ EOF (sort directement)
-- DIVERS --
^L RΘaffiche la ligne courante
^O Fait un echo de ^O
^R RΘpΦte la derniΦre commande (Ne jouez pas avec)
^U Undo/Redo la derniΦre Θdition
ESC-i Change Insertion/Refrappe
f1 - f10 ExΘcute la commande si la variable existe.
F1 - F10 D'autres commandes (Shift+touches de fonctions).
Help La commande help
Chaque fois que le curseur est placΘ sur ou directement aprΦs un nom de
fichier incomplet et que vous pressez TAB, CShell insΦre le premier nom de
fichier (triΘs alphabΘtiquement) qui correspond α la partie du nom dΘjα
tapΘe. N'importe quels motifs sont acceptΘs ici, si aucun n'est donnΘ, '*'
est ajoutΘ. En pressant TAB immΘdiatement aprΦs, il s'affiche le prochain
nom de fichier correspondant α la chaine entrΘe. Shift-TAB insΦrera ce qu'il
y a de plus long en commun avec tous les fichiers qui correspondent α votre
abrΘviation. S'il est pressΘ α nouveau, il se comporte juste comme TAB.
ESC-TAB insΦre le nom du rΘpertoire o∙ vous auriez terminΘ avec un cd rapide
sur cette chaεne.
Notez que ^D signifie maintenant 'quitte le fichier script' comme sous
AmigaDOS et n'est plus utilisΘ pour quitter CShell. Si vous le voulez α
nouveau, entrez 'keymap 0 4=41'
Les touches CTRL FGVY ne sont pas utilisΘes, vous Ωtes libre de leur
allouer n'importe quelle fonction (cf chapitre XV). Vous pouvez aussi
rΘaffecter toutes les touches prΘdΘfinies.
VII. TOUCHES de FONCTION
------------------------
MACROS
Maintenant, les touches de fonction insΦrent du texte α la position
du curseur dans la ligne de commande. Elles peuvent se terminer par
^M (return). f1 est non-shiftΘ alors que F1 est shiftΘ.
La plupart des touches de fonctions sont dΘfinies par dΘfaut, mais
peuvent Ωtre redΘfinies.
$ set f1 dir df0:^M
ajoutera 'dir df0:<return>' α la ligne actuelle.
$ set f1 dir
ajoute seulement 'dir' et vous pouvez entrer alors ' df0:<return>'
VIII. COMMANDES SHELL CSH
-------------------------
OPTIONS DE LANCEMENT
En premier, pour dΘmarrer le shell sous CLI
csh [-abcCfiknstv] [-c command;command]
csh [-abcCfiknstv] [fichierscript1 ... fichierscriptN]
-a mode AUX: enlΦve toutes les commandes d'Θdition de lignes et les
effets vidΘos.
-b lance le shell en background, ce qui signifie seulement une
prioritΘ de tΓche -1.
-c permet l'exΘcution d'une ligne de commandes et sort du shell.
C'est pratique pour faire marcher des commandes internes shell
dans le fond ou α partir d'une application externe . eg:
Run csh -c "dir df0:; copy -r df0: df1: >nil:; echo Done"
-C pareil que -c, mais la ligne de commande n'est pas interprΘtΘe deux
fois. Ceci autorise le passage de noms de fichiers avec des blancs α
l'intΘrieur.
run csh -C rm "Ram Disk:fichiertemp"
-f lance le shell au premier plan, ce qui signifie seulement une
prioritΘ de tΓche +1.
-i0 dΘsactive les rΘsidents INTERNES. Pour kickstart V36.
-k met _nobreak avant de faire quoi que ce soit
-n supprime le lancement de s:.login
-r copie la liste rΘsidente amiga en liste rΘsidente ARP. Vous ne
pouvez plus les enlever. Pas de copie quand on est sous Kickstart
2.0 ou si les rΘsidents ARP sont prΘsents
-s active globalement l'Θtoile '*' comme alias de #? sous AmigaDOS
2.0
-t mode terminal. Vous pouvez utiliser l'Θdition de la ligne de
commande et les effets vidΘos sur un terminal compatible VT100.
Pour Θchanger backspace et DEL, rΘfΘrez-vous α la commande 'keymap'.
-v met _verbose sur 'hs' avant de faire quoique ce soit.
Sous 1.3, la meilleure chose que vous puissiez faire est de rendre
csh rΘsident en utilisant la commande Resident AmigaDOS dans la
startup-sequence, puis le lancer avec l'option -r, ainsi vous pouvez
lancer un autre csh depuis l'intΘrieur de csh. NOTE: Les rΘsidents
copiΘs avec -r ne peuvent Ωtre enlevΘs! Je vous recommande d'utiliser
la commande resident interne pour tout sauf csh lui-mΩme.
EXECUTION DES COMMANDES
Les commandes shell internes sont sensibles aux majuscules et peuvent
Ωtre abrΘgΘes.
Le 1er argument est le nom de la commande... voici ce que Shell (dans
l'ordre) essaye d'exΘcuter:
1) la liste d'alias est parcourue pour trouver un alias dont le nom
correspond exactement.
2) la liste des commandes internes est lue pour une commande ayant
en partie le nom (ainsi vous pouvez mettre resi pour resident;
cependant, il faudra spΘcifier suffisamment pour que la commande
soit unique)
3) Puis la liste des fonctions est passΘe en revue pour trouver une
commande qui correspond entiΦrement. Si une est trouvΘe, le
rΘsultat de la fonction est affichΘ sur stdout.
4) Maintenant la commande est supposΘe Ωtre externe. Les arguments
avec des espaces, des points-virgules ou les chaεnes vides seront
entourΘs de guillemets.
5) Si le fichier est un rΘpertoire, un 'cd <fichier>' est effectuΘ
dessus.
6) Les listes residentes AmigaDOS et ARP sont lues (vous pouvez
prendre la commande resident Shell pour ajouter/enlever un
fichier dans cette liste).
7) Si le fichier est dans le rΘpertoire courant et que c'est
exΘcutable, il est lancΘ.
8) Alors il est cherchΘ dans la path AmigaDOS et dans C: (NOTE: les
assigns de chemin sur C: ne marchent pas sous 2.0; utilisez
'path')
9) Maintenant la path du shell ($_path) est testΘe. S'il est trouvΘ
et que c'est un exΘcutable, il est lancΘ. S'il a le bit 's' mis,
il sera exΘcutΘ en utilisant le shell appropriΘ. Cf SHELLS
ETRANGERS.
10) S'il existe un fichier avec le suffixe '.sh' et la mΩme racine
dans le rΘpertoire courant ou dans le path du shell, il est
'source'Θ.
11) Ensuite, la variable _rxpath est examinΘe. S'il existe un fichier
courant avec le suffixe .rexx et la mΩme racine dans le rΘpertoire
courant ou dans '$_rxpath', 'RX <fichier>' est exΘcutΘe.
12) Si tout Θchoue, une action 'exec' est envoyΘe au fichier. Voir
le chapitre XIV pour plus d'informations sur les classes et les
actions.
Pour forcer l'utilisation de la commande 'dir' externe, entrez 'Dir'.
C'est une bonne habitude de mettre en majuscules les premiΦres
lettres de toutes les commandes externes, mΩme lorsque τa n'est pas
nΘcessaire.
Un SOURCING AUTOMATIQUE peut Ωtre accompli en nommant les scripts
shell avec le suffixe .sh. Ainsi, si vous entrez 'truc' et que le
fichier 'truc.sh' existe dans votre rΘpertoire courant, ou n'importe
o∙ dans les chemins de recherche du Shell (NOTE: il ne sera pas
trouvΘ dans le path AmigaDOS), il sera exΘcutΘ (SOURCΘ) avec
n'importe quel argument mis dans la variable $_passed. C'est
Θquivalent α taper 'source truc.sh'
LES SHELLS ETRANGERS sont supportΘs α travers les codes clΘs au dΘbut
de leurs scripts. Si un fichier dans $_path a le bit-s mis, les touts
premiers octets sont lus. Si les deux premiers sont soit '#!' ou ';!',
le reste de la premiΦre ligne sera interprΘtΘ comme le nom du shell
qui est supposΘ exΘcuter le script. Si ce sont des '/*', la commande
'RX' est utilisΘe, si aucun des prΘcΘdents, 'c:Execute'.
Exemples:
#!Sksh -c source
COMPLETION PAR MOTIFS
La plupart des commandes shell acceptent des arguments multiples qui
peuvent Ωtre des rΘsultats de complΘtion par motifs (wild cards).
Aussi, lors de l'appel de commandes externes, le shell complΦtera
d'abord les motif en plusieurs arguments. Si vous souhaitez que les
commandes externes gΦrent elles-mΩmes leur motifs, vous devrez
insΘrer des guillemets autour des caractΦres spΘciaux du motif ou
utiliser un alias (cf explication de 'alias')
ex.
arc a nouveau.arc *.txt - shell complΦtera puis passera α arc
arc a nouveau.arc "*.txt" - laisse arc complΘter le motif.
alias arc "*a Arc $a" - maintenant shell ne complΦtera jamais
Motifs de complΘtion:
? indique un caractΦre seul
* indique n'importe quelle chaεne
.../* recherche rΘcursive dans TOUS les sous-rΘpertoires α partir
du niveau courant
~ exclut ce qui est indiquΘ α la suite.
! synonyme de ~, supportΘ pour compatibilitΘ
& prΘfixΘ devant un motif, demande confirmation pour chaque
fichier
[] classe de caractΦres
~ le rΘpertoire courant prΘcΘdent (si sΘparΘ)
Notez qu'un motif doit contenir un '?' ou un '*', sinon les autres
caractΦres spΘciaux ne sont pas reconnus. De plus, vous ne pouvez
pas spΘcifier un simple '?' comme motif dans le premier argument d'une
commande, car τa lui sera passΘ pour qu'elle affiche son usage.
Exemples:
df0:.../* tous les fichiers dans tous les rΘpertoires de df0:
df0:.../!*.info L'arborescence totale de df0: mais exclut
tout vilain fichier .info.
!*.o !*.c rΘsultera en TOUS les fichiers puisque ce qui
ne correspond pas α !*.o correspondra α !*.c
df1:&* tous les fichiers dans le rΘpertoire principal de
df1:, mais demande confirmation pour chacun
*.[co] tous les fichiers finissant en .c ou .o
~*.[co] tous les fichiers SAUF ceux finissant en .c ou .o
~ le prΘcΘdent rΘpertoire courant
~/*.c tous les fichiers .c dans le rΘpertoire courant
prΘcΘdent
~// le parent du rΘpertoire courant prΘcΘdent
. le rΘpertoire courant
./toto.c la mΩme chose que toto.c
.. le parent du rΘpertoire courant
../toto.c le fichier toto.c dans le rΘpertoire parent
Notez que certaines commandes empΩchent l'extension par motifs. Elles
sont :
- dir, rpn, whereis, window
Ces commandes Θtendront les motifs par elles-mΩmes. C'est pourquoi
dir @without( *.? , *.o)
ne marchera pas. A la place, utilisez:
set arg @without( *.? , *.o );dir $arg
Il y a une exception aux rΦgles donnΘes ci-dessus: un simple ? comme
premier argument N'Θtendra PAS de faτon α vous permettre d'obtenir
l'usage des commandes CLI et csh facilement.
Les symboles suivants ne sont cependant pas acceptΘs par les
complΘtions par motifs, mais sont acceptΘs par search -w et @match( ):
( | ) OU pour la complΘtion
# 0 ou plusieurs fois le motif qui suit
Exemples:
"k#a" indique ka, kaa, kaaa, etc.
"hel(lo|p)" indique hello ou help.
LISTE des COMMANDES:
--------------------
ABORTLINE
Usage : abortline
Exemple : echo a;abort;echo b
Resultat: a
Oblige le reste de la ligne α Ωtre enlevΘ. CrΘΘe pour servir en
conjonction avec la gestion d'exceptions.
ACTION
Usage : action [-a] nomaction fichier [arguments]
Exemple : action extr csh516.lzh csh.doc
Envoie une action α un fichier. Voir le chapitre XIV CLASSES
Options:
-a (abort) retourne 0 si τa a ΘchouΘ et 1 si τa a marchΘ. Sinon,
les codes d'erreurs normaux (10 ou 11) sont retournΘs
ADDBUFFERS
Usage : addbuffers drive buffers [drive buffers ...]
Exemple : addbuffers df0: 24
Comme Addbuffer de AmigaDOS, associe de nouveaux buffers d' E/S au
disk. Chaque buffer prend 512 octets de mΘmoire, mΘmoire CHIP si
c'est un lecteur de disquettes.
ALIAS
Usage : alias [nom [chaine de la commande] ]
Exemple : alias vt "echo Lance VT100;run sys:outils/vt100"
DΘfinit un nom qui reprΘsente toute une chaεne. Vous pouvez faire un
alias d'un jeu de commandes sur un seul mot si vous les mettez entre
guillemets. En tapant vt, tout simplement, la ligne de commande ci
dessus serait exΘcutΘe.
Les Alias pourraient s'appeler mutuellement, mais la rΘcursivitΘ
directe est prohibΘe, ainsi ce qui suit marche: alias ls "ls -s"
Pour empΩcher le remplacement par un alias, entrez: \ls
En tapant "alias nom", vous obtiendrez l'alias pour ce nom, alors
qu'avec "alias" vous obtiendrez une liste de tous les alias.
ARGUMENT PASSES A UN ALIAS:
Usage : alias nom "%var[%var...] [ chaεne de commande ]"
alias nom "*var[%var...] [ chaεne de commande ]"
Exemple : alias xx "%q%w echo Salut $q, t'as l'air $w
xx Steve en forme
Results : Salut Steve, t'as l'air en forme
La seconde forme de la commande alias permet de passer des arguments
α n'importe quel endroit dans la chaεne de commande via l'utilisation
d'un nom de variable. Pour passer des arguments α la fin de la chaεne
de commande, cette mΘthode n'est en fait pas nΘcessaire. Ces
variables sont locales, aussi elles ne dΘtruisent pas une autre
variable avec le mΩme nom.
Si vous spΘcifiez des arguments multiples, on assigne α chaque
argument un mot, et le dernier argument recevra le reste de la ligne
de commande.
Utiliser un '*' au lieu du premier % empΩche l'expansion des motifs:
alias zoo *a zoo $a
Pour Θtendre les motifs aprΦs que vous les ayez eus, utilisez
exec set a $a
ALIAS IMPLICITE:
Usage : {commande;commande}
{%var commande;commande} arg arg
Exemple : {%tmp echo $tmp $tmp} bonjour --> bonjour bonjour
Les accolades dΘfinissent des alias temporaires. Ils peuvent Ωtre
redirigΘs comme un tout, peuvent avoir des arguments et des variables
locales. Ils comptent comme un argument, mΩme si il y a des blancs α
l'intΘrieur (comme avec les guillemets), et peuvent Ωtre entremΩlΘs.
Des dΘfinitions d'alias complexes peuvent utiliser les accolades au
lieu des guillemets, bien que ceci ajoute un surplus de travail.
L'accolade fermante est optionnelle si elle est α la fin de la ligne.
Exemple:
alias assertion {e "Etes vous s√r? ";input -s sur
ASCII
Usage : ascii
ascii chaεne
Si appelΘ sans arguments, ascii affiche une table ASCII complΦte.
Si on lui donne une chaεne, montre chaque caractΦre en ASCII.
Options:
-h montre les nombres en hexadΘcimal
-o montre les nombres en octal
ASET
Usage : aset nom valeur
Exemple : aset INCLUDE include:
Initialise une variable d'une faτon qui est compatible avec la
commande ARP/vieille commande set Aztec; c'est complΦtement diffΘrent
d'une variable Shell ENV:. C'est obsolΦte. Utilisez plut⌠t setenv.
ASSIGN
Usage : assign
assign logique
assign [-lnp] logique1 physique1 [logique2 physique2 ... ]
La premiΦre forme montre tous les assigns.
La seconde forme dΘtruit un assign.
La troisiΦme forme assigne logique1 α physique1 et ainsi de suite.
Options:
-l crΘe un assign late-binding sous kick 2.0, normal sinon
-n crΘe un assign non-binding sous kick 2.0, normal sinon
-p crΘe un assign de chemin sous kick 2.0, ignorΘ sinon
Pour une dΘfinition de late/nonbinding, rΘfΘrez vous α votre manuel
AmigaDOS.
BASENAME
Usage : basename var chemin [chemin ...]
Exemple : basename x df0:c/Dir # met "Dir" dans x
Met les noms de base des chemins dans la variable spΘcifiΘe.
CAT
Usage : cat [-n][fichier fichier....]
Exemple : cat toto.txt
Affiche α l'Θcran les fichiers spΘcifiΘs. Si aucun fichier n'est
indiquΘ, STDIN est utilisΘ (note: ^\ est EOF). CAT est fait pour
afficher seulement les fichiers texte. L'option -n numΘrote toutes
les lignes de l'affichage.
CD
Usage : cd [chemin]
cd -g unitΘ1 [unitΘ2 [unitΘ3 ...]]
Change votre rΘpertoire de travail courant. Vous pouvez indiquer '..'
pour revenir au rΘpertoire au-dessus (c'est une fonction spΘcifique
de CD, qui ne marche pas avec les spΘcifications de chemin normales).
Dans la plupart des cas vous n'aurez plus besoin d'utiliser la
commande CD. Tapez juste le rΘpertoire dΘsirΘ au prompt (trΦs
pratique en conjonction avec la complΘtion des noms de fichiers).
Taper un ~ seul sur la ligne de commande fait un cd sur le
rΘpertoire courant prΘcΘdent.
Il y a deux situations dans lesquelles vous en aurez encore besoin:
Entrer 'cd *tem' fera un cd dans le premier nom qui corresponde.
La seconde forme gΘnΦre une liste (un fichier ASCII) de tous les
rΘpertoires dans les unitΘs donnΘes. Elle sera stockΘe dans le
fichier donnΘ dans $_qcd (par defaut: 'csh:csh-qcd'). Notez que ce
fichier ASCII ne sera pas concatΘnΘ mais rΘΘcrit. Une fois que vous
avez gΘnΘrΘ ce fichier, vous pouvez faire un cd vers n'importe quel
rΘpertoire sur votre disque dur mΩme s'il n'est pas dans votre
rΘpertoire courant.
Si vous avez deux rΘpertoires avec le mΩme nom et que vous utilisez
l'un plus que l'autre, dΘplacez le plus important au dΘbut de votre
fichier qcd. Vous pourriez aussi trier le fichier.
C'est lΘgal de ne taper qu'une abbrΘviation du rΘpertoire dans lequel
vous souhaitez faire un cd. Aucune astΘrisque n'est nΘcessaire. Si
vous arrivez dans le mauvais rΘpertoire, cd vers le mΩme rΘpertoire
α nouveau (mieux vaut le faire avec curseur haut + RETURN). Vous
allez cycler α travers tous les rΘpertoires qui correspondaient α
l'abrΘviation donnΘe. L'autre possibilitΘ est de spΘcifier le nom
complet du rΘpertoire parent: cd devs/keym
Vous pourriez aussi ajouter des unitΘs et des assigns, ainsi si
'Pagestream:' est une ligne dans le fichier qcd, un cd vers 'page'
rΘussit.
CD sans aucun argument affiche le chemin du rΘpertoire o∙ vous Ωtes
actuellement.
CLASS
Usage : [-n] nom {type=param} [ "actions" {action=commande} ]
Exemple : class zoo offs=20,dca7c4fd ext=.zoo actions view="zoo l"
DΘfinit une nouvelle classe de fichiers et les actions α faire dessus
dans diffΘrents cas, ou montre les anciennes dΘfinitions si on ne lui
donne pas d'arguments.
Cf section XIV: OBJECTS
Options:
-n (new) oublie les anciennes dΘfinitions
CLOSE
Usage : close [numΘrofichier]
Ferme le fichier indiquΘ ouvert par open. Sans numΘro de fichier,
ferme tous les fichiers ouverts. Voir open et flist pour plus d'info.
CLS
Usage : cls
Ceci est un alias. Il efface juste l'Θcran, mais marche aussi sur
un terminal (echo ^L ne le fait pas).
COPY
Usage : copy [-udfqpmo] fichier fichier
ou : copy [-udfqpmo] fichier1 fichier2...fichierN dir
ou : copy [-rudfqpo] dir1...dirN fichier1...fichierN dir
Options :
-r rΘcursif, copie aussi tous les sous-rΘpertoires.
-u update, si une version plus rΘcente existe en dest, ne fait pas
la copie.
-f raffraεchir, si le fichier n'existe pas en dest ou est plus rΘcent,
ne pas copier.
-q supprime les messages 'not newer' et 'not there' dans -u et -f
-d ne met pas dans la date du fichier destination celle du fichier
source.
-p ne met pas les bits de protection du fichier source dans la
destination.
-m efface l'original. ne fonctionne pas avec -r
-o rΘΘcrit sur les protΘgΘs en Θcriture/effacement, lit les protΘgΘs
en lecture
Exemple : copy -r df0: df1:
Copie les fichiers ou rΘpertoires. Lors de la copie de rΘpertoires,
l'option -r doit Ωtre mise pour copier aussi les sous-rΘpertoires.
Autrement, seuls les fichiers du haut du rΘpertoire source seront
copiΘs.
Tous les fichiers sont affichΘs alors qu'ils sont copiΘs et les
rΘpertoires affichΘs lorsqu'ils sont crΘΘs. Cette sortie peut Ωtre
supprimΘe en redirigeant vers nil: ex. copy -r >nil: df0: df1:
Copy s'arrΩte aprΦs le fichier en cours si on tape Control-C.
Copy met par dΘfaut comme date du fichier destination celle du
fichier source. Pour Θviter ceci utiliser le switch -d .
De faτon similaire, il met les bits de protection (flags) comme ceux
du fichier source et tous les commentaires sont copiΘs.
Une autre option pratique est -u (update) qui n'effectue pas la copie
d'un fichier dΘjα existant dans le rΘpertoire destination si le
fichier destination est plus rΘcent ou Θgal au fichier source. C'est
trΦs pratique lorsqu'on programme, disons en ram:, ex: 'copy *.c
ram:', et quand c'est fait vous tapez 'copy -u ram: df1:' et seuls
les modules que vous avez modifiΘs seront recopiΘs.
La commande Copy crΘe maintenant le rΘpertoire destination s'il
n'existe pas lorsqu'il est spΘcifiΘ par 'copy [-r] rΘpertoire
rΘpertoire'. Si vous mettez 'copy fichier fichier fichier rep', alors
'rep' doit dΘjα exister .
CP
Equivalent α copy.
DATE
Usage : date [-sr] [nouvelle date et/ou heure]
Exemple : date Wednesday # ceci donne mercredi PROCHAIN, bien s√r
UtilisΘ pour lire ou mettre la date/heure systΦme α jour. Toutes les
options standard peuvent Ωtre utilisΘes (yesterday, tomorrow, monday,
etc.).
Les zΘros au devant ne sont pas nΘcessaires.
Sans paramΦtres affichera JJ-MMM-AA HH:MM:SS.
Options:
-s stocke l'heure courante
-r affiche l'heure relative α la derniΦre stockΘe en secondes et
centiΦmes
DEC
Usage : dec nomvar [valeur]
Exemple : dec abc
DΘcrΘmente l'Θquivalent numΘrique de la variable de la valeur
spΘcifiΘe (dΘfaut: 1) et place le rΘsultat en chaεne-ASCII dans
cette variable.
DELETE (RM)
Usage : delete [-p][-r] fichier fichier fichier...
Exemple : delete toto.txt test.c
Efface (delete) les fichiers indiquΘs. Delete retourne toujours le
code d'erreur 0. Vous pouvez enlever des rΘpertoires vides. L'option
'-r' effacera rΘcursivement les rΘpertoires non vides en effacant
tous les sous-rΘpertoires.
Vous pouvez enlever les fichiers protΘgΘs contre l'effacement en
spΘcifiant l'option -p. Si vous indiquez un motif (wildcard), les
fichiers seront listΘs lorsqu'ils seront dΘtruits. Ca peut Ωtre
supprimΘ en redirigeant vers nil:. Si vous spΘcifiez -q, aucun message
d'erreur ne sera affichΘ si le fichier α effacer n'existait pas ou ne
pouvait pas Ωtre effacΘ.
DIR
Usage : dir [-abcdfhiklnoqstuv] [-z lformat] [chemin chemin ... ]
Exemple : dir -ts df0:
dir -lz "%7s %-.16n %m" *.c
Options :
-d affiche seulement les rΘpertoires
-f affiche seulement les fichiers
-h affiche seulement les fichiers qui ne commencent pas par un
point, ne finissent pas par '.info' ou n'ont pas le bit h mis.
Ajoute un bit 'i' aux flags qui signale si un fichier .info
correspondant existe.
-s affichage court en multi(4) colonne.
-c ne change pas la couleur pour les sous-rΘpertoires.
-q affichage rΘduit: n'affiche pas la longueur en blocs.
-o affiche les commentaires sur les fichiers.
-n affiche seulement les noms.
-p affiche les noms de fichiers complets et supprime les noms de
rΘpertoires
-a affiche l'age de chaque fichier dans le format
jours heures:minutes
-i identifie chaque fichier, affiche le type au lieu de la date.
Cf chapitre XIV CLASSES
-v (viewdir) additionne rΘcursivement la longueur des fichiers dans
un rΘpertoire.
-l classe les fichiers par longueur, le plus long en premier.
-t classe les fichiers par la date, le plus rΘcent d'abord.
-k trie les fichiers par leur classe
-b trie les fichiers α l'envers.
-g affiche les rΘpertoires au dΘbut
-e affiche les rΘpertoires α la fin
-u on doit lui donner exactement deux rΘpertoires. Affiche les
fichiers seulement dans le premier rΘpertoire, les fichiers dans
les deux, et les fichiers dans le second.
-z format custom
Affiche un rΘpertoire des fichiers indiquΘs. L'affichage par dΘfaut
montre les date, protection, taille en blocks, taille en octets et
l'espace total occupΘ. Les flags de protection incluent les nouveaux
flags 1.2/1.3 (voir α protect), plus un flag 'c' qui indique si le
fichier a un commentaire. Les fichiers sont rangΘs dans l'ordre
alphabΘtique, sans tenir compte des majuscules, et les rΘpertoires
sont en couleur rouge (sauf si vous mettez -c). Dir prend en compte
la largeur de votre fenΩtre.
La chaεne lformat est utilisΘe pour crΘer votre propre format de
rΘpertoire. Cela remplace tout le reste et peut contenir les codes
suivants:
%a age %p nom avec chemin
%b taille en blocs %q nom avec slash
%c flag c (commentaires) %r taille en anglais
%d date %s taille
%e flag i (.info) %+ flag i comme '+' ou ' '
%f flags hsparwed %t heure
%i flag d (dIr) %u taille en Ko
%k class %v taille du rΘpertoire en anglais
%l LF dans les commentaires %w taille du rΘpertoire en Ko
%m multi colonnes %x date traduite
%n nom
%o filenote (commentaire)
Entre le '%' et la lettre d'identification, il pourrait y avoir un
champ de largeur optionnel. Si le nombre est prΘcΘdΘ par un '-', le
contenu du champ sera ajustΘ α gauche. Si α c⌠tΘ d'un point, le
contenu sera raccourci pour convenir α la largeur du champ s'il est
trop large.
Si la chaεne de format contient un %m, cshell essaiera d'imprimer
plus d'une entrΘe par ligne. La largeur en colonnes est la largeur
du champ de l'entrΘe %m. S'il est omis, on prend la largeur du
premier fichier. Si un fichier est plus long, il utilisera deux
colonnes.
DISKCHANGE
Usage : diskchange drive
Comme DiskChange de AmigaDOS.
ECHO
Usage : echo [-en] chaεne
Exemple : echo salut tout le monde
Resultat : salut tout le monde
Affiche la chaεne donnΘe. Sans l'option -n un retour chariot
est ajoutΘ. Si -e est mis, affiche sur stderr.
ELSE
Usage : else ; commande
Usage : if -f toto.c ; else ; echo "Pas ici" ; endif
La clause else, doit suivre un test par IF.
ENDIF
Usage : endif
La fin de la commande if.
Note: si vous revenez d'un fichier script avec des IF non terminΘs,
et que le dernier IF Θtait faux, le prompt sera remplacΘ par un
underscore '_' et aucune commande ne sera exΘcutΘe tant que 'endif'
ne sera pas tapΘ.
ERROR
Usage : error n
GΘnΦre un code de retour n.
EXEC
Usage : exec [-i] command [args]
Exemple : set lignecmd "dir ram:"
exec $lignecmd # ne marcherait pas sans exec
Execute la commande indiquΘe; exec commande est Θquivalent α commande
sauf que vous pouvez utiliser des variables pour spΘcifier le nom de
la commande.
Notez que la ligne de commande est interprΘtΘe deux fois! Exemples:
set a dir ram:; exec $a # juste
set a mkdir; exec $a "Mon rΘpertoire" # faux! crΘe deux rΘpertoires
Exec retourne le code de retour de la commande exΘcutΘe α moins que
l'option -i (ignore) ne soit mise, auquel cas 0 est toujours retournΘ.
FAULT
Usage : fault erreur1 .. erreurN
Exemple : fault 205 212
Comme le fault AmigaDOS, imprime les messages d'erreurs spΘcifiΘs.
FILENOTE
Usage : filenote fichier1 .. fichierN note
filenote -s fichier1 .. fichierN
Dans la premiΦre forme, met un commentaire AmigaDOS au fichier
spΘcifiΘ. La seconde forme affiche les commentaires des fichiers.
FLIST
Usage : flist
Liste les numΘros de fichiers ouverts par open.
Voir open et close pour plus d'info.
FLTLOWER
Usage : fltlower
Exemple : dir | fltlower
ou : fltlower <readme
C'est une commande filtre; i.e. elle lit dans stdin et Θcrit dans
stdout. La maniΦre la plus naturelle de l'utiliser est un pipe, ou
elle peut Ωtre redirigΘe.
Son propos est de convertir tous les caractΦres alphabΘtiques en
minuscules.
FLTUPPER
Ibid. fltlower, sauf qu'il convertit en majuscules.
FOREACH
Usage : foreach [-v] varnom ( chaεnes ) commande
Exemple : foreach i ( a b c d ) "echo -n $i;echo \" ha\""
Resultat: a ha
b ha
c ha
d ha
'chaεnes' est rΘparti en arguments. Chaque argument est placΘ α son
tour dans une variable locale 'varnom' et 'commande' est exΘcutΘ. Placez
les commandes entre guillemets.
Foreach est trΦs pratique pour interprΘter des arguments passΘs dans
un alias.
ex.
foreach i ( *.pic ) viewilbm $i
en supposant que a.pic et b.pic sont dans le rΘpertoire actuel, les
commandes suivantes seront exΘcutΘes:
viewilbm a.pic
viewilbm b.pic
Le flag -v oblige l'affichage des arguments chaque fois que commande
est exΘcutΘe. Toutes les commandes 'for...' peuvent Ωtre interrompues
avec CTRL-D.
FOREVER
Usage : forever commande
ou : forever "commande;commande;commande..."
Les commandes indiquΘes sont exΘcutΘes encore et encore sans fin.
L'exΘcution est arrΩtΘe si vous tapez ^C ou ^D, ou si les commandes
retournent un code d'erreur.
FORLINE
Usage : forline var nomfichier commande
ou : forline var nomfichier "commande;commande..."
Exemple : forline i RAM:temp "echo line $_linenum=$i"
Pour chaque ligne ASCII du fichier, les commandes indiquΘes sont
exΘcutΘes et var pointe sur le contenu de la ligne.
Vous pouvez tester la variable '_linenum' pour trouver le numΘro
de la ligne actuellement lue.
Si STDIN (en majuscules) est spΘcifiΘ comme fichier d'entrΘe, les
lignes sont lues sur l'entrΘe standard.
FORNUM
Usage : fornum [-v] var n1 n2 commande
ou : fornum [-v] -s var n1 n2 pas commande
Exemple : fornum -v x 1 10 echo $x
ou : fornum -s x 10 1 -1 echo $x # compte α rebours
ExΘcute les commandes pour toutes les valeurs numΘriques de x entre
n1 et n2. Si plus d'une commande est indiquΘe, ou si elle est
redirigΘe, mettez les commandes entre guillemets.
L'option -v (verbose) imprime les nombres progressivement.
Option -s vous permet de spΘcifier un pas; si c'est nΘgatif, on
compte α rebours.
GETENV
Usage : getenv [varshell] varenv
Prend la valeur d'une variable ARP ou ENV: (la liste ARP est vΘrifiΘe
en premier) et la stocke dans la variable shell 'varshell'. Si
varshell est omise, la valeur de la variable ENV: est affichΘe α l'
Θcran.
GOTO
Usage : goto Θtiquette
Exemple :
label debut
echo "Au dΘbut"
dir ram:
goto debut
Va au nom de l'Θtiquette (label) indiquΘe. Vous ne pouvez utiliser
cette commande que dans un fichier script. Les Θtiquettes peuvent
Ωtre avant ou aprΦs la position courante. Il est autorisΘ de sauter
au dehors des if.
HEAD
Usage : head nomfichier [num]
Exemple : head readme 20
Affiche les "num" premiΦres lignes de "nomfichier". Si num n'est pas
spΘcifiΘ, on prend 10 par dΘfaut.
HELP
Usage : help
Exemple : help
Affiche simplement toutes les commandes disponibles. Les commandes
sont affichΘes dans l'ordre de recherche. Donc si vous donnez un nom
partiel, la 1Φre commande qui correspond α ce nom dans la liste sera
exΘcutΘe. GΘnΘralement, vous devrez spΘcifier suffisamment du nom
d'une commande pour que ce soit complΦtement unique.
HISTORY
Usage : history [-nr] [chaεne_partielle]
Exemple : history
Options :
-n ne numΘrote pas les lignes
-r lit l'historique depuis stdin
Affiche l'historique des actions passΘes dans le Shell. La taille de
la liste est controlΘe par la variable _history. Si vous spΘcifiez
une chaεne partielle, seules les actions correspondant α cette chaεne
seront affichΘes.
HOWMANY
Usage : howmany
Cette commande vous dit combien de Shells fonctionnent dans votre
systΦme.
HTYPE
Usage : htype [-r] fichier1 .. fichiern
Affiche les fichiers nommΘs en hex et ASCII, comme la commande
systΦme 'Type fichier opt h'. TrΦs intΘressant pour les fichiers
binaires. Si -r est spΘcifiΘ, htype affiche tous les fichiers dans un
rΘpertoire.
IF
Usage : if [-n] argument conditionnel argument ;
ou : if [-n] argument
ou : if [-n] -f fichier
ou : if [-n] -d fichier/rΘpertoire
ou : if [-n] -m
ou : if [-n] -t fichier fichier1 .. fichierN
ou : if [-n] -r rpnexpression
ou : if [-n] -v nomvar
ou : if [-n] -o car arg ... arg
Si (if) un seul argument est quelque chose pour un autre argument.
Les clauses conditionnelles suivantes sont permises:
<, >, =, et combinaisons. Ainsi <> est non-Θgal, >=
plus grand ou Θgal , etc...
Si les arguments sont non-numΘriques, ils sont testΘs comme chaεnes.
D'habitude c'est soit une constante soit une variable ($nomvar).
La 2eme forme de IF traite de l'existence de l'argument.
Si l'argument est une chaεne "", alors FAUX, sinon VRAI.
La 3eme forme de IF avec l'option -f traite de l'existence du fichier
indiquΘ.
L'option -d teste le type de l'object indiquΘ: si c'est un rΘpertoire,
alors VRAI; si c'est un fichier (ou inexistant) alors FAUX.
L'option -m teste si la mΘmoire FAST est prΘsente.
Exemple (qui doit Ωtre mis dans un fichier login.sh):
if -m; resident -d lc1 lc2 blink; endif
L'option -t compare la date et l'heure du 1er fichier avec toutes les
autres; si le 1er est plus jeune que TOUS les autres, alors FAUX,
sinon VRAI. Si un fichier n'existe pas, il est considΘrΘ comme
Θtant plus vieux.
Cette option est trΦs pratique pour faire des makefiles sans aucune
utilisation de MAKE.
Exemple:
if -t test.o test.asm test.i ; asm -o test.o test.asm ; endif
L'option -r Θvalue une expression RPN donnΘe (voir RPN pour info): si
la valeur sur le sommet de la pile est 0, alors FAUX, sinon VRAI.
L'option -o teste l'option 'car' dans le reste des arguments.
Exemple: if -o r -rp ram:comm1.c signifiera TRUE.
L'option -n (NON) inverse le rΘsultat.
Pour voir si une variable est dΘfinie, utilisez if -v nomvariable.
Quand vous utilisez la commande 'IF' de faτon interactive, et si
vous entrez des commandes aprΦs un 'IF' donnant FAUX, le prompt sera
remplacΘ par un underscore '_' indiquant que toutes les commandes
seront ignorΘes jusqu'α ce qu'un 'ELSE' ou un 'ENDIF' soit rencontrΘ.
INC
Usage : inc variable [valeur]
Exemple : inc abc 5
IncrΘmente l'Θquivalent numΘrique de la variable de la valeur
indiquΘe (par dΘfaut: 1) et replace le rΘsultat chaεne-ASCII dans
cette variable.
INFO
Usage : info [path1 path2 ... pathN]
Si elle est appelΘe sans arguments, info affiche des statistiques sur
toutes les unitΘs de type disque dans le systΦme (DFk:, HDk:, JHk:,
RAM:, RDk: ...). Si un ou plusieurs chemins sont indiquΘs, seule l'
information concernant ces unitΘs sera affichΘe.
INPUT
Usage : input [-s] var var ... var
Exemple : input abc
Envoie l'entrΘe sur STDIN (ou une redirection, ou un pipe) vers une
variable. La ligne suivante de la saisie est sΘparΘe en mots (α moins
qu'elle ne soit entre guillemets) et placΘe dans la variable. Si -s
est mis, la ligne entiΦre est lue comme un seul mot, en incluant les
espaces. -r met la console sur un mode caractΦre par caractΦre avant
de lire (i.e. n'attend pas que RETURN soit appuyΘ). Utilisez ceci avec
prΘcautions.
JOIN
Usage : join [-r] fichier1..fichierN fichierdest
Exemple : join part1 part2 part3 total
ConcatΦne les fichiers indiquΘs pour obtenir fichierdest. Si le
fichier de destination existe dΘjα, un message d'erreur est envoyΘ et
l'operation est stoppΘe, α moins que vous ne mettiez l'option -r
(remplacer).
KEYMAP
Usage : keymap [number {touche=fonction}]
Exemple : keymap 0 1030=4 1032=12
DΘfinit un clavier pour l'Θdition de la ligne de commande de csh.
Cf chapitre XV.
LABEL
Usage : label nom
CrΘe une Θtiquette du programme α cet endroit. UtilisΘ dans les
fichiers scripts, permet de faire un GOTO vers l'Θtiquette.
LINECNT
Un autre filtre. Compte le nombre de lignes sur son entrΘe standard
et Θcrit sur stdout.
LOCAL
Usage: local [var...var]
CrΘe une ou plusieurs variables locales. Ces variables disparaissent
α la fin de leur alias ou de leur fichier script, et ne peuvent pas
Ωtre utilisΘes de l'intΘrieur d'autres alias ou fichiers scripts.
Sans arguments, affiche toutes les variables globales et leurs
valeurs.
LS
Equivalent α dir.
MD
Equivalent α mkdir.
MAN
Usage : man commande(s)
Exemple : man mkdir
Prend des infos sur une commande shell, ou d'autres mots clΘs. Ceci
inclut toutes les _variables spΘciales, plus divers mots-clΘs:
COMPLETION, PIPES, EDITION, OPTIONS et plus.
Voyez la liste spΘciale d'alias du manuel pour avoir une liste de
tous les mots clΘs supportΘs par man.
Vous devez faire pointer _man sur le chemin de vos fichiers .doc:
set _man dh1:docs/aliases.doc dh1:docs/csh.doc
Pour crΘer vos propres fichiers.doc, prΘcΘdez tous vos mots-clΘs par
quatre blancs. 'man' affichera alors les lignes jusqu'α ce que le
premier caractΦre d'une ligne soit alphanumΘrique ou qu'on ait quatre
espaces en premier.
MEM
Usage : mem [-cfqu]
Options:
-c affiche seulement la mΘmoire chip disponible
-f affiche seulement la mΘmoire fast disponible
-q sort juste un nombre sans les titres
-s enregistre la mΘmoire libre actuellement
-r affiche la mΘmoire utilisΘe par rapport au dernier
enregistrement
-l libΦre toute la mΘmoire non utilisΘe
MENU
Usage : menu [-n] [ titre objet...objet ]
Exemple : menu Shell JrComm,,j Rename,"rename ",r quit
Ajoute un menu α la fenΩtre de console courante. Jusqu'α six menus
de 16 objets chacun peuvent Ωtre installΘs.
Si l'objet est juste une chaεne, cette chaεne sera dans l'entrΘe du
menu. Quand vous le sΘlectionnez, il sera mis au prompt et exΘcutΘ.
S'il y a une virgule et aprΦs cette virgule une seconde chaεne, ce
sera la comande qui sera insΘrΘe au prompt. Cette fois, vous aurez α
ajouter le ^M par vous-mΩme si vous voulez que la commande soit
exΘcutΘe.
S'il y a une seconde virgule , la lettre aprΦs cette virgule sera le
raccourci clavier de cet objet de menu. (Il sera un jour sensible aux
majuscules, utilisez des minuscules).
Si pour une raison quelconque votre menu courant est endommagΘ,
entrez juste une commande 'menu' vide.
Pour enlever tous les menus exeistants utilisez l'option -n.
MKDIR
Usage : mkdir nom nom nom...
Exemple : mkdir df0:truc
CrΘe les rΘpertoires indiquΘs.
MV
Equivalent α rename.
OPEN
Usage : open nomfichier modefichier numΘrofichier
Exemple : open RAM:data w 1
Ceci vous permet d'ouvrir un fichier, rediriger vers ce fichier
autant de commandes que vous voulez, puis le fermer.
nomfichier est n'importe quel nom de fichier AmigaDOS valide,
modefichier est soit "r" pour read (lecture) ou "w" pour write
(Θcriture), numΘrofichier est un nombre entre 1 et 10. Pour rediriger
un programme vers ou depuis un fichier ouvert, utilisez comme nom de
fichier de redirection un point suivi du numΘro de fichier
Voici un exemple complet :
open RAM:data w 1
echo -n 2+2= >.1
rpn 2 2 + . CR >.1
close 1
type RAM:data # affichera 2+2=4
Voir aussi close, flist.
PATH
Usage : path [-r] [dir...dir]
Sans argument, liste les chemins (path) AmigaDOS. Sinon ajoute au
path les rΘpertoires donnΘs, en empΩchant les entrΘes doubles.
Options:
-r RΘinitialise le path
PRI
Usage : pri numero-cli pri
Exemple : pri 3 5 # met la prioritΘ du cli n░3 α 5
Change la prioritΘ de la tΓche indiquΘe (utilisez la commande PS pour
dΘterminer le numero-cli ). Si vous indiquez 0 comme numero-cli vous
changez la prioritΘ de la tΓche actuelle (celle exΘcutant le shell).
PROTECT
Usage : protect fichier1 ... fichiern [+|-|=][flags]
Exemple : protect fichieruntel +rwe
Met les flags de protection AMIGADOS pour le fichier indiquΘ.
Les flags utilisΘs sont h, s, p, a, r, w, e, d. Modes:
+ Met les bits spΘcifiΘs, laisse les autres
- Annule les bits spΘcifiΘs, laisse les autres
= Met les bits spΘcifiΘs, en effaτant tous les autres
Si vous ne spΘcifiez pas le mode, on prend '=' par dΘfaut. Le bit
archive est effacΘ par dΘfaut.
PS
Usage : ps [nomcommande...nomcommande]
Indique l'Θtat des processus CLI. ex:
Proc Command Name CLI Type Pri. Address Directory
* 1 csh Initial CLI 0 97b0 Stuff:shell
2 clock Background -10 2101a8 Workdisk:
3 emacs Background 0 212f58 Stuff:shell
4 VT100 Background 0 227328 Workdisk:
Address est l'adresse de la tΓche, directory est le rΘpertoire
actuel de la tΓche. Par dΘfaut, seuls les Noms de Base de la
commande sont affichΘs. Votre propre CLI sera marquΘ par un
astΘrisque dans la premiΦre colonne.
Options:
-l affiche le nom de path de la commande complet
-e exclut les noms de commandes donnΘs dans la liste
PWD
Usage : pwd
Reconstruit _cwd α reculons α partir de votre rΘpertoire actuel.
QSORT
Usage : qsort [-r] <in >out
Trie rapidement depuis l'entrΘe standard vers la sortie standard.
-r fait trier en sens inverse.
QUIT
Usage : quit
Quitte le Shell pour revenir au CLI.
RBACK
Usage : rback command
DΘmarre un nouveau processus ΘxΘcutant la commande indiquΘe, mais ne
peut faire d'entrΘe/sortie. Equivalent α 'run command >NIL: <NIL:'.
Au lieu d'utiliser rback, vous pouvez ajouter un '&' α la fin de la
ligne de commande. La variable $_newproc contiendra le numΘro de CLI
du processus nouvellement crΘΘ.
Note: rback ne peut pas lancer les commandes encapsulΘes. Vous devez
lancer un sous-shell: rback csh -c "copy ram:temp prt:;rm
ram:temp
READFILE
Usage : readfile nomvar [nomfichier]
Lit complΦtement un fichier ASCII et l'assigne α une variable. Chaque
ligne devient un mot dans la chaεne rΘsultante. Des blancs intercalΘs
ne posent aucun problΦme. Si le nom de fichier est omis, stdin est
utilisΘ. Voir aussi 'writefile', @subfile et @flines
RENAME
Usage : rename depuis vers
ou : rename depuis depuis depuis ... depuis versdir
Permet de renommer un fichier, ou de le dΘplacer α l'intΘrieur d'un
disque. Permet aussi de dΘplacer 1 fichier ou plus dans un simple
rΘpertoire. Le bit archive du fichier sera effacΘ.
RESIDENT
Usage : resident [-r][-d] [fichiers]
Exemple : resident lc1 lc2 blink # les charge comme rΘsidents
resident -d lc1 lc2 blink # ne charge que quand nΘcessaire.
resident -r lc1 lc2 blink # les enlΦve
resident # liste des programmes residents
C'est le resident ARP. Les commandes sont cherchΘes par Shell
dans la liste des rΘsident AVANT de chercher dans une quelconque unitΘ
externe. Seuls les programmes PURE peuvent tourner comme residents,
voir les docs ARP pour plus d'infos. L'Option -d est trΦs pratique:
vous pouvez dire dans votre fichier de lancement: resident -d
fichier..fichier; les programmes ne seront pas chargΘs immΘdiatement,
mais seulement quand vous essayerez de les charger. De cette maniΦre,
vous ne perdrez pas de temps, ni de mΘmoire si vous ne vous servez
pas de ces programmes.
L'ancienne option -a n'a plus d'effet.
RETURN
Usage : return [n]
Exemple : return 10
Sort d'un fichier script, ou sort d'un shell avec un code de sortie
optionnel.
RM
Equivalent α delete.
RPN
Usage : rpn expression
Exemple : rpn 3 7 * # imprime la valeur 21
Evalue une expression RPN (Notation Polonaise Inverse), utilisant des
valeurs 32-bits. Dans les versions prΘcedentes du Shell, RPN
contenait aussi des fonctions de chaεnes, mais maintenant ces chaεnes
sont gΘrΘes par des commandes spΘcifiques, elles ne sont plus
utilisΘes. A la fin de l'Θvaluation, RPN imprime les valeurs sur la
pile, ainsi vous pouvez dire par exemple "rpn $x 2 * | input x" pour
doubler la valeur de la variable x.
Les fonctions implΘmentΘes sont:
+ - * / Signification usuelle; / signifie la division entiΦre
% OpΘrateur modulo ex. "rpn 7 3 %" rΘpond 1
& | ~ Operateurs binaires: et, ou, non
> < == Tests pour plus-grand-que, plus-petit-que, egal. Pour
tester >= ( ou <=), prenez < ! ( ou > !)
! OpΘrateur logique Non
DUP Duplique la valeur sur le haut de la pile.
DROP Met la valeur sur le haut de la pile
SWAP Echange 2 valeurs sur le haut de la pile
pour Θviter toute confusion avec les redirections > et < doivent Ωtre
entre guillemets. par exemple:
3 2 ">" # Imprime 1
RUN
Usage : run prgm args
Exemple : run emacs test.c
Lance un nouveau processus qui execute la commande indiquΘe.
Cette commande n'est pas entiΦrement fiable: utilisez-la α vos propres
risques. $_newproc contiendra le numΘro CLI du nouveau process. Voir
aussi rback.
RXREC
Usage : rxrec [nomport]
CrΘe un port compatible-AREXX du nom indiquΘ (par dΘfaut ce sera
"rexx_csh"), puis met le Shell en veilleuse, en attente de messages.
ATTENTION: Le seul moyen de sortir de cet Θtat est d'envoyer au port
le message "bye".
Exemple:
Ouvrir 2 Shells dans 2 CLI sΘparΘs. Pour le 1er,tapez:
rxrec
Maintenant le 1er Shell ne rΘpond plus au clavier; α la place, il
attend des messages sur un port appelΘ "rexx_csh". Maintenant, depuis
l'autre, tapez:
rxsend rexx_csh "dir df0:"
Vous verrez le catalogue de df0: dans le 1er Shell. ExpΘrimentez
comme vous le dΘsirez, puis tapez:
rxsend rexx_csh bye
Et tout redeviendra normal.
RXSEND
Usage : rxsend [-lr] nomport commande...commande
Envoie une commande α tout programme ayant un port compatible-AREXX.
Sachez que chaque mot est envoyΘ comme une simple commande!
Vous ne devez rien charger pour utiliser ces commandes (ou rxrec):
Tout ce dont vous avez besoin est d'un programme avec le port
correct.
Un exemple est CygnusEdProfessional: il y a, par ex., une commande
pour le rΘveiller, charger le programme test.c et sauter α la ligne
20:
rxsend rexx_ced cedtofront "open test.c" "jmp to line 20"
# rexx_ced est le nom du port AREXX pour CygnusEd
L'option -r met la variable _result sur la chaεne du rΘsultat de la
commande AREXX.
L'option -l envoie la ligne entiΦre comme *une* commande.
Voir le manuel de votre application pour les dΘtails, pour le nom
des commandes et du port.
SEARCH
Usage : search [-abcefnqrvw] fichier...fichier chaine
Recherche une chaεne dans les fichiers indiquΘs. Seules les lignes
contenant les chaεnes indiquΘes sont affichΘes.
Si le nom de fichier est STDIN (en capitales), l'entrΘe standard est
utilisΘe, ainsi vous pouvez utiliser search comme destination pour
un pipe.
Exemple:
strings monprog * | search STDIN .library
Liste toutes les librairies utilisΘes dans "monprog".
Search est trΦs rapide si l'une des options -w, -e, si STDIN Θtait
spΘcifiΘ et si le fichier se trouve en mΘmoire.
Options:
-a (arrΩt) stoppe la recherche dΦs que le motif a ΘtΘ trouvΘ une
fois
-b (binaire) affiche seulement les offsets en octets au lieu des
lignes. S'il est combinΘ avec -n, affiche les nombres
seuls.
-c (capitales) Allume la sensibilitΘ aux majuscules.
-e (exclut) liste les lignes ne contenant pas le motif
-f (fichiers) cause simplement l'affichage des noms des fichiers
dans lesquels le motif a ΘtΘ trouvΘ.
-l le motif doit Ωtre au dΘbut de la ligne (c'est plus
rapide que d'utiliser un motif d'expansion)
-n (nombre) Θteint la numΘrotation des lignes
-o trouve seulement les mots entiers
-q supprime l'impression des noms de fichiers
-r (recursif) si vous spΘcifiez un rΘpertoire, tous les fichiers
dans ce rΘpertoire sont passΘs en revue rΘcursivement
-v montre chaque nom de fichier sur une simple ligne.
C'est allumΘ automatiquement si la recherche est
redirigΘe.
-w repΘrage de motifs de complΘtion. cf notes plus bas
Notes sur l'utilisation de motifs de complΘtion (wild cards);
- Utilise les complΘtions standard du Shell.
- Tous les motifs standard ARP sont autorisΘs * ? [] () | ~ ' #
- La Ligne ENTIERE doit correspondre α la chaεne, pas seulement une
sous-chaεne.
- La chaεne DOIT Ωtre mise entre guillemets pour Θviter la complΘtion
du motif
Exemples:
search -cr df0:include ACCESS
Trouve toutes les occurences d'ACCESS (en majuscules) dans tous les
les fichiers contenus dans le rΘpertoire include.
search -w shell.h "'#define*"
Liste seulement les lignes du fichier commenτant par (et ne contenant
pas seulement) #define. Notez l'usage de ' pour pouvoir utiliser le
symbole spΘcial #.
SET
Usage : set [nom] [chaεne]
Exemple : set abc bonjour
Set sans arguments liste toutes les variables actuellement dΘfinies.
Set avec un argument liste le contenu de cette variable particuliΦre.
Indiquer nom et chaεne, initialise la variable 'nom' avec le contenu
'chaεne'.
Voir aussi la section sur les _variables spΘciales.
SETENV
Usage : setenv varenv valeur
Met une valeur α la variable ENV: donnΘe. La valeur doit Ωtre mise
entre guillemets si elle contient des espaces.
SLEEP
Usage : sleep dΘlai
Exemple : sleep 10
Dort pendant 'dΘlai' secondes, ou jusqu'α ce que ^C soit tapΘ.
SPLIT
Usage : split srcvar dstvar...dstvar
Assigne un mot de srcvar a chaque dstvar, le reste de srcvar α la
derniΦre dstvar.
Note: vous entrez les NOMS des variables et pas les variables.
STACK
Usage : stack [nombre]
Exemple : stack 8000
Change la pile par defaut (stack) pour ce CLI. Sans arguments, il
l'affiche.
STRHEAD
Usage : strhead nomvar sΘparateur chaεne
Exemple : strhead x . toto.bas # met "toto" dans x
EnlΦve tout ce qu'il y a aprΦs et y compris le caractΦre sΘparateur
dans 'chaεne' et place le restant dans la variable 'nomvar'.
STRINGS
Usage : strings fichier1..fichierN longmin
Exemple : strings c:dir c:list shell 7
Imprime les chaεnes de longueur>=longmin contenues dans les fichiers
indiquΘs (habituellement binaires).
STRLEFT
Usage : strleft nomvar chaεne n
Exemple : strleft x LongueChaεne 5 # met "Longu" dans x
Place les n caractΦres les plus α gauche de la chaεne dans la
variable nomvar.
STRLEN
Usage : strlen nomvar chaεne
Exemple : strlen x Bonjour # met x α "7"
Met la longueur de la chaεne dans variable varnom.
STRMID
Usage : strmid nomvar chaεne n1 [n2]
Exemple : strmid x LongueChaεne 5 3 # mettra x α "Str"
Place n2 caractΦres de chaεne, α partir de n1, dans la variable
nomvar. En omettant n2, vous aurez tous les caractΦres de n1 α la
fin de la chaεne.
STRRIGHT
Usage : strright nomvar chaεne n
Exemple : strright x LongueChaεne 5 # met x α "haεne"
Place les n caractΦress les plus α droite de la chaεne dans la
variable nomvar.
STRTAIL
Usage : strtail nomvar sΘparateur chaεne
Exemple : strtail x . toto.bas # met "bas" dans x
EnlΦve tout ce qu'il y a avant (et y compris) le caractΦre sΘparateur
dans 'chaεne' et place le restant dans la variable 'nomvar'.
SOURCE
Usage : source fichier [arguments]
Exemple : source monmake.sh all
Result : execute le fichier 'mymake.sh' en lui passant la variable
_passed = 'all'
Execute les commandes dans un fichier. Vous pouvez Θcrire des
programmes SHELL dans un fichier et les exΘcuter alors avec cette
commande. Les fichiers sourcΘs ont en plus l'avantage que vous pouvez
avoir des boucles dans vos fichiers de commandes (cf GOTO et LABEL).
Vous pouvez passer des arguments α votre fichier SCRIPT en indiquant
les arguments aprΦs le nom du fichier. Les arguments sont passΘs via
la variable _passed (comme une simple chaεne, un groupe de mots).
Cf la variable _failat pour l'interruption des scripts.
De lignes longues peuvent Ωtre coupΘes par un anti-slash (\) α la fin
de la 1ere partie. Une simple ligne doit Ωtre plus courte que 512
octets, mais la ligne concatΘnΘe peut Ωtre aussi longue que vous le
voulez. Il n'y a pas de limite sur la longueur de la ligne
concatΘnΘe.
L'action 'source' est accomplie automatiquement en ajoutant .sh au
nom du fichier (pas besoin de lui mettre le bit-s) et en l'exΘcutant
comme vous le feriez avec un programme en C :
--------- fichier hello.sh ---------
foreach i ( $_passed ) "echo yo $i"
---------------------------------
$ hello a b c
yo a
yo b
yo c
Si le dernier caractΦre de la ligne dans un fichier script est '{',
toutes les lignes suivantes seront ajoutΘes α la ligne courante et
sΘparΘes par des ';' jusqu'α ce que le dernier caractΦre d'une ligne
soit '}'. Ces blocs peuvent Ωtres imbriquΘs. Mais n'utilisez pas de
commentaires α l'intΘrieur.
--------- fichier login.sh ------
alias complexe {
echo -n "cet alias "
echo "marche!"
}
---------------------------------
$ login
$ complex
cet alias marche!
TACKON
Usage : tackon var nomchemin nomfichier
Exemple : tackon x df0:c Dir # met "df0:c/Dir" dans x
ou : tackon x df0: Preferences # met "df0:Preferences" dans x
Ajoute correctement un nom de fichier α celui d'un chemin, et met le
rΘsultat dans la variable spΘcifiΘe.
TAIL
Usage : tail nomfichier [num]
Exemple : tail readme 20
Affiche les "num" derniΦres lignes de "nomfichier". Si num n'est pas
spΘcifiΘ, 10 est pris par dΘfaut.
TEE
Usage : tee [fichier]
Exemple : cc test.c | tee >error.list
Copie l'entrΘe standard sur stdout et le fichier donnΘ. Si le fichier
est omis, sterr est utilisΘ.
TOUCH
Usage : touch fichier1 .. fichierN
Met la date de crΘation des fichiers indiquΘs aux date et heure
actuelles et rΘinitialise le bit archive.
TRUNCATE
Usage : truncate [n]
Exemple : alias | sort | truncate
Un filtre qui tronque la largeur de l'entrΘe standard au nombre
spΘcifiΘ, essayant de compter les tabs et les sΘquences d'escape. Si
le nombre est omis, la fenΩtre courante est utilisΘe.
TYPE
Equivalent α CAT.
UNALIAS
Usage : unalias nom .. nom
Exemple : unalias vt
DΘtruit les alias..
UNIQ
Usage : uniq
C'est un filtre qui enlΦve les lignes consΘcutives en double dans un
fichier. Il est trΦs utile sur les fichiers triΘs.
UNSET
Usage : unset nom .. nom
Exemple : unset abc
Supprime une ou plusieurs variables. Les dΘtruit entiΦrement.
USAGE
Usage : usage [commande...commande]
Si appellΘe dans arguments, usage vous donne une courte information
sur les caractΦres spΘciaux utilisΘs. Sinon, usage vous montre
l'utilisation des commandes donnΘes. Appeler une commande avec '?'
comme seul argument vous donnera aussi son usage.
VERSION
Usage : version
Montre le nom de la version actuelle, et des auteurs.
WAITFORPORT
Usage : waitforport nomport [secondes]
Exemple : waitforport rexx_ced 5
Attend qu'un port apparaisse. Le temps par dΘfaut est 10 secondes.
WHEREIS
Usage : whereis [-r] nomfichier [ unitΘ1...unitΘN ]
Si un nom de fichier est juste donnΘ, whereis fouille tous les sous
rΘpertoires du rΘpertoire courant pour trouver ce fichier. Un
astΘrisque '*' est concatΘnΘ au fichier. Les motifs de complΘtion
sont autorisΘs pour le fichier (aucun astΘrisque ne sera alors
ajoutΘ), mais pas les noms de chemins. Si des arguments
additionnels sont donnΘs, whereis fouille seulement ces chemins, pas
le rΘpertoire courant. whereis -r regarde dans tous les lecteurs.
WINDOW
Usage : window [-q][-f][-b][-l][-s] [dimensions]
Options :
-f (front=devant) FenΩtre devant
-b (back=derriΦre) FenΩtre derriΦre
-l (large) FenΩtre en taille maximale
-s (small=petite) FenΩtre en taille minimale
-a (activΘe)
-q (questionne) Liste les fenΩtres et les Θcrans ouverts
Diverses opΘrations sur la fenΩtre CLI. Si les dimensions sont
indiquΘes, elles doivent Ωtre de la forme x y largeur hauteur, avec
un espace entre les valeurs.
La commande "window -l" peut Ωtre trΦs pratique sur les machines PAL
pour avoir une pleine fenΩtre PAL α partir de votre sΘquence login,
ou si vous utilisez le WorkBench en overscan .
L'option -q donne, pour chaque fenΩtre et Θcran actuellement ouverts,
le titre, le bord gauche, le bord haut, largeur, hauteur, (profondeur).
WRITEFILE
Usage: writefile nomvar
Ecrit un groupe de mots sur la sortie standard, un mot par ligne.
Notez que le nom de la variable (nomvar) doit Ωtre fourni, et non la
valeur ($nomvar).
IX. LISTE des VARIABLES SPECIALES
---------------------------------
Il y a des variables, les variables d'Θcriture, qui ont un effet de bord sur
votre systΦme (par ex. changer la barre de titre) et certaines autres, les
variables de lecture, qui vous disent quelque chose α propos de votre
environnement (par ex. la version du shell actuelle). Vous pouvez recopier
les variables d'Θcriture dans des variables locales, de faτon α ce que tout
changement ne se produise que lorsque le contexte courrant est valide.
_abbrev
Si mis sur 'n', les commandes internes ne peuvent plus Ωtre abrΘgΘes.
_bground
Vraie si le shell a ΘtΘ lancΘ depuis une entrΘe non-interactive.
_clinumber
Contient le numΘro (1-20) du CLI courant.
_cwd
Contient une chaεne reprΘsentant le rΘpertoire dans lequel nous nous
trouvons depuis la racine. Le SHELL peut Ωtre trompΘ sur ce qui
concerne son rΘpertoire courant si des programmes externes changent
le rΘpertoire. Utilisez PWD pour reconstruire dans ce cas la variable
_cwd.
_debug
Mode Debug... utilisez-le si vous l'osez. doit Ωtre mis α une valeur
_every
Contient le nom d'une commande qui doit Ωtre exΘcutΘe chaque fois juste
avant que le prompt soit imprimΘ. N'utilisez pas ceci pour afficher
le prompt.
_except
voir EXCEPTION
_failat
Si une commande se termine avec un code de retour supΘrieur α ceci,
le fichier script s'arrΩte. La valeur par dΘfaut est 20.
_hilite
Contient les attributs de fontes utilisΘs pour l'allumage des
caractΦres (highlighting). Une lettre pour un attribut:
b pour gras (bold)
i pour italique
u pour soulignΘ (underlined)
r pour inverse vidΘo (reverse)
c3 pour la couleur de devant no3
c3,2 pour la couleur de devant no3 et celle du fond no2
Toutes les combinaisons sont autorisΘes. _hilite prend par dΘfaut
"c7", en mode terminal sur "r".
_history
Cette variable est utilisΘe pour contenir une valeur numΘrique, et
spΘcifie combien votre historique peut contenir. Mettez le α 0
pour annuler l'historique par exemple si vous testez des programmes
contre les pertes de mΘmoire. La valeur par dΘfaut est de 50.
_insert
Met le mode insertion/refrappe par dΘfaut pour l'Θdition de la ligne
de commande. ESC-i le bascule, mais aprΦs <RET> la valeur par dΘfaut est
rΘtablie comme indiquΘ par cette variable. Par dΘfaut _insert est α 1,
la mettre α zΘro mettra la refrappe par dΘfaut.
_ioerr
Contient le code d'erreur secondaire de la derniΦre commande. Sera
changΘ aprΦs toute commande externe et aprΦs une commande interne
ayant ΘchouΘ. Voir @ioerr( )
_kick2x
Vraie si la dos.library V36 a pu Ωtre ouverte (ce qui signifie que le
kickstart 2.0 est prΘsent)
_lasterr
Retourne le code de retour de la derniΦre commande exΘcutΘe. Ceci
comprend les commandes internes aussi bien que les commandes
externes, aussi pour utiliser ces variables devez-vous le faire
IMMEDIATEMENT aprΦs la commande en question
_lcd
Contient le nom du dernier rΘpertoire. L'alias encapsulΘ 'dswap' fait
un cd sur ce rΘpertoire. S'il est rappelΘ α nouveau, vous Ωtes α
nouveau lα o∙ vous Θtiez.
_man
Le nom et le chemin d'accΦs α vos fichiers .doc. Par dΘfaut sur
'csh:csh.doc'
_maxerr
La plus mauvaise (la plus haute) valeur de retour en date. Pour
l'utiliser, vous la mettez habituellement sur '0', puis faites un jeu
de commandes, et la contr⌠lez.
_minrows
Donne le nombre minimum de colonnes qu'une fenΩtre doit avoir pour
autoriser le dΘfilement rapide. Par dΘfaut sur 34.
_nobreak
S'il est mis sur une valeur, dΘsactive CTRL-C.
_noreq
S'il est mis α une valeur, dΘsactive les requesters systΦme ("Please
insert volume ..."). AllumΘ en mode vt200.
_passed
Cette variable contient les arguments passΘs quand vous exΘcutez un
fichier par SOURCE ou exΘcutez un fichier .sh. Par exemple:
test a b c d
-------- fichier test.sh ----------
echo $_passed
foreach i ( $_passed ) "echo YO $i"
--------------------------------
_path
Dit α CShell o∙ aller chercher les fichiers exΘcutables. Le
rΘpertoire courant et le chemin AmigaDOS seront testΘs en premier.
Le slash en fin de nom pour les rΘpertoires n'est plus nΘcΘssaire.
Le path entier sera testΘ d'abord pour la <commande>, puis pour
<commande>.sh (exΘcution automatique des scripts shell). Exemple:
set _path ram:c,ram:,sys:system,dh1:tools,df0:c
(Cette path a l'avantage que ces rΘpertoires n'ont pas mΩme besoin
d'exister, que vous pouvez accΘder aux unitΘs (le path AmigaDOS
connaεt seulement les unitΘs sous Kick 1.3) et qu'aucune recherche
sur les disques n'apparaεt au lancement)
_prompt
Cette variable peut maintenant contenir les caractΦres de contr⌠le
suivants:
%c pour un changement de couleur. Cela met le prompt en couleurs.
Voir _hilite
%e pour le temps ΘcoulΘ. Le temps que la derniΦre commande a pris
pour s'exΘcuter.
%m pour la mΘmoire. Cela montre la mΘmoire courante en Ko
%t pour l'heure. Cela montre l'heure courante au format HH:MM:SS
%d pour la date. Ceci montre la date courante dans le format
JJ-MMM-AA
%p pour le path. Ceci insΦre le path courant.
%n pour le numΘro. Ceci insΦre le numΘro de process courant.
%v pour la version. Ceci montre le numΘro de version de CShell
%h pour l'historique. Ceci affiche le numΘro courant dans
l'historique
%f pour l'espace libre. Ceci affiche la place libre sur le lecteur
courant.
%r pour la prioritΘ. InsΦre la prioritΘ de la tache courante
%s pour les shells ouverts. InsΦre le rΘsultat de 'howmany'
%x pour les code de retours des commandes externes. Affiche le
dernier code d'erreur
La valeur par dΘfaut du prompt est actuellement "%c%p> "
La commande if mettra le prompt sur un '_ ' si les commandes sont
dΘsactivΘes pendant l'attente d'une commande 'endif' ou 'else' (mode
interactif seulement).
_pipe
Le rΘpertoire dans lequel les fichiers temporaires sont stoquΘs.
Par dΘfaut: 'T:'
_qcd
Contient le nom du fichier o∙ tous les rΘpertoires de votre disque
dur sont stockΘs. S'il n'est pas mis, dΘsactive le cd rapide
_rback
Est le nom de la commande α Ωtre placΘe au dΘbut de la ligne de
commande lorsque '&' lui a ΘtΘ ajoutΘ. Par dΘfaut c'est 'rback'.
Ca ne peut pas encore Ωtre une commande de plusieurs mots.
_rxpath
La mΩme chose que pour _path, mais ceci reprΘsente lα o∙ CShell
cherche les fichiers .rexx. Par dΘfaut dans REXX:
_scroll
contient le nombre de lignes α dΘfiler en mΩme temps quand on utilise
le dΘfilement rapide. Si elle n'est pas mise ou <=1, le dΘfilement
rapide est sorti. Par dΘfaut c'est 3.
_terminal
Indique si le shell a ΘtΘ lancΘ ou non en mode terminal.
_titlebar
Les mΩmes caractΦres de contr⌠le que pour le _prompt peuvent Ωtre
aussi utilisΘs pour _titlebar. La seule diffΘrence est que %c est
ignorΘ. La barre titre est remise α jour chaque fois avant que le
prompt n'apparaisse.
_verbose
Si mis sur 's', allume le mode verbose pour les fichiers scripts (
chaque commande sera affichΘe avant d'Ωtre exΘcutΘe). Si mis sur 'a',
affiche tous les pas intermΘdiaires dans la substitution des alias.
'h' mettra en rouge la sortie de debuggage. Toute combinaison
autorisΘe: set _verbose sah
_version
Contient le numΘro de version du shell, par ex. 510.
X. FONCTIONS
--------------
FONCTIONS
Les fonctions sont prΘcΘdΘes d'un signe @ et ne peuvent Ωtre abrΘgΘes
Elles doivent Ωtre prΘcΘdΘes par un blanc et un blanc doit suivre la
parenthΦse ouvrante et prΘcΘder la fermante. Il ne doit y avoir aucun
blanc entre le nom de la fonction et la parenthΦse ouvrante. Exemple:
echo @info( df0: )
(NOTE: Les versions suivantes de Shell pourraient autoriser que les
fonctions ne soient pas au dΘbut d'un argument, ce qui
signifie qu'un signe @ ne soit pas utilisΘ pour les fonctions)
Les fonctions peuvent Ωtre emboitΘes. Les noms de fonctions eux-mΩmes
dΘpendent des majuscules, mais les opΘrations (comme strcmp) n'en
dΘpendent pas.
Les fonctions peuvent Ωtre utilisΘes comme commandes. Elles
afficheront leur valeur de retour sur stdout. Notez qu'elles ne
peuvent Ωtre abrΘgΘes et que la liste de fonction est balayΘe aprΦs
la liste de commandes. Exemple:
drives ---> DF0: DH1: DH2: RAM: WB_2.x:
Ainsi, les fonctions peuvent aussi Ωtre utilisΘes comme ceci:
echo $(drives)
Jusqu'α maintenant les fonctions ne peuvent Ωtre dΘfinies par
l'utilisateur.
Notez la diffΘrence entre des groupes de mots et des chaines de
caractΦres. AprΦs
set var bonjour toi
$var est un groupe de mots, mais aprΦs
set var "bonjour toi"
var est une chaεne. Bien qu'ils se ressemblent si on les affiche, ils
se comportent diffΘrement, par exemple dans 'foreach i ( var ) "echo
hi". Les fonctions @split et @concat convertissent les deux formes.
@abbrev( str1 str2 [len] )
vraie si les <len> premiers caractΦres de str1 sont une abrΘviation
de str2
@abs( num )
retourne la valeur absolue de <num>
@age( fichier )
l'age de ce fichier en jours, 99999 si le fichier n'est pas trouvΘ
@appsuff( nom suffixe )
ajoute un suffixe ( .ZOO ) α une chaεne s'il n'y est pas dΘjα
@arg( arg ... arg )
voir @pickargs( )
@availmem( [type] )
retourne la mΘmoire 'chip', 'fast' libre ou sinon toute la mΘmoire
@basename( chemin ... chemin )
retourne la partie nom de fichier des chemins
@center( mot longueur )
retourne une chaεne de longueur <len> avec <mot> centrΘ α
l'interieur
@checkport( nomport )
indique si le port donnΘ existe
@clinum( nomproc )
retourne le numΘro du cli identifiΘ par un nom ou un numΘro
@complete( abbrev mot ... mot )
retourne le premier mot dont abbrev soit une abrΘviation
@concat( word word ... word )
concatΦne tous les mots dans une chaεne sΘparΘs par des blancs, voir
@split
@confirm( titre objet ... objet )
demande confirmation de chaque objet et retourne ceux qui ont ΘtΘ
confirmΘs
@console( STDIN|STDOUT )
dit si stdin ou stdout sont interactives (non redirigΘes)
@dectohex( numΘro )
retourne une chaεne repΘsentant <nombre> en hexa
@delword( mot mot ... mot n )
retourne une chaεne avec le n-iΦme mot effacΘ
@delwords( mot mot ... mot n m )
efface les m mots α partir du n-iΦme
@dirname( chemin )
enlΦve le nom de base du chemin, retourne juste le rΘpertoire
@dirs( nom nom nom nom )
retourne les rΘpertoires parmi les noms de fichers donnΘs
@dirstr( fichier )
retourne toutes les informations (taille, date, commentaires) sur un
fichier
@drive( chemin )
affiche le nom de lecteur (unitΘ) associΘ α <chemin>
@drives( )
affiche tous les lecteurs disponibles
@exists( fichier )
dit si un fichier existe ou non
@fileblks( fichier fichier ... fichier )
retourne le nombre de blocs utilisΘs par les fichiers y compris les
blocs de rΘpertoires
@filelen( fichier fichier ... fichier )
compte le nombre total d'octets des fichiers donnΘs
@fileprot( fichier )
retourne une chaεne comme ---arwed
@filereq( titre chemin&motif nomfichier )
affiche le requester de fichiers ARP et retourne le nom de fichier
sΘlectionnΘ
@files( fichier fichier ... fichier )
vous donne les fichiers parmi ces noms, pas les rΘpertoires, cf @dirs
@flines( nomvar )
compte le nombre de lignes dans un fichier de lecture (plus rapide que
@words)
@freebytes( chemin )
le nombre d'octets libres sur le chemin donnΘ
@freeblks( chemin )
le nombre de blocks libres sur le chemin donnΘ
@freestore( chemin )
la quantitΘ de place libre sur un chemin, donnΘe en K, M et G
@getenv( nomvar )
retourne la valeur de la variable env: nommΘe
@getclass( fichier )
retourne la classe (type) du fichier. Voir chapitre XIV
@howmany( )
indique le nombre de shells qui tournent
@index( chaεne motif )
retourne l'emplacement du motif dans la chaεne (commencant α 1), 0 si
on ne le trouve pas
@info( chemin )
la ligne correspondante de la commande 'info'
@intersect( mot1 mot2 mot3 , mot4 mot5 mot6 )
retourne tous le mots qui sont dans les deux listes. voir @union,
@member
@ioerr( num )
retourne la chaεne d'erreur correspondant α num
@lookfor( fichier chemins )
cherche un fichier dans le rΘpertoire courant et les chemins. Voir
$_path
@lower
met en minuscules ses arguments. cf @upper
@match( mot ... mot "motif" )
retourne les mots dans la liste qui conviennent au motif ARP.
@max( num num ... num )
calcule le maximum des nombres donnΘs
@megs( nombre )
exprime un nombre en K, M et G (-octets), arrondi correctement
@member( mot1 mot mot ... mot )
vous dit si mot1 est parmi la liste des mots restants
@min( num num ... num )
calcule le minimum des nombres donnΘs
@mix( arg1 ... argn )
mΘlange alΘatoirement ses arguments
@mounted( unitΘ )
retourne un boolΘen indiquant si l'unitΘ spΘcifiΘe est mount'Θe
@nameext( nomfichier )
retourne tout ce qu'il y a aprΦs le dernier point de <nomfichier>.
@nameroot( nomfichier )
retourne tout ce qu'il y a avant le dernier point de <nomfichier>.
@opt( arg ... arg )
voir @pickopts( )
@pathname( chemin )
obsolete. utilisez @dirname
@pickargs( arg ... arg )
prend parmi ses arguments ceux qui ne commencent pas par un '-'
@pickopts( arg ... arg )
prend parmi ses arguments ceux qui commencent par un '-'
@rnd( )
retourne un nombre alΘatoire sur 32 bits
@rpn( experession )
calcule l'expression rpn. Voir la commande rpn
@scrheight( )
affiche la hauteur courante de l'Θcran dans lequel le shell fonctionne
@scrwidth( )
affiche la largeur courante de l'Θcran dans lequel le shell fonctionne
@sortargs( nom ... nom )
trie ses arguments par ordre alphabΘtique
@sortnum( nombre ... nombre )
trie ses arguments numΘriquement
@split( chaεne )
fait de chaque partie de <chaεne> sΘparΘe par un espace un mot, voir
@concat
@strcmp( nom nom )
retourne -1, 0 ou 1 suivant la comparaison alphabΘtique
@strhead( sΘparateur chaεne )
voir la commande strhead
@strleft( chaεne numΘro )
voir la commande strleft
@strmid( chaεne n1 n2 )
voir la commande strmid
@strright( chaεne n )
voir la commande strright
@strtail( sΘparateur chaεne )
voir la commande strtail
@subfile( nomvar n m )
comme @subwords, mais agit sur un fichier de lecteure et est plus rapide
@subwords( mot ... mot n m )
retourne les m prochains mots de la liste donnΘe α partir du n-iΦme
@tackon( chemin fichier )
voir la commande tackon
@trim( mot mot mot )
enlΦve tous les espaces au dΘbut ou α la fin des mots
@unique( mot ... mot )
trie les arguments et rend chacun d'eux unique
@union( nom ... nom , nom ... nom )
retourne tous les noms Θtant dans l'une des deux listes. Voir
@intersect, @member
@upper( mot ... mot )
met le mot donnΘ en majuscules, voir @lower
@volume( chemin )
retourne le nom de volume de ce chemin ou ""
@wincols( )
retourne le nombre de colonnes dans la fentre de shell courante
@winheight( )
affiche la hauteur de votre fenΩtre en pixels
@winleft( )
retourne le bord gauche de votre fenΩtre
@winrows( )
retourne le nombre de lignes dans la fenΩtre de shell courante
@wintop( )
retourne le bord haut de votre fenΩtre
@winwidth( )
affiche la largeur de votre fenΩtre en pixels
@without( nom ... nom , nom ... nom )
retourne tous les noms de la liste 1 qui ne sont pas dans la liste 2
@word( nom ... nom n )
extrait le n-iΦme mot de la liste
@words( nom ... nom )
retourne le nombre de mots dans la liste
XI. DIVERS
----------
CShell permet maintenant de faire un dΘfilement rapide dans les
grandes fenΩtres. DΘfilement rapide signifie que chaque fois que le
curseur atteint le bas de la fenΩtre, le texte saute de 3 lignes ou
plus α la fois. Par contre seules les commandes suivantes les
supportent (pour le momment!):
dir, cat, htype, strings, search, truncate, tee
Vous pouvez choisir le nombre de lignes α dΘfiler en une fois en
fixant la variable _scroll. Ne pas la mettre ou la mettre α une
valeur <= 1 dΘsactive complΦtement le dΘfilement rapide.
Vous pouvez aussi choisir le nombre de lignes qu'une fenΩtre doit
au moins avoir pour activer le dΘfilement rapide en mettant la
variable _minrows. (Valeur par dΘfaut 34). Le dΘfilement rapide est
automatiquement dΘsactivΘ quand la commande est redirigΘe. En pipant
toute commande avec cat, vous pouvez la forcer α un dΘfilement
rapide. Exemple: List | cat
CShell peut maintenant Ωtre fermΘ en utilisant le gadget de fermeture
de la fenΩtre shell AmigaDOS 2.0. N'exΘcutez pas c:ENDCLI en
utilisant le shell. Ceci peut causer des problΦmes avec les commandes
externes. Le bouton de fermeture fournit une commande 'quit'. Vous
pouvez dΘfinir
alias quit "Endcli;\\quit
pour Ωtre s√r que la fenΩtre CLI se ferme lorsque vous cliquez sur
le bouton.
EXCEPTIONS
Si aucune variable _except n'existe, toute commande qui se plante
fait stopper le reste de la ligne comme si un ABORTLINE avait ΘtΘ
ΘxΘcutΘ. Si la variable _except existe, elle est de la forme:
"nnn;commandes..."
o∙ nnn est une valeur reprΘsentant le code de retour minimum requis
pour causer une erreur. Chaque fois qu'une commande retourne un code
qui est supΘrieur ou Θgal α nnn, les commandes dans _except seront
ΘxΘcutΘes avant toute chose. QUAND _except EXISTE, LA LIGNE de
COMMANDE NE STOPPE PAS AUTOMATIQUEMENT. Ainsi si vous voulez que la
ligne qui Θtait exΘcutΘe soit annulΘe, la derniΦre commande dans
_except doit Ωtre un "abortline".
La gestion des exceptions est annulΘe durant la routine de gestion
d'une exception (ainsi vous n'aurez pas de boucle infinie de cette
maniΦre).
Ainsi si _except = ";", les codes de retour sont complΦtement
ignorΘs.
Exemple:
set _except "20;abortline"
XII. FICHIERS SCRIPTS D'EXEMPLE
-------------------------------
Si depuis un CLI ou d'un script de lancement vous dites 'SHELL nomfichier',
ce fichier est exΘcutΘ en 1er.
### compat.sh ###
# ceci assure que vos vieilles abrΘviations n'appellent pas de nouvelles
# commandes
alias as aset
alias cl close
alias g goto
alias h help
alias he help
alias m md
alias q quit
alias re rename
alias w window
alias kr "rm -r ram:* >NIL:
### Fin de compat.sh ###
La plupart du temps, si vous avez un fichier appelΘ s:.login, il sera exΘcutΘ
pour chaque Shell lancΘ. C'est pratique pour les alias et pour dΘterminer ce
que vous voulez dans tous les shells.
### Exemple S:.login ###
Voici un exemple de fichier .login :
set F5 "cdir WORK:"^M
set f9 "ed s:login.sh"^M
set F9 "ed df0:s/startup-sequence"^M
alias toram "%q foreach i ( $q ) \"cp -r $i: ram:$i >NIL:;assign $i: ram:$i
alias ramop "md RAM:op; assign OP: ram:op
alias noop "assign OP: ; rm -r ram:op
alias newop "rm -r OP:*
alias dc "dfc df0: to df1:
alias go "%q assign WORK: Boot:$q; cd WORK:; source startme.sh
alias get "%q cp $q RAM: >NIL:
alias filter "%a%b%c exec $b \\<$a \\>$c
# lit $a, le filtre avec $b et Θcrit le resultat dans $c
alias rm "%q \\rm @confirm( Remove $q )
#alias rm "%a set f @pickargs( $a );ser opts @pickargs( $a );\
# e -n OK pour effacer @words( @files( $f ) ) fichier(s) et @words( @dirs( \
# $f ) ) rΘpertoires\"? \";input b; if $b = y;\\rm $opts $f;endif
# #pour ceux qui sont anxieux parmi nous: rm avec confirmation
set _prompt "%c%p> "
# ceci met le chemin en caractΦres allumΘs dans le prompt
# ceci met le numΘro de CLI, la mΘmoire libre, la date et l'heure dans la
# barre-titre de la fenΩtre
set _titlebar "Shell %n Mem %m Date %d Heure %t
# Ce fichier sera exΘcutΘ avec chaque Shell dΘmarrΘ
### Fin de l'exemple .login ###
****************************************************************************
Si vous Ωtes un utilisateur du CLI, votre startup-sequence pourrait Ωtre
aussi simple que τa:
C:csh S:startup.sh
Voici un programme de lancement:
### Exemple S:startup.sh ###
wind -l # si vous Ωtes sur une machine PAL, ou utilisez l'overscan
# notez que les commandes peuvent Ωtre abrΘgΘes (wind=window)
assign LC: Stuff:c INCLUDE: Stuff:include LIB: Boot:lib QUAD: RAM:
rback C:FaccII; sleep 1
# aprΦs le lancement d'un processus, il est souvent intΘressant
# de le laisser charger la commande, pour Θviter des mouvements
# excessifs de la tΩte du lecteur
resident -d blink lc1 lc2 >NIL: # diffΦre le chargement
C:PopCli 300 C:Newcli # utiliser le chemin complet charge plus rapidement
C:FF -1 Siesta.font >NIL:
C:Patch_1 >NIL:
stack 8000 # lc1 & lc2 ont besoin de ceci
source S:setdate.sh # c'est listΘ ci-dessous
### Fin de l'exemple startup.sh ###
****************************************************************************
Ce qui suit est un fichier script d'exemple pour mettre la date et l'heure;
il peut Ωtre utilisΘ au lancement si vous n'avez pas d'horloge interne.
### setdate.sh ###
open CON:200/100/440/80/SetDate write 1
echo >.1 -n "La date actuelle est "
date >.1
echo >.1 -n "Entrez la date: "
input <.1 d
close 1
strlen len $d
if $len > 1 ; date $d ; endif
echo -n "Nouvelle date: " ; date
### Fin de setdate.sh ###
***************************************************************************
Ensuite vient un makefile qui n'a nul besoin d'un programme Make:
il peut Ωtre exΘcutΘ du Shell directement!
### make.sh ###
if -t Shell.syms Shell.h; cc +HShell.syms Shell.h; rm shell.o; endif
if -t RAM:Shell.syms Shell.syms; cp -d Shell.syms RAM:; endif
foreach i ( main comm1 comm2 comm3 execom globals rawconsole run set \
sub ) "if -t $i.o $i.c; echo Compile $i...;cc +IRAM:shell.syms $i.c; endif"
# nous avons utilisΘ la continuation de ligne pour une meilleure lisibilitΘ.
# Ce n'est pas nΘcessaire, vous pouvez tout taper en une seule ligne. Plus
# de limite de 256 octets par ligne
if -t Shell run.o main.o comm1.o comm2.o comm3.o execom.o \
set.o sub.o globals.o rawconsole.o
ln +q -m -o Shell run.o main.o comm1.o comm2.o comm3.o\
execom.o set.o sub.o globals.o rawconsole.o -la -lc
endif
### End of make.sh ###
XII. VALEURS par DEFAUT
------------------------
Certains alias sont prΘdΘfinis dΦs que vous dΘmarrez un nouveau Shell. Ce
sont:
CDIR
Utilisez "cdir rΘpertoire" pour vider l'Θcran, faire un CD sur ce
rΘpertoire, et le lister.
CLS
Efface tout simplement l'Θcran.
DSWAP
Echange le rΘpertoire courant et le prΘcΘdent. Pour utilisation dans
les scripts car le symbole du dernier rΘpertoire courant pourrait
changer.
EXIT
Quitte le Shell et sort du CLI.
MANLIST
Affiche une liste des arguments possibles de man.
RX
Execute un cript REXX. EmpΩche le lancement inoportun de 'rxrec'.
De plus, beaucoup d'autres variables ont des valeurs par dΘfaut, et beaucoup
de touches de fonctions sont prΘdΘfinies. Utilisez la commande set pour avoir
leur liste.
XIV. PossibilitΘs orientΘes objet
---------------------------------
Les classes de fichiers sont bonnes pour deux choses: identifier les fichiers et
la surcharge de commandes. Ce dernier point signifie que la mΩme commande avec
des fichiers de diffΘrents types rΘalise des actions complΦtement diffΘrentes.
FICHIERS - CLASSES
Vous pouvez dΘfinir une classe de fichier en utilisant plusieurs
commandes de 'classes'. Voici un simple exemple:
class image suff=.pic suff=.iff suff=.ilbm
class anim suff=.anim
A partir de maintenant tout ce qui a le suffixe .pic, .iff ou .ilbm
sera identifiΘ comme une image. Notez s'il vous plaεt qu'il ne
devrait y avoir aucun blanc entre les noms et le '=', et que des
blancs α l'interieur des noms doivent Ωtre mis entre guillemets.
Ainsi voilα les faτons de reconnaεtre un fichier:
suff=.doc Vrai si le suffixe du fichier est .doc
name=readme Vrai si le nom du fichier est "readme"
name="mod.*" Vrai si le nom commence par 'mod.'
offs=14,DC..C4FD Vrai si les octets commencant en $14 sont $DC,
quelquechose, $C4, $FD (tous les nombres en
hexadΘcimal!). Chaque paire de points signifie un
octet ignorΘ.
chars Vrai si 90% des octets dans le fichier sont
32..127 ou 9..13
default Toujours vrai, utilisΘ pour dΘfinir le type par
dΘfaut
Notez que seul le premier caractΦre est examinΘ, ainsi 's' = 'suff'.
Une classe peut Ωtre identifiΘe par un ou plus paramΦtres de classe.
Ils sont regardΘs dans le mΩme ordre qu'ils ont ΘtΘ entrΘs. Aussi
pour Ωtre s√r qu'une archive zoo renommΘe α tort en .lzh est
identifiΘe correctement, utilisez la description de 'classe'
suivante:
class zoo offs=14,DCA7C4FD
class lzh offs=2,2D6C68..2D
class zoo suff=.zoo
class lzh suff=.lzh
De toutes faτons, il y a une classe 'dir' prΘdΘfinie, qui signifie
rΘpertoire. Maintenant nous connaissons plusieurs types de fichiers.
Mais que va-t-on en faire? C'est lα que nous dΘfinissons les
'actions'.
METHODES SUR LES CLASSES
Il peut y avoir une ou plus commandes 'class' qui dΘfinissent quelles
actions doivent Ωtre faites dans diffΘrents cas pour cette classe
spΘcifique:
class zoo actions view="zoo -list" extr="zoo -extract"
class lzh actions view="lz l" extr="lz e"
Chaque fois que quelqu'un essaiera de 'view'er un test.zoo, la
commande 'zoo -list test.zoo' sera exΘcutΘe, mais s'il essaie view
test.lzh, alors 'lz l test.lzh' sera exΘcutΘ. Notez que chaque
commande dΘfinie ici passe par l'interprΦte normal de csh, ainsi
les chemin AmigaDOS et csh seront balayΘs, les alias avec arguments
sont autorisΘs ici aussi, ainsi tout ce que l'utilisateur a tapΘ,
sera stockΘ dans la variable aprΦs le '%'.
Comment dire α un fichier que je veux le 'view'er? Voici la seconde
commande utilisΘe pour les possibilitΘs orientΘes objet:
action view test.zoo
va d'abord identifier le type du fichier et ensuite lui appliquer, si
possible, l'action 'view'. Bien s√r, cela marche mieux α l'intΘrieur
d'un alias: alias v "action view" dΘfinira une commande v qui 'view'
tous les types de fichiers connus dans cshell. De faτon similaire,
vous pouvez dΘfinir alias xtr "action extr" et utiliser cette
commande pour extraire des fichiers de n'importe quel type d'archive.
Il y a une action qui sera envoyΘe α tout fichier que vous essayez de
lancer mais qui n'est pas exΘcutable. Cette action est 'exec'.
Supposons que vous ayez dΘfini la classe 'image', puis aprΦs
class image actions view=Mostra exec=Mostra
vous pouvez afficher une image en utilisant Mostra en tapant juste
son nom. D'autres actions encapsulΘes comme 'rm' et 'dir' peuvent
Ωtre implΘmentΘes, aussi n'utilisez pas de noms de commandes pour
des noms d'actions.
Le fichier script class.sh dΘfinit peu de classes utiles.
SUPERCLASSES
Supposons que vous ayez une classe pour les fichiers .c, une pour les
fichiers .h, et une pour les fichiers .asm. Vous pourriez vouloir
faire la diffΘrence entre eux quand vous les identifiez, mais en fin
de compte, ils sont tous des fichiers ASCII, n'est-ce pas? Vous pouvez
spΘcifier ceci avec la commande
class source_c suff=.c is=ascii
Maintenant chaque fois qu'une action sur un fichier de type source_c
Θchoue, le fichier est interprΘtΘ comme Θtant de type ascii, et la mΩme
action est tentΘe α nouveau. Ceci se poursuit jusqu'α ce qu'une classe
n'ait plus de superclasse.
XV. Claviers
----------------
Vous dΘfinissez un clavier comme collection de couples
touche/fonction. On donne aux deux des numΘros. Il peut y avoir
plusieurs claviers qui s'activent les uns les autres, mais au dΘpart
nous Θditons seulement le keymap 0, qui est actif au lancement.
Toutes les touches que vous dΘfinissez recouvreront Θventuellement
les anciennes dΘfinitions dans un clavier existant. Tout ce qui est
marquΘ avec un (*) n'est pas encore implΘmentΘ.
CODES DES TOUCHES
1..255 Les caractΦres ASCII correspondants
256 La flΦche vers le haut
257 La flΦche vers le bas
258 FlΦche vers la droite
259 FlΦche gauche
260 Help
261..270 F1..F10 (non-shiftΘes)
Qualificatifs (ajoutez-les aux codes de touches)
512 SHIFT (nΘcessaires seulement pour les flΦches et les
touches de fonctions)
1024 ESC (pressΘ puis relΓchΘ avant la touche)
FONCTIONS D'EDITION
- Mouvement Bouge le curseur...
0 CursLeft 1 gauche
1 CursRight 1 droite
2 WordLeft 1 mot gauche
3 WordRight 1 mot droite
4 BegOfLine au dΘbut de la ligne
5 EndOfLine α la fin de la ligne
- Effacement Efface...
10 Backspace un caractΦre α gauche depuis le curseur
11 Delete un caractΦre α droite depuis le curseur
12 BkspcWord un mot α gauche depuis le curseur
13 DelWord un mot α droite depuis le curseur
14 DeleteToSOL jusqu'au debut de la ligne
15 DeleteToEOL jusqu'α la fin de la ligne
16 DeleteLine toute la ligne
- Insertion d'historique
20 Back Remonte une ligne en arriΦre dans l'historique
21 Forward Descend une ligne en avant dans l'historique
22 Beg Va α la premiΦre ligne dans l'historique
23 End Va α la derniΦre ligne dans l'historique
24 Complete Retrouve dans l'historique comme '!'
25 Exec Execute une ligne et passe α la suivante
26 Tail InsΦre la ligne prΘcΘdente exceptΘ le premier mot
27 Bottom Va en dessous de la derniΦre commande de l'historique
28 DupWord Duplique le dernier mot de cette ligne
- ComplΘtion
30 Normal InsΦre le premier fichier correspondant (ou cycle)
31 Partial InsΦre une sous chaεne commune α tous les fichiers
correspondants
32 All InsΦre tous les fichiers correspondants
33 Directory Trouve un rΘpertoire dans la liste de cd rapide
34 LastCD InsΦre le dernier rΘpertoire courant
35 Show Affiche tous les noms qui correspondent
- SpΘcial
40 InsΦre Change le mode insertion/refrappe
41 Quit ExΘcute un 'quit' silencieusement
42 Help ExΘcute silencieusement un 'help'
43 Refresh Redessine la ligne courante
44 Execute Execute la ligne courante
45 Leave Edite une nouvelle ligne, stocke ceci dans
l'historique
46 EOF Stoppe le shell
47 NOP Ne fait rien
48 Echo^O Fait un echo de ^O
49 Beep Fait un echo de ^G
- Autres
50 Fkey ExΘcute la commande associΘe α la derniΦre touche de
fonction
51 Menu ExΘcute la commande associΘe au dernier menu
52 Undo Annule la prΘcΘdente Θdition
53 Repeat RΘpΦte la derniΦre fonction
54 SwapChar Echange les deux caractΦres α gauche du curseur
Type de commandes
0 +x Fonction d'Θdition x, voir les descriptions ci-dessus
512 +x Setmap x, x=0..7
1024+x InsΦre la touche x, x=1..255
1536+x Macro x x=1..15 (*)
2048+x Chaεne x x=1..15 (*)
Exemples:
keymap 0 66=49 # la touche B fera bip
keymap 0 2=16 # ^B effacera la ligne
keymap 0 1122=35 # ESC-b montrera les fichiers correspondants
ANNEXE
------
DOCUMENTATION FRANCAISE TRADUITE PAR :
***********************************************
* *
* OBP ELECTRONIXS DU CLUB B.U.G.S.S *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
* *
***********************************************
TOUS MES REMERCIEMENTS A MARCEL DURUFLE ET FREDERIC DELHOUME POUR LEUR AIDE,
ET A URBAN DOMINIK MUELLER POUR SA GENTILLESSE ET SON ACCORD A CETTE
TRADUCTION.
NOTE : Cette traduction se veut la plus fidΦle que possible de l'original;
cependant, en cas de doute, rΘfΘrez-vous α la documentation originale en
anglais, sur ce disque ou disponible auprΦs du B.U.G.S.S.
Pour tous renseignements, questions, propositions, etc...
SI VOUS AVEZ TRADUIT DES DOCS DE PROGRAMMES DOMAINE PUBLIC ETRANGERS
ET SOUHAITEZ LES VOIR DISTRIBUES,
Ou si vous avez Θcrit un logiciel Domaine Public (ou Shareware) et
souhaitez le voir distribuΘ,
contactez OBP ELECTRONIXS ou le BUGSS (association loi 1901) auprΦs de :
BUGSS
4, Place de l'Aube
33170 GRADIGNAN
FRANCE
ou E-MAIL: INTERNET berger@geocub.greco-prog.fr
ou berger@platon.greco-prog.fr
pour les franτais possesseurs d'un minitel
36 14 CHEZ*BUGSS
(C) 1991 OBP ELECTRONIXS - BUGSS pour traduction franτaise !
Supportez les auteurs de programmes Domaine Public ou Shareware et
faεtes de l'Amiga la machine de vos rΩves.
Et rappelez vous : SEUL L'AMIGA PEUT LE FAIRE !!!