您的位置:首页 > 运维架构 > Shell

操作系统7- shell

2015-11-13 17:10 337 查看
用户体验:命令执行(the
shell)
 
 
一旦操作系统加载之后,他就开始等待命令。命令可以通过CLI(Command
Line
Interface)
或者GUI
(Graphical
User
Interface)输入。
 
命令输入会进入一个命令的解析器(在Unix世界这个叫做shell)。Shell
用自己的规则解析命令之后执行命令。
 
一个经典shell流程:
 
终端提示 -》
输入命令 -》
shell
解析命令 -

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

 

一些通用的shell:

 
Bourne
Shell  /bin/sh  ,  
Bourne 
Again
Shell /bin/bash,
Cshell  /bin/csh,  Korn Shell /bin/ksh
 
MSDOS
和Windows

shell

COMMAND
或者
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,
表示标准输出和标准错误合并一起。
 
Shell

pipes
 

简单的可以这样:

 



 
复杂一点:
 



 

 
参考:
 
(什么是shell),
http://www.dnxxj.com/questions/475738a3445d72/什么是shell?.html
 
(系统的环境变量是什么) ,
http://www.dnxxj.com/questions/47577b40904540/系统的环境变量是什么%3F.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: