Processus séquentiels
proc1
proc2
proc3
proc1 ; proc2 ; proc3
Processus en batch
proc &
Redirection des entrées-sortie
| < |
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) |
Les pipes
proc1 | proc2
équivaut à
proc1 > fich
proc2< fich
proc1 ||& proc2 : proc2 reçoit en entrée les sorties
standards et les erreurs de proc1
Génération des noms de fichiers
| * |
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 |
Le login
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
Les paramètres du shell
Les variables shell
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) |
Les variables d'environnement
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 |
L'historique des commandes
| 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 |
Reexecuter les commandes
| !! |
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 |
Réutiliser les arguments
| !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 |
Modifier les commandes précédentes
| 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 |
Les alias
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 |
L'exécution d'un script en C Shell
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 |
Les variables
| 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 |
récupération des paramètres
dans la ligne de commande
| $# |
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) |
Quelques variables spéciales
| $$ |
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 |
Les caractères spéciaux
| \ |
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 |
Les instructions
if
if (exp) then
liste_commandes
[else if ( exp ) then
liste_commandes] ...
[else
liste_commandes]
endif
if (exp) commande
if (exp) \
commande
while
while (exp)
liste_commandes
end
foreach
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
switch ( para )
case choix1 :
liste_commandes
breaksw
default :
liste_commandes
breaksw
endsw
goto
boucle :
liste_commandes
goto boucle
les tests
| -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 |
divers
| # |
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 |
Les opérateurs arithmétiques
| @var = exp |
assigne une valeur à une variable numérique |
| () , + , - , * , / |
opérations arithmétiques classiques |
| % |
reste |
| ^ |
ou exclusif bit à bit |
| ~ |
complément unaire |
Les opérateurs booléens
| == |
comparaison |
| != |
diffèrent de |
| ! |
négation |
| > ,< ,>= ,<= |
comparaison |
| >> |
décalage à droite |
| << |
décalage à gauche |
| & |
Et bit à bit |
| | |
Ou bit à bit |
| && |
Et logique |
| || |
Ou logique |
Les opérateurs d'affectation
| = |
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 : &=, |=,<<=,>>=