什么是shell?

(1)shell是一个系统软件,负责用户和操作系统内核之间的交互,是产生进程的进程(通过linux系统调用fork,exec),主要负责解释用户的命令,进而实现用户对进程的控制。

(2)shell也是一门脚本语言,拥有流程控制,变量,运算等,主要适用于Linux下的配置和运维。

(3)shell命令的本质是放在/bin目录下的可执行程序,管道和重定向操作则是终端的三个标准文件描述符对可执行文件进行操作,从而实现的(具体略)。

(4)信号是事件驱动编程的核心,也是通过shell对进程进行控制的一个重要方式。

(5)具有环境变量,即有用户,版本,当前目录之类的信息,用于访问控制。

(6)一个shell形成一个进程会话,其中的进程有前台后台之分。

本次实验中Python实现的shell是什么样的?

(1)具有控制进程的功能。

(2)支持简单的内置命令。

(3)不支持脚本语言功能,不支持管道和重定向操作。

与Python相关的学习要点

(1)Python os,sys模块

实现过程中用了封装了Linux系统调用的Python函数,比如:

目录相关

os.getcwd()

os.chdir()

路径相关

os.path.basename()

os.path.expanduser()

标准输出文件描述符

sys.stdout.write

sys.stdout.flush()

获取环境变量

os.getenv

(2)Python signal模块

忽略信号

signal.signal(signal.SIGTSTP, signal.SIG_IGN)

(3)Python 字符串处理

shelx.split//分解参数

.startswith//判断字符开头

(4)subprocess

相当于系统调用fork,exec

总结

(1)本次实验主要表现了Python在系统编程的能力,通过os,sys等模块我们可以实现一个不错的shell系统软件。

(2)改进方向:添加管道,重定向操作,&后台调度操作等。

(3)对刚入门的同学要完全理解比较困难,需要去补充系统编程的知识。

(4)可以用面向对象,把shell抽象为类进行重构
---------------------
作者:yz764127031
来源:CSDN
原文:https://blog.csdn.net/yz764127031/article/details/71522161
版权声明:本文为博主原创文章,转载请附上博文链接!

Python 实现简易 Shell的更多相关文章

  1. python中写shell(转)

    python中写shell,亲测可用,转自stackoverflow To run a bash script, copy from stackoverflow def run_script(scri ...

  2. ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数

    一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...

  3. python manage.py shell之后的一些错误:

    1. 在执行python manage.py shell之后的一些错误: wyl@wyl:~/myobject$ python manage.py shell /usr/lib/python2.7/d ...

  4. 启动python解释器的命令(python manage.py shell和python的区别)

    如果你曾经使用过Python,你一定好奇,为什么我们运行python manage.py shell而不是python.这两个命令都会启动交互解释器,但是manage.py shell命令有一个重要的 ...

  5. 使用RSA加密在Python中逆向shell

    i春秋翻译小组-Neo(李皓伟) 使用RSA加密在Python中逆向shell 这是一个关于使用RSA加密编程逆向shell的python教程. 我想提一下,这篇文章更多的是关于理解shell中涉及的 ...

  6. python中执行shell的两种方法总结

    这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包 ...

  7. ipython是python的交互式shell工具

    ipython: 是python的交互式shell工具,比默认的python shell工具要好用.支持变了自动补全,自动缩进,内置了很多的功能和函数 启动:可以通过cmd来启动该工具 自动补全: I ...

  8. python搭建简易服务器实例参考

    有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 w ...

  9. python中执行shell命令的几个方法小结(转载)

    转载:http://www.jb51.net/article/55327.htm python中执行shell命令的几个方法小结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014- ...

随机推荐

  1. iptables 最终 第四章

    转发 ,NAT 功能 Chain FORWARD 开启网卡转发功能: /proc/sys/net/ipv4/ip_forward #使用sysctl 开启内核转发功能 sysctl - 核心转发: / ...

  2. opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形

    一.简介 二.外接矩形的查找绘制 #include "opencv2/opencv.hpp" using namespace cv; void main() { //外接矩形的查找 ...

  3. Windows下Python安装numpy+mkl,Scipy和statsmodels

    最近做时间序列分析需要用到Python中的statsmodels,但是安装过程中遇到很头疼的问题,Google.Stackover各种都没有找到合适的解决办法,而且貌似还有很多同学也在吐槽Window ...

  4. 关于decode("utf-8")出现编码错的提示

    data = data.decode("utf-8") 出现错误时候可以加上第二个参数  如下; data = data.decode("utf-8",&quo ...

  5. vue 文件目录结构详解

    vue 文件目录结构详解 本篇文章主要介绍了vue 文件目录结构详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 项目简介 基于 vue.js 的前端开发环境,用于前后 ...

  6. Vue常见指令

    文本相关指令 <div id="app"> <!-- 插值表达式 --> <p>{{ msg }}</p> <!-- eg:原 ...

  7. Android hide the app icon but show the icon most left

    ActionBar actionBar = getActionBar(); actionBar.setIcon(new ColorDrawable(getResources().getColor(an ...

  8. 解决github访问及上传慢的问题

    在本地host文件中添加映射 http://tool.chinaz.com/dns , 查询 github.global.ssl.fastly.net 和 assets-cdn.github.com ...

  9. js数组和数组去重的几种简单的方法

    http://blog.csdn.net/liangklfang/article/details/49300417 1.证明一个对象是数组的方法. 方法(1) [].constructor === A ...

  10. 关于AndroidStudio 经常弹出TortoiseSVN 同步的解决办法

    我的AndroidStudio在使用时是从TortoiseSVN的文件夹下直接打开的 但是由于svn自己的特点每改一个文件就要跳出来一个svn的对话框 体验极其难受!砍人的心都有了 网上的解决办法都是 ...