Année universitaire 2002-2003 |
Licence d'informatique
|
Dans la deuxième syntaxe, le caractère - (qui doit précéder nom_fichier2) désigne l'entrée standard. Il ne faut pas oublier le caractère espace entre - et nom_fichier2.
Cette commande compare les contenus du premier et du dernier fichier contenus dans le répertoire courant.
Cette commande a le même effet que la commande suivante :
cmp fich1.txt fich2.txt > fich3.txt
Elles écrivent toutes deux, dans le fichier fich3.txt, le résultat de la comparaison des contenus des fichiers fich1.txt et fich2.txt
Les arguments optionnels décalage1 et décalage2 permettent de comparer le contenu du premier fichier, à partir de l'octet numéro décalage1, au contenu du deuxième fichier, à partir de l'octet numéro décalage2.
Écrire un script qui supprime toutes les copies d'un fichier dont le nom est passé en premier paramètre, se trouvant dans un répertoire dont le nom est passé en deuxième paramètre.
tee [-ai] [nom_fichier ...]
ls | tee liste_fichiers.txt
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.txt
En shell, on appelle "fonction" une séquence de commandes repérable par un nom qui est le nom de la fonction. Les commandes constituant une fonction sont exécutées dans le cadre du shell courant, et non pas dans le cadre d'un shell fils ou d'un sous-shell, comme c'est le cas pour un script ou pour une séquence de commandes placées entre parenthèses.
nom_fonction()
{
liste_commandes
}
Une fonction doit être déclarée avant d'être
appelée. Pour appeler une fonction, il suffit d'utiliser son nom,
sans les parenthèses. Comme pour un script, l'appel
d'une fonction peut être éventuellement suivi d'une liste
de paramètres, accessibles dans la fonction à l'aide des
paramètres positionnels $1, $2,
..., $9 (les paramètres $# et $*
sont également initialisés). Au retour de la fonction, les paramètres positionnels
$1, $2, ..., $9 (ainsi que
les paramètres $# et $*) retrouvent leurs
valeurs antérieures à l'appel de la fonction.
Une fonction se termine soit après l'exécution de la dernière
commande située avant l'accolade fermante, auquel cas le code de
retour est celui de cette dernière commande, soit après exécution
d'une commande return n, auquel cas le code de retour est
l'argument n de la commande return (ou
0 si cet argument est absent). Dans les deux cas, le code
de retour de la fonction est affecté au paramètre $?
du shell courant.
La commande return n ne peut être utilisée qu'à l'intérieur d'une fonction (remarquer l'analogie avec l'instruction return valeur; du langage C).
Écrire un script réalisant les tâches suivantes :
1) Affichage du menu suivant, en boucle :
Vous pouvez taper une commande UNIX, ou bien :
fin si vous souhaitez quitter l'application
relancer n si vous souhaitez relancer les n dernières
commandes
Votre choix :
2) Dans le cas où l'utilisateur tape une commande UNIX, lecture de la commande tapée, exécution de cette commande, et affichage à l'écran des résultats produits (si la commande n'est pas tapée correctement, le "résultat" sera un message d'erreur).
3) Dans le cas où l'utilisateur tape par exemple relancer 3, nouvelle exécution des 3 dernières commandes exécutées et affichage à l'écran de ces commandes et des résultats produits correspondants. Les commandes déjà exécutées seront écrites (en tant que chaînes de caractères) dans le fichier temp, de la manière décrite dans l'alinéa 4) :
4) Écriture, à la fin de temp,
de la commande exécutée (ou des commandes exécutées,
si l'utilisateur a tapé par exemple relancer 3),
ainsi que des résultats produits, sous la forme :
$ <commande n>
<résultats produits par la commande n>
$ <commande n+1>
<résultats produits par la commande n+1>
...
5) et enfin, retour en 1).
Nota bene :
Remarques :