说明:如果您有任何疑问或想咨询其他业务请拨打电话 400 685 0732
全网监测海量数据按需发布监测预警
实时把握舆情动态精准追溯信息源头
一个系统当中操作系统就是一个系统资源的管理者和分配者,而这操作的过程当中就一定是要到一些程序,其中有一种包括具有输入设备读取命令作用的shell编程。可是shell编程到底是什么呢?接下来我们就一起来好好的了解一下吧。
shell编程——shell编程是什么
读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害?众所周知,对计算机下命令得通过命令(command)或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
其实shell也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。各种操作系统都有它自己的shell,以DOS为例,它的shell就是command.com文件。如同DOS下有NDOS,4DOS,DRDOS等不同的命令解译程序可以取代标准的command.com,UNIX下除了Bourneshell(/bin/sh)外还有Cshell(/bin/csh)、Kornshell(/bin/ksh)、Bourneagainshell(/bin/bash)、TenexCshell(tcsh)等其它的shell。UNIX/linux将shell独立于核心程序之外,使得它就如同一般的应用程序,可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。
shell是计算机用来解释你输入的命令然后决定进行何种处理的程序。shell也可以在非交互模式下调用。举个例子,可以把一些要输入的命令预先存放在文本文件里(叫做shell脚本)然后执行该文件。可以把shell看作是DOS下面的command.com(命令行解释器),而shell脚本就象是DOS的批处理文件(*.bat)。和DOS相比较,shell的功能要先进和丰富得多。
shell编程中/dev和/proc目录怎么用
dev目录是系统中集中用来存放设备文件的目录。除了设备文件以外,系统中也有不少特殊的功能通过设备的形式表现出来。设备文件是一种特殊的文件,它们实际上是驱动程序的接口。在Linux操作系统中,很多设备都是通过设备文件的方式为进程提供了输入、输出的调用标准,这也符合UNIX的“一切皆文件”的设计原则。所以,对于设备文件来说,文件名和路径其实都不重要,最重要的使其主设备号和辅助设备号,就是用ls-l命令显示出来的原本应该出现在文件大小位置上的两个数字,比如下面命令显示的8和0:
[zorro@zorrozou-pc0bash]$ls-l/dev/sda
brw-rw—-1rootdisk8,05月1210:47/dev/sda
设备文件的主设备号对应了这种设备所使用的驱动是哪个,而辅助设备号则表示使用同一种驱动的设备编号。我们可以使用mknod命令手动创建一个设备文件:
[zorro@zorrozou-pc0bash]$sudomknodharddiskb80
[zorro@zorrozou-pc0bash]$ls-lharddisk
brw-r–r–1rootroot8,05月1809:49harddisk
这样我们就创建了一个设备文件叫harddisk,实际上它跟/dev/sda是同一个设备,因为它们对应的设备驱动和编号都一样。所以这个设备实际上是跟sda相同功能的设备。
系统还给我们提供了几个有特殊功能的设备文件,在bash编程的时候可能会经常用到:
/dev/null:黑洞文件。可以对它重定向如何输出。
/dev/zero:0发生器。可以产生二进制的0,产生多少根使用时间长度有关。我们经常用这个文件来产生大文件进行某些测试,如:
[zorro@zorrozou-pc0bash]$ddif=/dev/zeroof=./bigfilebs=1Mcount=1024
1024+0recordsin
1024+0recordsout
1073741824bytes(1.1GB,1.0GiB)copied,0.3501s,3.1GB/s
dd命令也是我们在bash编程中可能会经常使用到的命令。
/dev/random:Linux下的random文件是一个根据计算机背景噪声而产生随机数的真随机数发生器。所以,如果容纳噪声数据的熵池空了,那么对文件的读取会出现阻塞。
/dev/urandom:是一个伪随机数发生器。实际上在Linux的视线中,urandom产生随机数的方法根random一样,只是它可以重复使用熵池中的数据。这两个文件在不同的类unix系统中可能实现方法不同,请注意它们的区别。
/dev/tcp&/dev/udp:这两个神奇的目录为bash编程提供了一种可以进行网络编程的功能。在bash程序中使用/dev/tcp/ip/port的方式就可以创建一个scoket作为客户端去连接服务端的ip:port。我们用一个检查http协议的80端口是否打开的例子来说明它的使用方法:
[zorro@zorrozou-pc0bash]$cattcp.sh
#!/bin/bash
ipaddr=127.0.0.1
port=80
if!exec5<>/dev/tcp/$ipaddr/$port
then
exit1
fi
echo-e”GET/HTTP/1.0\n”>&5
cat<&5
ipaddr的部分还可以写一个主机名。大家可以用此脚本分别在本机打开web服务和不打开的情况下分别执行观察是什么效果。
/proc是另一个我们经常使用的目录。这个目录完全是内核虚拟的。内核将一些系统信息都放在/proc目录下一文件和文本的方式显示出来,如:/proc/cpuinfo、/proc/meminfo。我们可以使用man5proc来查询这个目录下文件的作用。
以上就是有关shell编程的所有内容,那就只是shell编程一小部分的内容,如果大家还想要学习更多的可以去网络上搜索更多的资料,或者是买一本专门学习该编程的书籍。如果大家对此想要有一个更深入的了解,欢迎关注我们文军营销的官网。
推荐阅读
说明:如果您有任何疑问或想咨询其他业务请拨打电话 400 685 0732