[25307] 2016-07-29_使用Python创建你自己的Shell(下)

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2016-07-29_使用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 9   s h e l l               s h e l l   退   4     f o r k 退   s h e l l     s h e l l   f o r k i n g c d f o r k e x e c c d   t e s t _ d i r 2 c d   t e s t _ d i r 2
            使         3 .   6 .     s h e l l   使 c d b u i l t i n s 1 .   y o s h _ p r o j e c t 2 .   | - -   y o s h 3 .         | - -   b u i l t i n s 4 .         |       | - -   _ _ i n i t _ _ . p y 5 .         |       | - -   c d . p y 6 .         | - -   _ _ i n i t _ _ . p y 7 .         | - -   s h e l l . p y c d . p y o s . c h d i r c d 1 .   i m p o r t   o s 2 .   f r o m   y o s h . c o n s t a n t s   i m p o r t   * 4 .   d e f   c d ( a r g s ) : 5 .           o s . c h d i r ( a r g s [ 0 ] ) 7 .           r e t u r n   S H E L L _ S T A T U S _ R U N y o s h / c o n s t a n t s . p y 1 .   y o s h _ p r o j e c t
            4 .   7 .   1 0 .   1 .   y o s h _ p r o j e c t 2 .   | - -   y o s h 3 .         | - -   b u i l t i n s 4 .         |       | - -   _ _ i n i t _ _ . p y 5 .         |       | - -   c d . p y 6 .         | - -   _ _ i n i t _ _ . p y 7 .         | - -   c o n s t a n t s . p y 8 .         | - -   s h e l l . p y c o n s t a n t s . p y 1 .   S H E L L _ S T A T U S _ S T O P   =   0 2 .   S H E L L _ S T A T U S _ R U N   =   1 c d s h e l l . p y 1 .   . . . 2 .   # # #   3 .   f r o m   y o s h . c o n s t a n t s   i m p o r t   * 5 .   # # #   使 6 .   b u i l t _ i n _ c m d s   =   { } 8 .   d e f   t o k e n i z e ( s t r i n g ) : 9 .           r e t u r n   s h l e x . s p l i t ( s t r i n g ) 1 1 .   d e f   e x e c u t e ( c m d _ t o k e n s ) : 1 2 .           # # #  
1 5 .   1 9 .   使   p y t h o n       h a s h   m a p       使 ) 使             4 .   6 .   1 0 .   1 3 .           c m d _ n a m e   =   c m d _ t o k e n s [ 0 ] 1 4 .           c m d _ a r g s   =   c m d _ t o k e n s [ 1 : ] 1 6 .           # # #   使 1 7 .           i f   c m d _ n a m e   i n   b u i l t _ i n _ c m d s : 1 8 .                   r e t u r n   b u i l t _ i n _ c m d s [ c m d _ n a m e ] ( c m d _ a r g s ) 2 0 .           . . . b u i l t _ i n _ c m d s e x e c u t e b u i l t _ i n _ c m d s [ c m d _ n a m e ] c d c d b u i l t _ i n _ c m d s 1 .   . . . 2 .   # # #   3 .   f r o m   y o s h . b u i l t i n s   i m p o r t   * 5 .   . . . 7 .   # # #   8 .   d e f   r e g i s t e r _ c o m m a n d ( n a m e ,   f u n c ) : 9 .           b u i l t _ i n _ c m d s [ n a m e ]   =   f u n c
1 1 .   1 5 .   1 6 .                                             1 2 .   # # #   1 3 .   d e f   i n i t ( ) : 1 4 .           r e g i s t e r _ c o m m a n d ( " c d " ,   c d ) 1 7 .   d e f   m a i n ( ) : 1 8 .           # # #   s h e l l 1 9 .           i n i t ( ) 2 0 .           s h e l l _ l o o p ( ) r e g i s t e r _ c o m m a n d i n i t c d r e g i s t e r _ c o m m a n d ( " c d " ,   c d ) c d y o s h / b u i l t i n s / c d . p y c d y o s h / b u i l t i n s / _ _ i n i t _ _ . p y 1 .   f r o m   y o s h . b u i l t i n s . c d   i m p o r t   * y o s h / s h e l l . p y y o s h . b u i l t i n s * y o s h . b u i l t i n s
            s h e l l     s h e l l   e x i t 退   s h e l l       s h e l l   s h e l l   退             s h e l l           y o s h . b u i l t i n s c d y o s h p y t h o n   - m   y o s h . s h e l l c d S H E L L _ S T A T U S _ S T O P c d e x i t e x i t b u i l t i n s e x i t . p y 1 .   y o s h _ p r o j e c t 2 .   | - -   y o s h 3 .         | - -   b u i l t i n s 4 .         |       | - -   _ _ i n i t _ _ . p y 5 .         |       | - -   c d . p y 6 .         |       | - -   e x i t . p y 7 .         | - -   _ _ i n i t _ _ . p y 8 .         | - -   c o n s t a n t s . p y 9 .         | - -   s h e l l . p y
      退 2 .                       2 .   7 .   9 .         | - -   s h e l l . p y e x i t . p y e x i t 1 .   f r o m   y o s h . c o n s t a n t s   i m p o r t   * 3 .   d e f   e x i t ( a r g s ) : 4 .           r e t u r n   S H E L L _ S T A T U S _ S T O P y o s h / b u i l t i n s / _ _ i n i t _ _ . p y e x i t 1 .   f r o m   y o s h . b u i l t i n s . c d   i m p o r t   * 2 .   f r o m   y o s h . b u i l t i n s . e x i t   i m p o r t   * s h e l l . p y i n i t ( ) e x i t 1 .   . . . 3 .   # # #   4 .   d e f   i n i t ( ) : 5 .           r e g i s t e r _ c o m m a n d ( " c d " ,   c d ) 6 .           r e g i s t e r _ c o m m a n d ( " e x i t " ,   e x i t ) 8 .   . . .
      退     y o u r   o w n   s h e l l     使   s h e l l     [ 1 ]     [ 2 ]   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     f o r k     S h e l l   H a p p y   C o d i n g ! 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 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 / 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 : / / t l d p . o r g / L D P / B a s h - B e g i n n e r s - G u i d e / h t m l / x 7 2 4 3 . h t m l [ 2 ] :   h t t p : / / w w w . t l d p . o r g / L D P / i n t r o - l i n u x / h t m l / x 1 2 2 4 9 . h t m l [ 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   8 .   . . . p y t h o n   - m   y o s h . s h e l l e x i t y o s h y o s h
  I D  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则