一步一步实现自己的shell程序(一)---《Unix环境高级编程》读书笔记

代码见github

引言

用过Unix/Linux系统的人都知道,Unix系统中很多命令和程序都是在终端中运行,这个终端就是shell。不同的Unix都有不同的默认shell程序,包括sh、csh、bash等等不同的shell程序。那么什么是shell,shell究竟做了什么,如何实现简单的shell呢?

基础知识

程序与进程

进程实际上就是运行中的程序,而程序就是存储在文件中的机器指令,每个进程就是程序的一个实例,逐条执行程序文件中的CPU指令。
进程有很多属性,包括进程ID,父进程ID等等,内容太多现在介绍也很难记住,我们在使用时再介绍也不迟。

shell的基本功能

首先,shell本身就是一个程序,但是他是用来管理进程和运行进程的程序。主要有三个功能:

  • 运行程序
  • 可以编程
  • 管理输入和输出

首先是运行程序,ls和date实际上都是C语言编写的普通程序,shell将他们载入内存并运行,之后将结果输出到屏幕。因此,shell很大的作用就是运行程序。

 wutao@wutao-XXXX:~$ ls
Desktop    Downloads         git    Pictures  Templates
Documents  examples.desktop  Music  Public    Videos
wutao@wutao-XXXX:~$ date
20170311日 星期六 15:36:12 CST

其次是管理输入和输出,shell可以使用< > 和|将输入和输出重定向。如下代码所示,我们就能将程序ls的输出重定向到文件file中(默认为屏幕终端)。

wutao@wutao-XXXX:~$ ls -l > file
wutao@wutao-XXXX:~$ cat file
total 48
drwxr-xr-x 2 wutao wutao 4096 311  2017 Desktop
drwxr-xr-x 2 wutao wutao 4096 311  2017 Documents
drwxr-xr-x 2 wutao wutao 4096 311 15:05 Downloads
-rw-r--r-- 1 wutao wutao 8980 311 14:28 examples.desktop
-rw-rw-r-- 1 wutao wutao    0 311 15:36 file
drwxrwxr-x 3 wutao wutao 4096 311 15:00 git
drwxr-xr-x 2 wutao wutao 4096 311  2017 Music
drwxr-xr-x 2 wutao wutao 4096 3
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值