retour sur @lyon coup de coeur du jour discussion roulette meteo locale Le C shell retour
editorial contact par mail

 

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 
! nieme commande 
!- emplacement relatif (n commandes ont été exécutées depuis) 
!car  la dernière commande commençant par car 

Réutiliser les arguments

!n: 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 
substitution globale (à combiner avec une autre commande) 
garde uniquement la partie répertoire du nom de fichier 
imprime la commande sans l'exécuter 
empêche une modification future 
enlève l'extension du nom du fichier 
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 
$ é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 : &=, |=,<<=,>>=