[25304] 2016-07-28_使用Python创建你自己的Shell(上)

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2016-07-28_使用Python创建你自己的Shell(上) 使   P y t h o n     S h e l l     c p o s t u r e   L i n u x   2 0 1 6 - 0 7 - 2 8   s h e l l     b a s h c s h   使   P y t h o n     y o s h   Y o u r O w n   S h e l l   S h e l l [ 1 ] 使   M I T     M a c   O S   X   1 0 . 1 1 . 5   使   P y t h o n   2 . 7 . 1 0     3 . 4 . 3     U n i x     L i n u x     W i n d o w s     C y g w i n   0 使 y o s h _ p r o j e c t     y o s h y o s h     _ _ i n i t _ _ . p y   使   P y t h o n   s h e l l . p y     1 S h e l l     s h e l l y o s h _ p r o j e c t | - -   y o s h       | - -   _ _ i n i t _ _ . p y       | - -   s h e l l . p y
s h e l l     s h e l l . p y     m a i n     s h e l l _ l o o p ( )     s h e l l _ l o o p ( )   使   s h e l l   t o k e n i z e e x e c u t e   t o k e n i z e     e x e c u t e     s h e l l _ l o o p ( )   d e f   s h e l l _ l o o p ( ) :         #   S t a r t   t h e   l o o p   h e r e d e f   m a i n ( ) :         s h e l l _ l o o p ( ) i f   _ _ n a m e _ _   = =   " _ _ m a i n _ _ " :         m a i n ( ) i m p o r t   s y s S H E L L _ S T A T U S _ R U N   =   1 S H E L L _ S T A T U S _ S T O P   =   0 d e f   s h e l l _ l o o p ( ) :         s t a t u s   =   S H E L L _ S T A T U S _ R U N         w h i l e   s t a t u s   = =   S H E L L _ S T A T U S _ R U N :                 # # #                   s y s . s t d o u t . w r i t e ( ' >   ' )                 s y s . s t d o u t . f l u s h ( )                 # # #                   c m d   =   s y s . s t d i n . r e a d l i n e ( ) i m p o r t   s y s S H E L L _ S T A T U S _ R U N   =   1 S H E L L _ S T A T U S _ S T O P   =   0
  s h e l l   使   p y t h o n   s h e l l . p y     s h e l l   t o k e n i z e   退   s h e l l   c t r l - c 退   s h e l l   2 t o k e n i z e   s h e l l   使   c m d . s p l i t ( )   l s   - a   m y _ f o l d e r     [ ' l s ' ,   ' - a ' ,   ' m y _ f o l d e r ' ] 便   e c h o   " H e l l o   W o r l d "     e c h o   ' H e l l o   W o r l d '   使   c m d . s p i l t   3     [ ' e c h o ' ,   ' " H e l l o ' ,   ' W o r l d " ' ]     2     [ ' e c h o ' ,   ' H e l l o   W o r l d ' ] P y t h o n     s h l e x   使 d e f   s h e l l _ l o o p ( ) :         s t a t u s   =   S H E L L _ S T A T U S _ R U N         w h i l e   s t a t u s   = =   S H E L L _ S T A T U S _ R U N :                 # # #                   s y s . s t d o u t . w r i t e ( ' >   ' )                 s y s . s t d o u t . f l u s h ( )                 # # #                   c m d   =   s y s . s t d i n . r e a d l i n e ( )                 # # #                   c m d _ t o k e n s   =   t o k e n i z e ( c m d )                 # # #                   s t a t u s   =   e x e c u t e ( c m d _ t o k e n s ) i m p o r t   s y s i m p o r t   s h l e x . . .
  3   s h e l l     s h e l l     m k d i r   t e s t _ d i r     m k d i r     t e s t _ d i r     t e s t _ d i r   e x e c v p     e x e c v p     s h e l l   m k d i r   t e s t _ d i r     s h e l l   退 e x e c v p   e x e c v p     e x e c   v   p   使   P A T H   P A T H   m k d i r     e x e c     e x e c v e x e c v p e e x e c l e x e c l p e x e c l p e   g o o g l e   e x e c     s h e l l     m k d i r m k d i r     t e s t _ d i r   退   s h e l l     m k d i r     s h e l l   f o r k f o r k   d e f   t o k e n i z e ( s t r i n g ) :         r e t u r n   s h l e x . s p l i t ( s t r i n g ) . . . i m p o r t   o s . . . d e f   e x e c u t e ( c m d _ t o k e n s ) :         # # #           o s . e x e c v p ( c m d _ t o k e n s [ 0 ] ,   c m d _ t o k e n s )         # # #     s h e l l _ l o o p           r e t u r n   S H E L L _ S T A T U S _ R U N . . .
  s h e l l   o s . f o r k ( )   p i d     0 p i d     i d . . . d e f   e x e c u t e ( c m d _ t o k e n s ) :         # # #     s h e l l           # # #     ` p i d `     ` 0 `         # # #   ` p i d `           # # #     I D         p i d   =   o s . f o r k ( )         i f   p i d   = =   0 :         # # #                   # # #     e x e c                   o s . e x e c v p ( c m d _ t o k e n s [ 0 ] ,   c m d _ t o k e n s )         e l i f   p i d   >   0 :         # # #                   w h i l e   T r u e :                         # # #     I D                           w p i d ,   s t a t u s   =   o s . w a i t p i d ( p i d ,   0 )                         # # #   退                         # # #                           i f   o s . W I F E X I T E D ( s t a t u s )   o r   o s . W I F S I G N A L E D ( s t a t u s ) :                                 b r e a k         # # #     s h e l l _ l o o p           r e t u r n   S H E L L _ S T A T U S _ R U N . . .
  o s . e x e c v p   退   s h e l l     s h e l l     m k d i r   t e s t _ d i r 2   s h e l l     l s   c d   t e s t _ d i r 2   l s   t e s t _ d i r 2     t e s t _ d i r 2 退   s h e l l [ 2 ] v i a :   h t t p s : / / h a c k e r c o l l i d e r . c o m / a r t i c l e s / 2 0 1 6 / 0 7 / 0 5 / c r e a t e - y o u r - o w n - s h e l l - i n - p y t h o n - p a r t - 1 / S u p a s a t e   C h o o c h a i s r i [ 3 ]   c p o s t u r e [ 4 ]   w x y [ 5 ]   L C T T [ 6 ]   L i n u x [ 7 ]   [ 1 ] :   h t t p s : / / g i t h u b . c o m / s u p a s a t e / y o s h [ 2 ] :   h t t p s : / / h a c k e r c o l l i d e r . c o m / a r t i c l e s / 2 0 1 6 / 0 7 / 0 6 / c r e a t e - y o u r - o w n - s h e l l - i n - p y t h o n - p a r t - 2 / [ 3 ] :   h t t p s : / / d i s q u s . c o m / b y / s u p a s a t e _ c h o o c h a i s r i / [ 4 ] :   h t t p s : / / g i t h u b . c o m / c p o s t u r e [ 5 ] :   h t t p s : / / g i t h u b . c o m / w x y [ 6 ] :   h t t p s : / / g i t h u b . c o m / L C T T / T r a n s l a t e P r o j e c t [ 7 ] :   h t t p s : / / l i n u x . c n /   I D  
  I D  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则