以系统的架构来看Unix
笔记一中从用户的角度来看Unix的话,基本操作就是用户登录,运行程序,用户推出,这样一套流程,但是,与此同时可能还有其他的用户也在登录、运行程序、退出,他们好像都工作在各自独立的空间中,但他们也可以发送即时信息来沟通。这就涉及到Unix系统的3个重要的属性:通信、协作、网络访问。
我们以Unix的计算器为例子。
Unix的计算器:bc
启动计算器,输入bc即可,接着就可以输入计算表达式了,再回车就会返回结果,想退出按ctrl+D键。
但是,严格意义上来讲,bc是不会做计算的。当我们得到结果后输入ctrl+Z,暂停进程,然后输入ps显示进程理论上就会发现,不只有多一个bc的进程,还会多出一个dc的进程。
显示进程:ps
(但是由于我的ubuntu版本比较新了,所以bc的实现方法已经变了,不再用dc了。)
上面这段解释文档是怎么来的喃?man bc命令
联机帮助:man
回到正题,dc是用来干什么的喃?dc是一个计算器,能够接收逆波兰表达式,算出表达式的值。(逆波兰表达式就是操作数在前,操作符在后的后缀表达式,如2+3的逆波兰表达式就是2 3 +)
dc算出值后,再把值传回bc输出,那bc有什么用喃?bc的作用其实是把你输入的表达式转化成逆波兰表达式,利用称为(pipe)管道的通信程序传给dc计算。这就很像Web了,输入输出以及操作都在浏览器上,但后台运算都在web服务器上。
命令也是程序
在Unix系统中,几乎所有的命令包括ls、cp等等都是人为编写的程序,它们大多数都是用c语言编写的,当你输入ls时,程序知道你是要运行名字叫ls的程序。当然,你也可以编写自己的ls命令或者对它进行扩展。
由于命令其实就是程序,我们想增加一个新的命令也是一件比较容易的事,把程序的可执行文件放在/bin、/usr/bin、或者/usr/local/bin下面,这些目录下的系统目录都是其他人写出来的,而大多数人都觉得这个命令很有用,于是就成为了Unix的标准命令。