Documentation


Les fonctions de base du 42sh

Execution des commandes

On entre la ligne de commande, puis on l'envoit au 42sh. Si c'est une builtin elle est executée directement sinon l'executable est recherché dans la table de hash (qui est vide au lancement du shell), si le 42sh trouve l'executable dans la table de hash il récupère le chemin lance la commande et si elle fonctionne incrémente son nombre d'executions dans la table de hash. Si l'executable n'est pas dans la table de hash le shell le recherche dans le PATH, puis l'ajoute à la table s'il fonctionne, sinon une erreur est renvoyée.

Les redirections

une redirection permet de rediriger la sortie d'un programme vers un fichier, ou l'entree d'un fichier vers un programme.
voici quelques exemples de redirections :

Les pipes

Ils permettent de rediriger la sortie d'un programme, vers un autre par exemple :
$ ypcat passwd | grep ept1 //perme de rechercher tous les ept1 du PIE
Il est aussi possible de rediriger un pipe vers un autre pipe et ainsi de suite:
$ ls /dev | grep ttyp | cat -e | more

Les separateurs

Les séparateurs permettent de séparer plusieurs commandes et de les éxecuter en fonction du resultat d'autres commandes, exemple:
$ ls ; xv // cette ligne executera la seconde commande quoi qu'il arrive
$ ls || xv // cette ligne executera la seconde commande que si la première a échoué
$ ls && xv // cette ligne executera la seconde commande que si la première a fonctionné


Builtins

Exit

La builtin exit permet simplement de quitter le shell.

Echo

La builtin echo permet de dire au shell d'afficher du texte a l'écran.

Cd

Cette builtin vitale permet de se déplacer dans l'arborescence des fichiers
cd doit être suivi du chemin relatif ou absolu du répertoire ou l'on désire aller.
On peut aussi revenir dans le répertoire précédent grâce à la commande:
$ cd -
La racine de notre compte est aussi accessible en ne mettant pas de chemin à cd
$ cd ~ //suivi d'un nom d'utilisateur permet d'accéder au compte de celui-ci (si bien sur les droits le permettent)

Setenv

Setenv permet de redéfinir les variables d'environement
$ setenv VAR value
si la variable existe déjà elle sera redéfinie, sinon elle sera créée.

Unsetenv

Unsetenv permet de supprimer les variables d'environnement
$ unsetenv VAR
on peut utiliser des * dans la builtin unsetenv, exemple:
$ unsetenv * //effacera tout l'environnement
$ unsetenv S* // effacera toutes les variables commencant par S

Env

Env affiche toutes les variables d'environnement.

Set

Set fonctionne comme setenv mais définit des variables locales.

Unset

Unset fonctionne comme unsetenv en agissant cette fois sur les variables locales.

Hash

Hash permet d'afficher la table de hash.

Rehash

Rehash permet de vider la table de hash.

History

History affiche l'historique.

Alias

Alias affiche les alias.

Unalias

Unalias sert a supprimer des alias.

Source

Source permet de lancer des lignes de commande enregistrées dans un fichier ce qui se révèle trés utilies pour charger une configuration, ou lancer des commandes répétitives.

Repeat

Repeat permet de lancer une commande ou une ligne de commande n fois, exemple:
$ repeat 10 ls /dev //lancera 10 fois la commande ls /dev

Which

Which permet de connaitre la localisation d'un executable système.


Les fonctions supplémentaires du shell

L'édition de ligne

L'édition de ligne permet une utilisation pratique de la ligne de commande, celle ci permet en effet:

L'historique

L'historique permet de relancer une commande tapée précedemment en utilisant les flèches haut et bas.
Il peut être affiché en tapant:
$ history
ou effacé en tappant:
$ history -c

La complétion

La complétion permet comme son nom l'indique de compléter des commandes :
elle complète les noms d'executables, les chemins, et les users.

Les Alias

Ce sont des raccourcis utilisateur, pour facilite la saisie, on peut grace à eux lancer un "ls -l | more" en tapant lm par exemple:
$ alias lm="ls -l | more"
Pour afficher les alias déjà définis on peut taper cette commande
$ alias
On peut définir plusieurs alias dans la même ligne de commande et les alias peuvent appeler d'autres alias.
$ alias a=b b=c c="ls -l" //a lancera donc ls -l

Les variables locales

ce sont des variables specifiques au shell, elles permettent par exemple de definir la taille de l'historique, ou le prompt.
$ set // permet de les voir
$ set history 100 //permet de redéfinir la variable $history

Le fichier de configuration

Le fichier de configuration permet d'executer et/ou de parametrer des options propres au shell lors de son lancement.
Cela permet par exemple d'avoir automatiquement à chaque lancement, ses variables locales ou d'environ définies ou redéfinies, ainsi que ses alias enregistrés.