home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
back2roots/padua
/
padua.7z
/
padua
/
shell
/
csh531f.lha
/
csh_531
/
tips.doc
< prev
next >
Wrap
Text File
|
1993-07-15
|
7KB
|
212 lines
Quelques bonnes trucs et astuces que j'ai rassemblΘ:
EDITION
Les situations trΦs courantes:
$ mkdir documents
$ cd documents
peut Ωtre abrΘgΘe par:
$ mk documents
$ [CTRL-T] (insΦre tout sauf le premier mot de la ligne
Aussi trΦs courant:
$ mv document document1
$mv [CTRL-P]1
La fonction CTRL-P duplique le mot prΘcΘdent sur la ligne de commande
Vous pourriez vous Ωtre demandΘ en quoi CTRL-N (laisse la ligne courante)
peut vous Ωtre utile.
Supposons, par exemple, que vous avez tapΘ
$ rm dh1:graphics/lo-res/gorilla
quand il vous vient α l'esprit que vous prΘfereriez garder une copie de cette
image sur disquette. Plusieurs effaceraient la ligne de commande. Comme vous
avez de la classe, vous faεtes ce qui suit:
$ [CTRL-N] (laisse la ligne de commande tranquile)
$ co [CTRL-T] df0:
$ [FlΦche-Haute][FlΦche-Haute] (reprend la lignede commande que vous aviez
laissΘ)
Au cas o∙ vous ne sauriez pas ce qu'est la complΘtion sur l'historique:
$ search *.c *.h makefile toto
$ ram:
$ dir
$ rm tmpfile
Maintenant si vous voulez rΘpΘter la commande search, entrez
$ se[Shift-FlΦche-Haute]
ce qui rapelle la derniΦre commande commenτant par 'se'.
Si jamais vous cyclez trop loing en utilisant la touche TAB, en dΘpassant
l'entrΘe que vous vouliez, vous pouvez revenir en arriΦre d'une entrΘe en
utilisant CTRL-U [undo]. La mΩme chose s'applique si vous aviez entrΘ une
abrΘviation, pressΘ TAB mais vu que l'abbrΘviation Θtait trop courte.
Si vous voulez effacer le fichier
$ rm dh2:comm/uucp/mail/junk/409
et que vous Ωtes loin de ce rΘpertoire, entrez
$ rm ju[ESC-c]409 (entre le chemin correspondant α cd ju)
La mΩme fonction est aussi utilisable pour 'cd'. Supposons que vous avez
plusieurs rΘpertoires 'junk':
$ ju[ESC-c][CTRL-R][CTRL-R][CTRL-R]
Comme ceci vous cyclerez α travers les rΘpertoires junk. Quand vous aurez le
bon, appuyez sur enter.
Supposons qu'il y a les fichiers comm1.c, comm2.c, et comm3.c avec leurs
fichiers .o correspondants. Vous voulez comm3.c:
$ co[Shift-Tab]1[Tab]
Bien s√r ceci est plus utile surdes noms de fichiers plus longs.
Vous pouvez complΘter un nom de fichier par tab sur n'importe quel motif,
pas seulement les abrΘviations. Supposons que vous voulez effacer tous les
fichiers .c dans le rΘpertoire courant sauf le dernier:
$ rm *.c[ESC-Tab][CTRL-W]
De plus, vous pouvez voir tous les fichiers encore une fois avant de les
effacer.
Ensuite: Vous avez entrΘ:
$ dir
$ foreach i ( *.c ) "e >>ram:temp $i
et vous voudriez effectuer les mΩmes trois actions α nouveau, entrez:
$ [FlΦche-Haute][FlΦche-Haute][FlΦche-Haute][ESC-Return][CTRL-R][CTRL-R]
Je sais que l'Θdition n'est pas trΦs conviviale. C'est parce qu'il est assez
difficile et dangereux de prendre des codes raw sur la console, et il est
impossible de prendre ces codes depuis un terminal VT200. Ainsi j'ai me
dΘbrouiller avec des combinaisons de CTRL et ESC. Une fois que vous les avez
appris (certains d'entre eux sont similaire α EMACS), vous Θconomisez
beaucoup de frappe.
COMMANDES
Mon conseil ici est trΦs clair: Utilisez les alias, les alias, les alias.
Pour Ωtre capable de les crΘer aussi vite que possible, crΘez un alias (par
ex. 'le') qui Θdite votre fichier de login, plus un autre (par ex. 'lx'),
qui le rΘexΘcute. Mon login ne contient quasiment que des alias, tout le
reste, je l'ai mis dans 'firstlogin.sh'.
Si vous n'aimez pas mes options par dΘfaut pour une commande, vous pouvez
en ajouter en utilisant un alias:
$ alias dir "dir -q
A partir de lα, les blocs ne seront plus affichΘs dans 'dir'.
Si vous alias ont des arguments, par ex.:
$ alias sc "search *.c
des problΦmes surgissent lorsque vous essayez de spΘcifier des options, par
exemple la sensibilitΘ aux majuscules:
$ sc -c "bonjour tout le monde
Ceci ne marchera evidemment pas. C'est ce que rΘsoud @pickopts:
$ alias sc "%a serach @pickopts( $a ) *.c @pickargs( $a )
Une fois que vous avez des alias, il est utile de les garder triΘs. Vous
pourriez aussi les documenter: crΘez un fichier 'alias.doc', et faites
$ set _man alias.doc csh.doc
De cette faτon vous pouvez les documenter dans un fichier sΘparΘ.
Si vous vouliez crΘer des alias qui acceptent des arguments, vous pouvez
les implΘmenter en utilisant 'if -o'.
$ alias bon "%a if -o v $a;echo -n "tres ";endif;echo bon boulot, @arg( $a )
$ bon olivier --> bon boulot, olivier
$ bon -v olivier --> tres bon boulot, olivier
'cat' peut Ωtre utilisΘ pour crΘer de petits fichiers de texte:
$ cat >monfichier
bonjour
[CTRL-\]
La combinaison de touches CTRL-\ crΘe un caractΦre de fin de fichier
FONCTIONS
@age est trΦs utile pour archiver les scripts:
$ foreach i ( * ) "if @age( $i ) > 30;cp -m $i backup:;endif
@clinum peut Ωtre utilisΘ pour rendre 'break' et 'pri' plus flexibles:
$ alias break "%a break @clinum( $a )
Maintenant vous pouvez faire, par exemple, 'break cc'. Les numΘros de Cli
sont toujours autorisΘs.
@complete simule l'effet de la complΘtion des noms de fichiers par TAB. De
cette faτon, vous n'avez plus besoin de presser TAB pour cela:
$ alias edit "%a ced @complete( $a * )
@confirm peut Ωtre uitilisΘ pour un 'rm' s√r:
$ alias rm "%a rm @confirm( $a )
@howmany est utile au lancement:
$ if $howmany = 1;window -l;endif
@intersect, @union et @without conviennent bien α de nombreuses applications
Si vous stockez, par exemple, tous les fichiers d'un de vos amis, dans la
variable $him, (il peut faire un 'dir -np .../ >temp', vous faites alors un
'readf him <temp'), et vos fichiers dans $me, alors vous pouvez savoir ce
qu'il a et pas vous en utilisant
$ echo @without( $him , $me )
Pour ignorer des noms de chemins diffΘrents, utilisez
$ set him @basename( $ him )
Si vous avez les noms de fichiers sans les chemins, vous pouvez retrouver le
chemin en 'search'ant le fichier temp.
@opt et @arg sont utilisΘs chaque fois que vous avez qui spΘcifie dΘjα des
arguments, mais autorise l'utilisateur α spΘcifier des options additionelles.
$ alias sc "%a search @opt( $a ) *.c @arg( $a )
@volume peut Ωtre utilisΘ pour tester si il y a un disque dans un certain
lecteur. Il supprimera les requesters et retourne une chaεne vide s'il n'y
a pas de disque.
VARIABLES
$_except peut Ωtre rendue locale. Dans ce cas vous avez un traitement
d'erreur spΘcial pour l'alias ou le fichier script courant.
$_man peut contenir les noms de plus d'un fichier .doc. De cette faτon, vous
pourriez ajouter de la documentation pour vos propres alias.
Lorsque vous travaillez avec des gros fichiers et les pipes, vous pourriez
souhaiter mettre $_pipe vers un rΘpertoire sur votre disque dur.
INTERPRETEUR
Si vous avez besoin d'ajouter une chaεne α une variable, vous pouvez le faire
de cette faτon:
$ set toto truc
$ echo $foo""bidule --> trucbidule
Le "" n'est pas nΘcessaire si le premier caractΦre de la chaεne α Ωtre ajoutΘe
n'est ni une lettre ni un chiffre ni un _.
Pour Ωtre s√r qu'aucune commande interne n'est exΘcutΘe, mettez la premiΦre
lettre de votre commande en majuscule:
$ Dir ram: ALL
Pour ne pas tenir compte des alias existants sur une commande, entrez:
$ alias echo "xxxxxx
$ \echo bonjour --> bonjour