Les shells UNIX : Le C Shell
proc1
proc2
proc3
proc1 ; proc2 ; proc3
proc &
< | l'entrée standard est lu à partir d'un fichier |
> | La sortie standard est redirigée dans un fichier (RAZ du fichier) |
>> | La sortie standard est redirigée dans un fichier (concaténation du fichier) |
>& | La sortie standard et les erreurs sont redirigées dans un fichier(RAZ du fichier) |
>>& | La sortie standard et les erreurs sont redirigées dans un fichier(concaténation du fichier) |
proc1 | proc2
équivaut à
proc1 > fich
proc2< fich
proc1 ||& proc2 : proc2 reçoit en entrée les sorties standards et les erreurs de proc1
* | n'importe quelle chaîne de caractères |
? | n'importe quel caractère |
[ ... ] | l'intervalle décrit entre les crochets |
{ ... } | un des caractère décrit entre les accolades |
~ | le home directory |
~user | le home directory du compte user |
exécution du fichier .login et .cshrc pour initialiser l'environnement
.login est exécuté une seule fois lors du login
.cshrc est exécuté à chaque ouverture d'une session C Shell (ex: ouverture d'une fenêtre)
.logout est exécuté lors du logout
variables locales au shell courant (en général en minuscule)
définie par la commande set
argv | les arguments de la ligne de commande (numérotées à partir de 1) |
autologout | temps de déconnexion automatique d'un shell (en minutes) |
cwd | le chemin du répertoire courant |
home | le home directory |
ignoreeof | si elle n'est pas initialisée, on ne peut pas se déconnecter par ^D |
cdpath | chemin de recherche pour les commandes cd, pushd, chdir |
notify | si elle est positionnée, l'utilisateur est immédiatement avertie à la terminaison d'un processus en tache de fond. Sinon il est avertie lors d'un shell prompt |
path | chemin de recherche pour l'exécution des commandes |
prompt | positionne la valeur du prompt |
shell | indique le shell courant |
status | retourne le status de la dernière commande exécutée (0 si elle s'est bien exécutée) |
variables globales exportées aux sous shells (en général en majuscule)
définie par la commande setenv
trois variables sont automatiquement importées et exportées
PATH | path |
TERM | term |
USER | user |
set history = 20 | créer un buffer pour enregistrer les 20 derniers commandes |
set savehist = 15 | sauvegarde les 15 derniers commandes lors du logout et les restaure au login |
set prompt = "[\!]%" | affiche le numéro de la commande dans le prompt |
!! | commande précédente |
!n | nieme commande |
!-n | emplacement relatif (n commandes ont été exécutées depuis) |
!car | la dernière commande commençant par car |
!n:i | le iieme argument de la commande n (la commande est numérotée 0) |
!n:$ | le dernier argument de la commande n |
!n:^ | le deuxième argument de la commande n (le premier paramètre de la commande) |
!n:i-$ | référence les arguments du iieme au dernier de la commande n |
!n:* | tous les arguments de la commandes n |
commande | paramètres à modifier : modification |
s/old/new | remplace la première occurrence de old par new |
g | substitution globale (à combiner avec une autre commande) |
h | garde uniquement la partie répertoire du nom de fichier |
p | imprime la commande sans l'exécuter |
q | empêche une modification future |
r | enlève l'extension du nom du fichier |
t | garde le dernier élément du nom du fichier |
& | recommence la dernière substitution |
Pour personnaliser les commandes
alias | pour obtenir la liste des alias |
alias ch cmd | positionne l'alias
ex alias rm rm -i
alias cd 'cd \!* ; ls'
!* correspond à une commande d'history |
unalias ch | détruit l'alias |
csh nom_fichier
ou rendre le fichier exécutable (chmod u+x nom_fichier) puis taper le nom du fichier
Pour forcer l'exécution du fichier en C Shell, le fichier doit commencer par #!/bin/csh
csh -n nom_fichier | interprète les commandes sans les exécuter |
csh -v nom_fichier | imprime les lignes comme elles sont lues |
csh -x nom_fichier | imprime les lignes comme elles sont interprétées |
set variable valeur | affectation |
$variable | valeur de la variable |
${variable} | valeur de la variable |
$?variable | renvoie 0 si la variable n'est pas initialisée, 1 sinon |
$# | indique le nombre de composants (séparés par des blancs) dont est composés la variable |
$n | équivaut à $argv[n] mais ne sortira jamais d'erreur out of range |
$* | liste des paramètres (équivaut à $argv) |
$$ | le numéro de processus de la dernière commande |
$< | remplacé par la prochaine entrée courante (pour les scripts interactifs)
var=$< équivaut à read var en Bourne Shell |
\ | banalise le caractère suivant |
"..." | banalise les caractères sauf \ , $ et ` |
'...' | banalise tous les caractères |
`...` | substitution de commande |
% num | préfixe pour les numéro de job (le numéro de job est indiqué lors du lancement d'une commande en background)
Pour visualiser la liste des jobs : jobs |
if (exp) then
liste_commandes
[else if ( exp ) then
liste_commandes] ...
[else
liste_commandes]
endif
if (exp) commande
if (exp) \
commande
while (exp)
liste_commandes
end
foreach index_var (liste)
liste_commandes
end
break : arrête la boucle
continue: arrête l'itération courante de la boucle et commence la prochaine itération
foreach i ($argv)
if ($i != *.c) then
echo " $i n'est pas un programme C"
continue
else
echo " $i est un programme C"
endif
cc $i
end
switch ( para )
case choix1 :
liste_commandes
breaksw
default :
liste_commandes
breaksw
endsw
boucle :
liste_commandes
goto boucle
-e fichier | vrai si le fichier existe |
-r fichier | vrai si le fichier existe et est accessible en lecture (R) |
-w fichier | vrai si le fichier existe et est accessible en écriture (W) |
-x fichier | vrai si le fichier existe et est exécutable (X) |
-f fichier | vrai si le fichier existe et est un fichier régulier |
-d fichier | vrai si le fichier existe et est un répertoire |
-z fichier | vrai si le fichier existe et a une taille non nulle |
-o fichier | vrai si le fichier existe et nous appartient |
# | commentaire |
(cmde) | exécute la commande dans un sous-shell |
{cmde} | permet de savoir si une commande s'est bien passée (1) ou non (0) |
cmd1 && cmd2 | séparateur conditionnel (cmd2 sera exécuté si cmd1 s'est exécuté correctement) |
cmd1 || cmd2 | séparateur conditionnel (cmd2 sera exécuté si cmd1 ne s'est pas exécuté correctement) |
source script | exécution du script dans le shell courant |
rehash | reconstruit la hash table de localisation des commandes |
repeat n cmd | répète la commande n fois |
setenv/unsetenv | positionne une variable d'environnement |
time cmde | détermine le temps d'exécution de la commande |
@var = exp | assigne une valeur à une variable numérique |
() , + , - , * , / | opérations arithmétiques classiques |
% | reste |
^ | ou exclusif bit à bit |
~ | complément unaire |
== | comparaison |
!= | diffèrent de |
! | négation |
> ,< ,>= ,<= | comparaison |
>> | décalage à droite |
<< | décalage à gauche |
& | Et bit à bit |
| | Ou bit à bit |
&& | Et logique |
|| | Ou logique |
= | affectation |
+= | x+=y équivaut à x = x + y |
-= | x-=y équivaut à x = x - y |
*= | x*=y équivaut à x = x * y |
/= | x/=y équivaut à x = x / y |
%= | x%=y équivaut à x = x % y |
^= | x^=y équivaut à x = x ^ y |
++ | x++ équivaut à x = x + 1 |
-- | x-- équivaut à x = x - 1 |
Attention, les opération suivantes ne marchent pas : &=, |=,<<=,>>=
© Isabelle Vollant
( http://www.multimania.com/vollant )
mise à jour le 10/04/97