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 :
- redirection d'une commande, d'un programme, dans un fichier
$ > fichier ls -l
$ ls -l > fichier
- redirection d'une commande, d'un programme, a la fin d'un fichier
$ >> fichier ls -l
$ ls -l >> fichier
- redirection d'erreur dans un fichiers
$ &> fichier ls -l /root
$ ls -l /root &> fichier
- redirection d'entree (rediriger un fichier dans un programme)
$ cat -e < fichier
$ < fichier cat -e
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 fichierscd 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:- de copier: (ctrl + k)
- de coller: (ctrl + y)
- d'effacer l'écran: (ctrl +l)
- d'effacer la ligne de commande en cours: (ctrl + u)
- d'effacer les caractères qui précèdent le curseur: (ctrl + w)
- d'annuler une commande: (ctrl + c)
- de quitter un programme: (ctrl + d)
- de revenir au début de la ligne: (home)
- d'aller en fin de ligne: (end)
- d'effacer un caractère: (suppr, backspace)
- de passer le mot qui suit le curseur en majuscule: (alt + u)
- de passer le mot qui suit le curseur en minuscule: (alt + l)
- d'utiliser l'historique (haut, bas)
- de lancer la complétion (tab)
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 users et les fichiers sont blancs
- Les repertoires sont de couleur bleue suivis par un '/'
- Les executables sont de couleur verte suivis par un '*'
- Les liens symboliques sont de couleur cyan suivis par un '@'
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.