Python 实现简易 Shell
来源:互联网 发布:漫画绘制软件 编辑:程序博客网 时间:2024/04/25 13:24
本文是实验楼课程的实验报告,课程地址:
https://www.shiyanlou.com/courses/647
不涉及具体代码
之前学习Linux系统编程的时候学习过用C语言编写简单的shell,今天看到用Python实现shell,就想借此机会复习操作系统中shell相关的知识。
什么是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抽象为类进行重构
相关博文:
《unix/linux编程实践教程》学习笔记:第八章 编写命令解释器sh
http://blog.csdn.net/yz764127031/article/details/61629928
- Python 实现简易 Shell
- Python实现简易shell,我的coding_kit【新手】
- 模拟实现简易shell
- 实现简易shell
- python+shell简易进程控制
- python实现简易联系人
- Python实现简易记事本
- Shell,我的简易实现!
- python实现简易采集爬虫
- python实现简易采集爬虫
- python实现简易网络爬虫
- python实现一个简易hashmap
- Linux下实现简易的shell
- 【Shell】Shell语法总结以及简易内存条的实现
- 简易Shell
- 代码缩进的简易实现(Python实现)
- 简易聊天程序的python实现
- Python版简易计算器的实现
- grails命令备忘录
- Android -- Wifi的断开及关闭流程简介
- 【深度学习】为什么深度学习需要大内存?
- 语义分割--Understanding Convolution for Semantic Segmentation
- 用JavaMail发送一封邮件
- Python 实现简易 Shell
- 泛型与反射
- Rich feature hierarchies for accurate object detection and semantic segmentation (RCNN)
- 随机数的生成
- 正则表达式-连续多位相同字符判断的正则表达式
- 引用和指针
- JSP数据交互(一)
- 致北京运维圈的一封信:520_和你有一场约会!
- Ubuntu 16.04 Android 5.1编译环境搭建记录