PeJBshell - un Shell pour embêter inspiré par Jacques Barathon PeJBshell est un shell Conjuguant les possibilités des BATCHs (invite de commande), la puissance et la souplesse de PYTHON, et l'accès aux librairies et ressources de PONX.
Version actuelle La dernière version est : 0.16 Dernières modifications : - correction d'un problème d'affichage, lors de l'exécution des macros (ajout d'un retour-chariot).
- ajout de la possibilité de saisie multi-lignes (.MULTI) dans les macros
Copie d'écran
Installation Il faut installer : Python PyWin32 Ctypes Console Ponx (facultatif, mais fortement recommandé). L'installation de Ponx contient les éléments précédents. Pour l'installation de Ponx voir plus loin, dans cette page. Téléchargez pejbshell.py, et copiez-le dans C:\ponx\ Si vous avez installé Ponx, cette étape est inutile.Téléchargez PeJBshell-C.lnk, et copiez-le dans C:\ponx\ Si vous avez installé Ponx, cette étape est inutile.Copiez ce dernier raccourci (fichier C:\ponx\PeJBshell-C.lnk) sur le bureau. Vous pouvez ensuite modifier ses propriétés, notamment le répertoire de démarrage.
Console J'ai adopté la console de Effbot (http://effbot.org/downloads/#console). Cela permet d'embarquer/piloter la console dans/depuis d'autres applications ou langages. Cela permet également une gestion plus fine de la saisie (clavier).
Modes Il y a trois modes de fonctionnement : - DOS : les commandes de type DOS (invite de commande) peuvent être utilisées directement.
- PYTHON : les commandes de type DOS (invite de commande) peuvent être utilisées directement.
- MULTI : pseudo-mode temporaire de saisie d'une commande multi-lignes.
Pour connaître le mode courant : .PMODE [Entrée] Pour passer d'un mode à l'autre : .PMODE(DOS) ou .PMODE(PYTHON). Astuce : vous pouvez taperr simplement .PMODE(D) ou .PMODE(P)
Les commandes Globales Ces commande fonctionnent dans tous les modes de fonctionnement. Ce sont : - QUIT ou EXIT pour quiiter PeJBshell
- .Q raccourci pour QUIT
- CD xxx permet de changer le répertoire courant, lecteur (Drive) y compris (comme CD /D)
- .PMODE pour connaître le mode courant
- .PMODE(DOS) ou .PMODE(PYTHON) change le mode courant
- .DOS synonyme pour .PMODE(DOS)
- .PYT synonyme pour .PMODE(PYTHON)
- .EMPTY vide les buffers d'entrées et de sorties.
- .EDIT lance l'éditeur par défaut, avec le buffer des entrées.
- .OUTEDIT lance l'éditeur par défaut, avec le dernier résultat
- ..XXX (point point) pour lancer une macro
Le prompt Il affiche le numéro du buffer courant, suivi du répertoire courant.
Les flèches de rappel (flèche haute, et flèche basse) Comme sous DOS, les flèches permettent de rappeler les commandes précédentes.
Tabulation / complétion Des appuis successifs sur la touche TAB donne une complétion avec le DIR du répertoire courant.
Mode DOS La plupart des commandes de l'invite de commande fonctionne. Cependant : les commandes interactives, (les questions ou confirmations) sont ignorées. Elles peuvent même bloquer le shell. Evitez de les utiliser (sauf en mode silencieux/quiet). La commande CD est traitée différemment.
Pour des exemples de commandes DOS, cliquez_ici. Si, en mode DOS, une commande commence par un point ("."), elle est traitée, à la volée, comme une commande Python.
Mode Python Un nombre important des commandes du shell Python fonctionnent. Les modules sys, os, os.path, shutil sont préchargés, avec un appel direct des fonctions. Quelques fonctions prédéfinies : - lload(fichier) charge un fichier-texte dans une liste, à raison d'un élément par ligne
- lwrite(fichier,liste) écrite une liste dans un fichier-texte
- bufferin(num) récupère le buffer d'entrée numéro num ; les numéros négatifs sont relatifs au numéro courant.
- bufferout(num) récupère le buffer de sortie numéro num ; les numéros négatifs sont relatifs au numéro courant.
- lbufferin(num) récupère le buffer d'entrée numéro num, dans une liste ; les numéros négatifs sont relatifs au numéro courant.
- lbufferout(num) récupère le buffer de sortie numéro num, dans une liste ; les numéros négatifs sont relatifs au numéro courant.
- trtDOS(...) traite une chaîne comme une commande DOS.
Pour des exemples de commandes PYTHON, cliquez_ici. Si, en mode PYTHON, une commande commence par un point ("."), elle est traitée, à la volée, comme une commande DOS.
Appel de fonctions Ponx Ponx est pré-chargé, s'il est installé. Les préfixes sont : - px pour Ponx classique
- pxd pour Ponx dynamique
Pour des exemples de commandes PONX, il faudra attendre encore un peu.
Exécution d'un fichier Python externe execfile fonctionne bien.
Edition La commande .EDIT permet de lancer l'éditeur courant (wordpad ou notepad), avec les 100 dernières commandes entrées. La commande .OUTEDIT permet de lancer l'éditeur avec le résultat de la dernière commande.
Macros Il est possible de lancer des macros. Mais, les macros sont, pour l'instant, de simples listes de commandes. En pratique, il s'agit d'un simple fichier texte. La commande, pour lancer une macro, c'est : ..XXX (point point nom_fichier_macro)
Utilisation depuis Python Il est possible d'mporter le module pejbshell. La fonctione principale est mainloop( répertoire_de_départ, liste_macro_initiale) Il est ensuite possible d'appeler les propriétés suivantes du module :
Définition d'une fonction python (exemple) 1er exemple : - Passez en mode Python : .pmode(p)
- tapez : def toto(a): return(a*11)
- tapez : print toto(123)
2ème exemple : - Passez en mode multi : .multi
- tapez : def titi(a,b):
- tapez : c=a+b #avec 4 espaces au début de la ligne)
- tapez : return(c) #avec 4 espaces au début de la ligne)
- terminez le multi : end
- tapez : print titi(1111,222)
Chargement d'un module Python utilisez import XXX ou from XXX import *
Divers Le fichier temp.txt est réservé, pour usage interne.
Installation de Ponx en ligne Il est désormais possible d'installer Ponx en ligne. Pour cela, il faut :
|