
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