操作系统7- shell

来源:互联网 发布:凸优化求解算法 编辑:程序博客网 时间:2024/06/17 10:16

用户体验:命令执行(the shell)

 

 

一旦操作系统加载之后,他就开始等待命令。命令可以通过CLI(CommandLineInterface或者GUI(GraphicalUserInterface)输入。

 

命令输入会进入一个命令的解析器(在Unix世界这个叫做shell)。Shell用自己的规则解析命令之后执行命令。

 

一个经典shell流程:

 

终端提示 -输入命令 -shell解析命令 -shell请求内核执行,shell进入睡眠状态直到内存执行完毕。 - shell显示执行结果和等待下个命令。

 

一些通用的shell:

 

BourneShell  /bin/sh  ,  Bourne AgainShell /bin/bash,

Cshell  /bin/csh,  Korn Shell /bin/ksh

 

MSDOSWindowsshellCOMMAND或者CMD

 

 

通过Shell是一个解析器,shell很快做一些复杂的任务。事实shell是一个很强的编程环境。第一个shell可以做解析特殊字符。这些特殊字符叫通配符。这些特殊字符影响输出和执行shell命令。

 

常用的通配符有: *,?[],

 

shell的变量

 

当你登陆到Unix系统,你会面对一个定义好的环境变量的shell。这个环境变量叫shell变量。很多东西被定义在一个文件(.proflie)里。可以通过命令env,查看自己的shell变量。

 

$env

 

其中一个变量是HOME,这个变量定义你的主目录的绝对路径。这些shell变量可以被用于任何一个命令。例如:

$cd $HOME

表示回到自己的主目录

 

Unix Shell管道(pipes)及其更改

 

unix所有程序都有文件描述(file descriptors)来表示它的输入输出。默认的文件描述:标准输入(0),标准输出(1)和标准错误(2).

 

一个程序将会用fscanf(2c)或者cin直到EOF^D,通过标准输入读取数据.

 

文件描述默认是连接到一个设备,例如:标准输入是连接到键盘。如果你不想你的程序通过键盘读取输入,想从文件中读取输入。Unix运行更改管道。就是你可以改变标准输入,输出,错误来自哪里或者到哪里去。

 

操作符 > , 改变程序STDOUT到一个文件,这个文件会被覆盖,例子:

ls > foo.txt

cat a.txt b.txtc.txt > foo.txt

 

 

操作符<,改变程序STDIN这样程序可以读取文件,例子:

cat </etc/hosts

1/11/20151/11/2015

 

 

操作符>> ,改变程序STDOUT到一个文件,这个文件不会被覆盖

 

 

Unix的一些特殊文件

 

/dev/urandom,  如果你改变通过这个文件读取你获得随机数据。这个通常用来当做随机数产生器。

 

/dev/null 如果你改变输出到这个文件,数据会消失

 

 

/dev/zero如果你通过这文件读取,你会获得0。通常用来初始化数据。

 

 

道(pipes)的合并:n>&m,   2>&1,表示标准输出和标准错误合并一起。

 

Shellpipes

 

简单的可以这样:

 


 

复杂一点:

 


 

 

参考:

 

(什么是shell),http://www.dnxxj.com/questions/475738a3445d72/什么是shell.html

 

(系统的环境变量是什么) ,http://www.dnxxj.com/questions/47577b40904540/系统的环境变量是什么%3F.html

0 0
原创粉丝点击