home

commandes Unix

sh

csh

ksh

expressions régulières

sed

awk

Les shells UNIX : Le C Shell


Processus séquentiels
Processus en batch
Redirection des entrées-sorties
Les pipes
Génération des noms de fichiers
Le login
Les paramètres du shell
Les variables du shell
Les variables d'environnement
L'historique des commandes
Reexecuter les commandes
Réutiliser les arguments
Modifier les commandes précédentes
Les alias L'exécution d'un script en Bourne Shell Les variables
récupération des paramètres dans la ligne de commande
Quelques variables spéciales
Les caractères spéciaux Les instructions
if
while
foreach
switch
goto
les tests
divers
Les opérateurs arithmétiques
Les opérateurs booléens
Les opérateurs d'affectation

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


© Isabelle Vollant ( http://www.multimania.com/vollant )


home

commandes Unix

sh

csh

ksh

expressions régulières

sed

awk

mise à jour le 10/04/97
Francité Click Here!