Le format général d'une commande sous UNIX suit le modèle suivant :
nom_de_la_commande -options arguments
Les options et arguments forment ce que l'on appelle les "paramètres" de la
commande.
Les métacaractères du shell permettent :
On appelle "expression régulière" une chaîne de caractères composée de caractères normaux et de caractères spéciaux, appelés "métacaractères des expressions régulières" (à ne pas confondre avec les métacaractères du shell décrits plus haut !). Comme toutes les chaînes de caractères, on peut écrire une expression régulière entre apostrophes, entre guillemets ou seule, mais on évitera cette dernière possibilité, et on conseille même d'utiliser la notation entre apostrophes. Les principaux métacaractères des expressions régulières sont les suivants :
Exemples :
Il est possible, sous UNIX, de rediriger l'entrée standard ou la sortie standard d'une commande :
Remarque :
Une redirection en entrée est toujours suivie d'un nom de fichier, mais jamais du
résultat d'une commande.
Il est possible de rediriger la sortie standard des erreurs sur un fichier, de l'une des
deux manières suivantes :
[commande] 2> [nom_fichier]
ou :
[commande] 2>> [nom_fichier]
Elle permet d'afficher le contenu de l'entrée standard (ou, s'il y a lieu, le contenu du ou des fichiers donnés en arguments, en les concaténant) sur la sortie standard.
Syntaxe :
cat [-nbsuvet] [nom_fichier ...]
Options :
Exemple :
cat fich1 fich2 > fich2
Cette commande recopie fich1 puis, à la suite, fich2, le
tout dans fich2
Codes d'erreur retournés :
Elle permet de changer de répertoire, de manière relative ou absolue.
Syntaxe :
cd [nom_répertoire]
Lorsque la commande est tapée sans argument, on se positionne dans le répertoire
principal ("home directory").
Options :
néant.
Exemple :
cd ../../TD
Codes d'erreur retournés :
Elle permet de modifier les droits d'accès à un ou à plusieurs fichiers ou répertoires dont on est le propriétaire.
Syntaxe :
chmod [-fR] [type_utilisateur...]+|-r|w|x nom_de_fichier [...]
Options :
cf. la description de la commande chmod, en tapant : man
chmod
Exemple :
chmod g+rx /home/mod4g0/TD/td12ex*
Codes d'erreur retournés :
Elle effectue la comparaison des contenus de deux fichiers. Appelée sans option, elle renvoie le numéro du premier octet qui diffère. Elle ne retourne rien si les deux fichiers sont identiques.
Syntaxe :
cmp [-l] [-s] nom_fichier1 nom_fichier2 [skip1] [skip2]
Options :
Exemple :
cmp `ls|head -1` `ls|tail -1`
Codes d'erreur retournés :
Remarques :
- Si nom_fichier1 vaut -, alors la comparaison est
effectuée sur l'entrée standard.
- Les arguments optionnels skip1 et skip2 permettent de
comparer le contenu du premier fichier, à partir de l'octet numéro skip1,
au contenu du deuxième fichier, à partir de l'octet numéro skip2.
Elle permet de copier un ou plusieurs fichiers, en changeant éventuellement leurs noms.
Syntaxe :
cp [-fip] nom_fichier nom_copie_fichier
Si on désire copier plusieurs fichiers en une seule commande, on peut utiliser les
métacaractères du shell, comme dans l'exemple ci-après, mais on ne peut pas écrire une
liste de fichiers.
Options :
cf. la description de la commande cp, en tapant : man cp
Exemple :
cp PREPA/TD/td12ex* TD
Cette commande copie tous les fichiers du répertoire PREPA/TD, de nom
commençant par td12ex, dans le répertoire TD, sans
changer leurs noms.
Codes d'erreur retournés :
Elle permet de supprimer une partie des lignes d'un ou de plusieurs fichiers, ou de l'entrée standard.
Syntaxe :
cut -bliste [-n] [nom_fichier ...]
ou :
cut -cliste [nom_fichier ...]
ou :
cut -fliste [-ddélimiteur] [-s] [nom_fichier ...]
Options :
Exemple :
ls | cut -f1-2 -s -d'.'
Cette commande affiche la liste des noms de fichiers ou de sous-répertoires du
répertoire courant comprenant une extension.
Codes d'erreur retournés :
Remarque :
Les options -bliste, -cliste, -fliste et -ddélimiteur
peuvent être écrites avec un espace situé juste avant la liste ou le délimiteur.
Elle affiche la date.
Syntaxe :
date [-u] [+format]
Options :
cf. la description de la commande date, en tapant : man
date
Exemple :
date
affiche la date sous la forme :
Mon Dec 8 21:05:47 MET 1997
Codes d'erreur retournés :
Elle permet d'afficher une ou plusieurs chaînes de caractères à l'écran. Cette commande est interprétée de manière sensiblement différente d'un shell à un autre.
Syntaxe :
echo [chaîne ...]
Options :
néant.
Exemple :
echo "répertoire courant : `ls`"
Cette commande affiche le message répertoire courant : , suivi de la
liste des fichiers et sous-répertoires contenus dans le répertoire courant.
Codes d'erreur retournés :
Remarque :
La commande echo reconnaît également certains caractères spéciaux
commençant par \ et appelés "caractères de contrôle", qui
peuvent être écrits de deux manières différentes :
Elle procède en deux temps :
Syntaxe :
eval [argument1 ...]
Options :
néant.
Exemple :
a=1
c=a
a1=3
eval b=\$$c$a
echo $b
Cette séquence affichera la valeur 3, car la première évaluation de la
commande eval produit la commande suivante :
b=$a1
Codes d'erreur retournés :
Elle permet de sortir du shell courant, en précisant éventuellement la valeur du code de retour.
Syntaxe :
exit [code_retour]
Options :
néant.
Exemple :
Si la commande :
exit
est tapée dans la fenêtre "racine", cela provoque une déconnexion.
Codes d'erreur retournés :
Elle permet d'effectuer des opérations arithmétiques et logiques, ainsi que des manipulations de chaînes de caractères, et renvoie le résultat sur la sortie standard.
Syntaxe :
expr argument1 opérateur1 argument2 [opérateur2 argument3 ...]
oł les arguments argument1, argument2, argument3,...
peuvent être des chaînes de caractères, des entiers, des résultats de commandes, des
valeurs de paramètres positionnels, des valeurs de variables ou toute combinaison des cas
précédents, et oł l'opérateur appartient à la liste non exhaustive
suivante :
Options :
néant.
Exemple 1 :
a=2
b=3
a=`expr $b % $a`
echo $a
produira l'affichage de la valeur 1
Exemple 2 :
chaine="caracteres"
sschaine=`expr $chaine : '\(.*\)t'`
echo $sschaine
produira l'affichage suivant :
carac
On aurait pu écrire l'expression régulière sous d'autres formes :
'\(.*\)t.*'
'\(.*\)teres'
...
Codes d'erreur retournés :
Remarque :
Dans le cas oł la commande expr est lancée avec plusieurs opérateurs,
il faut être vigilant, car l'ordre des opérations ne se fait ni de gauche à droite, ni
de droite à gauche, mais suivant un ordre prédéfini de priorité des opérateurs.
Elle permet de déterminer le type d'un ou de plusieurs fichiers, ce type appartenant à la liste non exhaustive suivante :
Syntaxe :
file [-h] [-m types_fichiers] [-f fichier_liste] nom_fichier [...]
Options :
cf. la description de la commande file, en tapant : man
file
Exemple :
Si le fichier exo1.c contient un programme C, la commande :
file exo1.c
produira l'affichage suivant :
xo1.c: ascii text
Codes d'erreur retournés :
Elle permet de rechercher une expression régulière dans un ou plusieurs fichiers donnés en arguments.
Syntaxe :
grep [-bchilnsvw] expression_régulière [nom_fichier ...]
Options :
Exemple :
grep 'grep' *
Cette commande affiche toutes les lignes de tous les fichiers du répertoire de travail
qui contiennent une occurence de la chaîne de caractères grep
Codes d'erreur retournés :
Elle copie l'entrée standard, ou le ou les fichiers donnés en arguments, sur la sortie standard, jusqu'à une position désignée.
Syntaxe :
head [-position|-nposition] [nom_fichier ...]
Options :
Exemple :
head -5 fichier.c
Cette commande renvoie les 5 premières lignes du fichier fichier.c
Codes d'erreur retournés :
Elle permet d'envoyer un signal à un ou à plusieurs processus dont on connaît les identificateurs.
Syntaxe :
kill [-signal] identificateur_processus [...]
ou :
kill -l
Options :
Exemple :
kill -9 1345
Cette commande envoie le signal 9 au processus d'identificateur 1345
Le signal 9, qui permet de "tuer" un processus, est le plus
souvent utilisé. Le signal envoyé par défaut est 15
Codes d'erreur retournés :
Cette commande permet d'afficher le contenu d'un ou de plusieurs répertoires, ou des renseignements concernant un ou plusieurs fichiers.
Syntaxe :
ls [-RadLCxmlnogrtucpFbqisf1AM] [nom_répertoire ...]
ou :
ls [-RadLCxmlnogrtucpFbqisf1AM] [nom_fichier ...]
Cas particulier :
Options :
Exemple 1 :
tgv% ls -l
Exemple 2 :
ls `ls`
Cette commande affiche la liste des fichiers du répertoire courant, puis la liste des
contenus des sous-répertoires du répertoire courant.
Codes d'erreur retournés :
Elle permet d'envoyer ou de lire un courrier électronique.
Syntaxe :
Envoi d'un courrier : mail [-tw] [-mtype_du_message] adresse_destinataire
[...]
Lecture du courrier : mail [-ehpPqr] [-ffichier]
Options :
cf. la description de la commande mail, en tapant : man
mail
Exemple :
mail mod4g0@mdi.edu.ups-tlse.fr < message
Cette commande envoie le texte contenu dans le fichier message à
l'adresse du destinataire.
Codes d'erreur retournés :
Elle permet d'obtenir la description d'une commande à l'écran.
Syntaxe :
man [-] [-adFlrt] [-Marborescence] [-Tmacro-package] [-ssection]
nom_commande [...]
Options :
cf. la description de la commande man, en tapant : man man
Exemple :
man ls
Codes d'erreur retournés :
Elle permet de créer un ou plusieurs répertoires, dont les noms sont précisés en arguments. Elle renvoie un message d'erreur dans les cas oł la création est impossible.
Syntaxe :
mkdir [-mmode] [-p] nom_répertoire [...]
Options :
Exemple 1 :
Supposons que l'on veuille créer le répertoire rep1 et son
sous-répertoire ssrep1, dans le répertoire rep du
répertoire courant. Il faut taper la commande :
mkdir -p rep/rep1/ssrep1
Exemple 2 :
Supposons que l'on veuille créer le répertoire rep2 dans le répertoire
courant, en enlevant les droits en lecture et en écriture à toute personne non
propriétaire du compte. Il faut taper la commande :
mkdir -mog-rw rep2
Codes d'erreur retournés :
Elle permet de faire afficher le contenu d'un ou de plusieurs fichiers page par page. Elle est une version plus interactive de la commande cat :
Syntaxe :
more [-cdflrsuw] [-lignes] [+numéro_ligne] [+/modèle] [nom_fichier ...]
Options :
cf. la description de la commande more, en tapant : man
more
Exemple :
more temp
Codes d'erreur retournés :
cf. la description de la commande more, en tapant : man
more
Elle permet de renommer un fichiers ou un répertoire, ou de déplacer un ou plusieurs fichiers dans l'arborescence, en changeant éventuellement leurs noms.
Syntaxe :
mv [-fi] ancien_nom nouveau_nom
ou :
mv [-fi] nom_fichier ... nom_répertoire
Options :
cf. la description de la commande mv, en tapant : man mv
Exemple 1 :
mv charabia.c ex1.c
Exemple 2 :
mv TD/td12ex* TD/td13ex* PREPA
Codes d'erreur retournés :
Elle permet d'afficher la liste des processus en cours d'activité. Lancée sans option, elle n'affiche que les processus actifs de l'utilisateur associés au terminal utilisé.
Syntaxe :
ps [-aAcdefjl] [-g nom] [-n nom] [[-o format] ...] [-p nom] [-s nom] [-t terminaux]
[-u utilisateurs] [-U nom] [-G nom]
Les processus sont affichés suivant un format variable, mais le format par défaut
comprend les quatre champs suivants sur une même ligne :
Options :
Exemple :
ps -e | grep asedit | wc -l
Cette commande retourne le nombre de processus en cours d'exécution associés à
l'éditeur asedit
Codes d'erreur retournés :
Elle affiche le nom absolu du répertoire de travail (appelé aussi "répertoire courant").
Syntaxe :
pwd
Options :
néant.
Exemple :
tgv% pwd
/home/mod4g0/TD
Codes d'erreur retournés :
Cette commande permet d'affecter des valeurs à des variables à partir de l'entrée standard.
Syntaxe :
read [-r] nom_variable [...]
Options :
-r : le caractère \ est considéré comme un caractère
ordinaire.
Exemple :
read a b
echo $a
echo $b
Si la ligne suivante est tapée au clavier :
c'est un exemple
alors les commandes echo produiront les affichages suivants :
c'est
un exemple
ce qui signifie que, si le nombre de mots (séparés par des espaces ou des tabulations)
est supérieur au nombre d'arguments de la commande read, alors la
variable correspondant au dernier argument reçoit toute la fin de la ligne.
Codes d'erreur retournés :
Elle permet d'effacer un ou plusieurs fichiers passés en arguments.
Syntaxe :
rm [-f] [-i] nom_fichier [...]
Options :
Exemple :
rm *
Cet exemple doit être évité en général !
Codes d'erreur retournés :
Elle permet d'effacer un ou plusieurs répertoires passés en arguments. Ces répertoires doivent être vides.
Syntaxe :
rmdir [-ps] nom_répertoire ...
Options :
cf. la description de la commande rmdir, en tapant : man
rmdir
Exemple :
rmdir ..
Cette commande provoque systématiquement une erreur, car le répertoire père du
répertoire de travail ne peut pas être vide !
Codes d'erreur retournés :
Cette commande permet de lancer un shell fils de type shell de Bourne (ksh
pour un korn shell, csh pour un Cshell, bash pour ...).
Elle permet aussi d'exécuter un script shell dans le cadre de ce shell fils.
Syntaxe 1 :
sh [-acefhiknprstuvx]
Le shell fils qui est lancé lit et interprète les commandes tapées sur l'entrée
standard. Pour retourner au shell père, il faut taper la commande exit
Syntaxe 2 :
sh [-acefhiknprstuvx] [nom_script ...]
Les arguments sont des noms de scripts shell.
Options :
cf. la description de la commande sh, en tapant : man sh
Exemple 1 :
tgv% sh
$ pwd
/home/mod4g0
$ exit
tgv%
Exemple 2 :
sh exo1.sh
Cette commande lance le script shell contenu dans le fichier exo1.sh
Une façon équivalente de lancer ce script est de le rendre exécutable, en tapant la
commande :
chmod u+x exo1.sh
puis en tapant :
exo1.sh
Codes d'erreur retournés :
Le code d'erreur retourné par la commande sh est le code d'erreur
retourné par la dernière commande exécutée dans le cadre du shell fils. Dans le cas
oł un script shell est lancé, si une commande retourne un code d'erreur non nul, alors
l'exécution du script est interrompue.
Elle lit un ou plusieurs fichiers ou l'entrée standard, et affiche les différentes lignes, triées sur un ou plusieurs champs (par défaut, sur un seul champ qui est la ligne), selon l'ordre lexicographique (les séparateurs de deux champs sont par défaut l'espace et la tabulation).
Syntaxe :
sort [-cmu] [-o sortie] [-T répertoire] [-y[mémoire]] [-dfiMnr] [-b] [-t
caractère] [-k clé] [+pos1 [-pos2]] [nom_fichier ...]
Options :
Exemple :
Si le fichier liste_noms contient une liste de noms-prénoms structurés
de la manière suivante :
Alain VERSE
Jean REVE
...
alors la commande :
sort +1 liste_noms
affichera ce fichier, trié par ordre alphabétique des noms de famille.
Codes d'erreur retournés :
Elle copie l'entrée standard, ou le fichier donné en argument, sur la sortie standard,
à partir de la position désignée.
Syntaxe :
tail [+/-position[lbcr]] [nom_fichier]
Options :
Exemple :
tail -15c fichier.c
Cette commande renvoie les 15 derniers caractères du fichier fichier.c
Codes d'erreur retournés :
Elle permet d'afficher l'entrée standard simultanément sur la sortie standard et sur le
ou les fichiers passés en arguments.
Syntaxe :
tee [-ai] [nom_fichier ...]
Options :
Exemple :
ls | tee liste_fichiers
Cette commande affiche, d'une part, le contenu du répertoire courant à l'écran et
écrit, d'autre part, ce contenu dans le fichier liste_fichiers
Codes d'erreur retournés :
Elle permet le "transcodage" de caractères entre l'entrée standard et la sortie standard. Cette commande fonctionne aussi avec les caractères de contrôle déjà signalés plus haut.
Syntaxe :
tr -ds chaine
ou :
tr [-c] chaine1 chaine2
Options :
Exemple 1 :
tr 'abc' 'ABC'
Cette commande attend l'entrée de données au clavier. Si on tape :
calebasse
chaque occurence d'un a est remplacé par un A, chaque
occurence d'un b est remplacé par un B et chaque
occurence d'un c est remplacé par un C, ce qui donne dans
le cas présent :
CAleBAsse
Exemple 2 :
tr '\012' ' '
Cette commande va substituer chaque saut de ligne par un espace.
Codes d'erreur retournés :
Cette commande (abréviation de "word count") permet de compter le nombre de lignes, de mots ou de lettres dans le ou les fichiers passés en arguments ou, à défaut, sur l'entrée standard.
Syntaxe :
wc [-c|-m|-C] [-lw] [nom_fichier ...]
Options :
Exemple :
wc -l exam
Cette commande affiche le nombre de lignes du fichier exam
Codes d'erreur retournés :
Cette commande permet l'affichage des utilisateurs connectés sur la machine.
Syntaxe :
who
Ces pages ont été adaptées à partir de celles réalisées par J.D. Durou et Ph. Joly avec leur aimable autorisation.