什么是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. 使用curl自动签到百度贴吧

    百度贴吧的一键签到接口地址为 http://tieba.baidu.com/tbmall/onekeySignin1 curl http://tieba.baidu.com/tbmall/onekey ...

  2. 深度解析vuex

    1.什么是vuex? vuex 是一个专为 Vue.js 应用程序开发的状态管理模式(通俗一点的说Vuex就是存储数据的工具,类似于cookie.sessionStorage.localStorage ...

  3. 2018年12月25日 圣诞节快乐 生成器plus

    import time#导入时间模块 time.sleep(5)#输入间隔时间5秒 def p_bz():#使用函数 生产包子 for i in range(100): yield "包子% ...

  4. CVE-2018-8120 Windows权限提升

    来源 : bigric3/cve-2018-8120 Detail : cve-2018-8120-analysis-and-exploit 演示图 下载 CVE-2018-8120.zip

  5. rm 命令

    rm 命令 rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 语法 rm (选项) (文 ...

  6. 线上问题排查(2)——JDK内置工具

    https://www.cnblogs.com/keanuyaoo/p/3253663.html 常用命令目录: jps命令(Java Virtual Machine Process Status T ...

  7. 力扣(LeetCode)463. 岛屿的周长

    给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相连(对角线方向不相连).整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地 ...

  8. 理解SQL的左连接与右连接

    假设有A,B两个表. 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID ...

  9. 微信小程序Promise对象

    Promise 对象 Promise 的含义 基本用法 Promise.prototype.then() Promise.prototype.catch() Promise.prototype.fin ...

  10. ELK安装使用教程

    一.说明 ELK是当下流行的日志监控系统.ELK是Elasticsearch.Logstash.Kibana三个软件的统称. 在ELK日志监控系统中,Logstash负责读取和结构化各类日志+发送给E ...