|
发表于 2005-6-3 09:31:09
|
显示全部楼层
shell和c都可以看作是一种语言,难易只是相对而言,因此这个没法比较!
学习一种语言最重要是要领略到这种语言的灵魂之处,而不是去追究它容易还是简单,每个编程语言都有自己的特点,但是大部分的思想都是相通的,比如你会c语言,那么学起shell来就容易一些,我们学习编程语言不是为了比较难易,而是融会贯通,互为补充的!
shell是一种可编程的人机交互的界面,那么Linux Shell 到底是命令来的,还是编程环境来的?
Linux只是一个内核,要让内核按照用户的命令工作,就需要建立一种方法让人机能够交流,shell是Unix/Linux提供的一种人机交互环境,它由一组命令和命令解释器组成。DOS环境就是摸仿它编写的。对于一些简单的操作如建个新目录、拷贝一个文件,只需一个个的执行某几个命令就可以完成了,但对于复杂的操作,如:将本周里所有的日志中包含XXX信息的日志备份到以备份日期为目录名的目录下,同时将其做为邮件发送到管理员信箱。就要输入好多命令才能完成,而且每周都要输入一次,对管理员来说这项工作也太无聊了,于是shell为用户提供了一个简化的方法,用户可以写一个脚本例如写一个 backup.sh,将这些命令按一定的方式(顺序、判断、循环)集成到一起执行,这样每次要备份时只需运行backup.sh文件就OK了(它是脚本所以不需要编译,就可以在sh解译器下执行),如果还想少做点事,还可以把它加入到cron中定期自动执行。
所以严格来说
shell:一种人机交互环境(它有多种实现方式如Bash、Ksh、Csh等等)它由一组命令和一个命令解释器组成。
shell脚本:为了达到某种目的,以编程的方式将shell命令组合到一起形成的一个文件。
shell编程:如果把系统命令理解成系统库函数(本质上两者没有什么差别),shell就相当于一种编程环境了。
对于终端的概念,参考下:
终端(Terminals)
Unix 是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?他们是通过哑终端来连接到这些机器,也就是用键盘、显示器及足够的 electronics (电子元件)组成的机器与中央计算机(central computer)相连。在这些终端上,用户可以敲字符(teletype),这就是字符串'tty'表示终端设备文件,和'getty'命令的名称来历。
您可能会问,现在这些东西都在哪儿。 这些终端的厂家无法达成一项最终标准,这导致每种牌子的终端都有各自的键盘布局、各自的在屏幕上显示字符的方法、发送或接收什么信号表示什么字符、控制代码等等。
为了避免这些混乱,就创建了一个含有所有不同终端特性的(capability)文件,这就是'termcap'。用一个工具打开'/etc/termcap'瞧瞧,可别吓着了 ;-) 。
Linux 终端大多数用'vt100'或'linux'作为终端类型。
而所谓的超级终端,好象这时windows中的产物,在做嵌入式arm等板子的交互时用到过
最后,再抛砖引玉一下,那么如何编写脚本和如何运行他呢?
用vi编写一个含有多个linux命令的文件,如
ls
date
...
存盘退出后,在提示符下用sh filename,即可运行
也可以这样执行:
在脚本文件的最前面加上这么一句:
#!/bin/bash
然后存盘后,在命令行下面输入这一句使它可以直接执行:
chmod +x filename
这样以后执行的时候就可以这样执行:
./filename
不知道我的解释能让你明白吗? |
|