操作系统7- shell

用户体验:命令执行(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值