42sh_

Le meilleur du shell, en toute simplicité.
$>

L'équipe

Cédric Thomas

Thibaut Cornolti

Bastien Rinck

Marin Brunel

Un shell pour utilisateur expérimenté

&

$>

|| &&

< | >

  • Exécution de binaire du path

  • Nombreux builtins

  • Gestion des statuts et des erreurs

Un shell pour utilisateur expérimenté

&

|| &&

< | >

  • Séparateurs logiques d'exécution

  • Gestion des retours d'erreur

  • Autorise ou bloque l'exécution

$>

Un shell pour utilisateur expérimenté

&

|| &&

< | >

  • Gestion des flux d'entrés / sorties

  • Injection / création de fichier

  • Création de flux inter-processus

$>

Un shell pour utilisateur expérimenté

&

|| &&

< | >

  • Exécution asynchrone des processus

  • Suspension d'exécution

  • Gestion de la propriété

$>

Manipulation du shell

$> builtins

alias	        builtins	chdir		exit
history		set		unalias		unsetenv
bg	        cd		echo		fg	
jobs		setenv		unset		where

Text

Manipulation des paramètres internes

(environnement, alias, variables, historique)

Gestion des plans d'exécution

(foreground, background, jobs)

Un parsing composé de

Analyse Syntaxique

Modulaire

Précise

Adaptable

Création d'arbres

Prioritaire

Récursive

Intelligente

Exemple d'un parsing

$> emacs & ls | cat &> lol -e
&
emacs
|
ls
cmd:  cat
argv: [cat], [-e]
flux: [|], [lol]

Édition de ligne avancée

$>  

!!

  • Déplacement dynamique du curseur

  • Gestion des capacités d'édition de ligne

Édition de ligne avancée

$>  

!!

  • Mappage des touches fléchées

  • Sauvegarde de l'historique

  • Implémentation des flags de substitution

Édition de ligne avancée

$>  

!!

  • Auto complétion

    • Via path et builtins

    • Via historique

Le 42shrc

$>

Initialiser le shell à partir d'un fichier

Les informations visuelles

0 PSU_2016_42sh git:(master)

Dernière valeur de de retour

Dossier courant

Branche git

Un historique avancé

!!

Dernière commande entrée

Un historique avancé

!$

Dernier argument de la dernière commande entrée

Un historique avancé

!n

Commande numéro 'n'

(visible via la builtin history)

Un historique avancé

!-n

énième dernière commande

(visible via la builtin history)

Un historique avancé

!:n

énième argument de la dernière commande

Une exécution asynchrone

fg

Lance firefox en background

firefox &

Remet firefox en foreground

bg

Met firefox en suspended

Ctrl + Z

Relance firefox en background

jobs  [-l]

Affiche les jobs et leurs états

Une exécution asynchrone

Alias et Variables

Déclare une variable

set oui="Hey :D" ; echo $oui

set

unset

Déclare un alias

alias ls ls -l
ls

alias

unalias

Magic quotes

Réinjecter un flux d'une commande en argument

$> cat testfile
Ceci
est
un fichier
de test

$> echo `cat file` ":)"
Ceci est un fichier de test :)

Globbing

Sélectionnez dynamiquement le contenu d'un répertoire.

$> ls 
42sh   getter.c  include    load    Makefile  parse    
binds  getter.o  lib        main.c  match     prompt.c
exec   history   line_edit  main.o  node      prompt.o

$> ls m?*.[c,o]
main.c  main.o

Un résumé de notre shell

Variables locales

Magic quote

Auto-complétion

Jobs Control

Globbing

Historique

Alias

Édition de lignes avancées

.42shrc

Parseur LL

Live Test

Qualités de notre shell

Un shell ergonomique et esthétique

De très bonnes performances

Un nombre de built-in conséquent

Une syntaxe étendue

Le futur de notre shell

Une gestion du script

Un plus grand nombres de built-in

Des libs dynamiques au run-time (type plug-in)

Une optimisation amélioré

Merci !

Avez-vous des questions?

Made with Slides.com