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 : &=, |=,<<=,>>=