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

shell学习第一天

2015-06-07 19:04 639 查看
shell学习第一天



在开始学习shell以前我觉得应该具备的基础有以下几点:

1.如何登陆linux系统

2.如何在命令行上执行程序

3.如何做一个简单的命令管道,与使用简单的输入/出重定向,例如<和>

4.如何以&将程序放在后台执行

5.使用chmod,将脚本设置为可执行权限



入门

当我们需要计算机帮我们做点什么的是,最好是选对工具.就像你不会用文本编辑器来做支票簿的核对,不会用计算器来写策划方案一样,所以说程序语言用于不同的需求,本身没有好坏之分.

shell脚本常用于系统管理工作,或者用于结合现有的程序以完成特定的工作.一旦你写出了一个完成工作的办法,就可以吧用到的命令串在一起,放进一个单独的程序或者脚本里,以后只要执行改程序就能完成工作.如果写的程序很有用,那么别人可以一用该程序当做一个黑盒来使用,他是一个可以完成工作的成虚,但是我们不必知道他是如何完成的(面向对象的封装特性).

首先来看看脚本语言和编译语言的差异

大型的程序一般都是由编译语言写成,例如:C++,Java,C等.这些程序只要从源代码(socure code)转换为目标代码(object code),便能直接通过计算机来执行.



变异性语言的有点事:效率高,因为他们多半是运作与底层,所处理的是子节,整数,浮点数或者其他的及其层级的对象.例如:在C++里,很难首先目录的整体移动或者复制.



而脚本编程语言通常是解释型的.这类程序的执行,是由解释器度日程序代码,并将其转换成内部的形式,再执行.注意,解释器本身是一般的编译型程序.

通俗一点:编译语言需要编译器,脚本语言需要解释器,例如编写C++程序需要使用VS,而编写HTML代码有网页就行,因为网页中有自带的解释器.



为什么要使用shell脚本

使用脚本编程语言的好处是,脚本语言多半运行在比编译语言还高得层级,能够情已处理文件与目录之类的对象.缺点:一般情况下,效率比较低.不过权衡之下,脚本的执行速度已经很快,快到足以让人感觉不到性能不高了.常用的脚本编程语言有:shelll,Ruby,javascript等.

shell似乎是不同版本的linux系统之间的通用功能.shell脚本只要用心写,就能应用到很多系统上.

shell脚本的过人之处

简单性:shell是高级语言

可移植性:通过POSIX(可移植操作系统接口,是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称)所定义的功能,可以在不同的系统上执行,无需需改.

开发容易:短时间即可完成一个功能强大又好用的脚本(字啊以后的学习中就能看到)





说了那么多,接下来就是一个简单的脚本.在shell交互界面输入who,得到以下信息(这是我的电脑):

root pts/0 2015-06-07 18:37 (192.168.199.114)

这行信息代表系统上有多少人登陆.类似于QQ在线人数

每个字段的含义分别是登入帐号(root),使用的

终端机(pts/0 ),登入时间以及从何处登入.

在大型的,多用户的系统上(服务器的运维上),所列出的列表可能很长(一个页面不够显示),你需要的信息或许可能滚出画面,这是让用户查询的困难.而这正是进行自动化的好时机.使用wc(字数计算)程序,特可以计算出行数(line),字符数(character),字数(word). 使用wc -l:只列出行数.



who | wc -l 计算用户个数 -----> 我的电脑是一个1

|(管道)符号可以在两个程序之间建立管道(pipeline):who的输出,成了wc的输入.

将此管道转成一个独立的命令.方法是把这条命令输入一个一般的文件中,然后使用chmod为该文件设置执行的权限.

#cat > nusers cat是输出文件内容的命令,>nusers表示把内容送到文件nusers里而不是默认的屏幕。但是这里cat后面没有参数,意味着cat将从键盘读取数据输入到nusers中,以CTRL+D结束。

^D Ctrl+D 表示end-of-file

#chmod +x nusers 让文件拥有执行的权限

#./nusers 输出我们需要的结果.

易尚展示了一个小型Shell脚本的典型开发周期,首先,直接在命令行上测试.然后,一旦找到能够完成工作的适当语法,再将他们放进一个单独的脚本里,并未该脚本设置执行的权限.之后就能直接使用该脚本了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: