shell介绍

时间:2023-03-09 08:07:31
shell介绍

                                shell介绍

                                 作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一:学好shell的3个基本条件:
1.vi/vim编辑器的熟练使用,ssh终端及“.vimrc"的设置等等需要搞熟练;
2.命令基础:Linux150个常用命令的熟练使用,这个我会再“每天一个linux命令”中陆续给大家更新,当然,得我自己抽下班的时间;
3.常见linux网络服务部署及拍错,例如:crond.nfs,inotofy,lamp,lnmp,sesync,ssh等.
二.在学习shell之前,我们要了解一下Shell
1.shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(脚本)的方式
2.下面的图中黄色部分就是命令解释器shell处于操作系统的位置:
shell介绍
提示:shell英文是贝克的意思,从上图我们可以看出,命令解释器shell就像一个贝壳一样包住了系统核心。
3.那么究竟什么是shell呢?
我认为有3个特色:1>.能实现某种特定的功能;
2>.拥有执行权限的程序文件;
3>.遵循语法格式,功能(变量函数数组流程控制),系统命令等。
4.其实shell程序很类似DOS系统下的批处理程序(扩展名*.bat).
下面是在windows下利用批处理程序bat开发的备份网站及数据库数据的脚步:
shell介绍
再让我们看看一个简单的清楚系统日志的shell脚步吧:
shell介绍
补充:清空日志的三种方法:
shell介绍
在运维的角度来讲,出了问题出了看系统日志,还要利用dmesg这个命令哟(一般系统无缘无故down宕机了,可以通过这个命令来看有系统在启动过程中有哪些错误信息,具体的可以man dmesg)
5.让我们看看shell在运维工作中的应用吧~很多服务启动脚本,备份工具都是用Shell写的哟:
shell介绍
三.脚本语言的种类以及介绍
1.php语言
它是网页程序,也是脚本语言,更专注于web页面的开发,例如:dedecms,discuz。
也可以处理系统日志,配置文件等。
2.perl语言
perl脚本语言,比shell强大的多,2010年前很火,语法灵活,复杂,实现方法很多,不易读,团队协作困难。
3.Python语言
近几年很火的语言,可以做脚本开发,也可以实现web开发,中等以上的公司都要求会python,
4.shell语言
最容易上手的脚本,shell的优势在于处理操作系统底层的业务,因为有大量的系统命令为它做支撑,2000多个命令都是shell编程的有力支撑,特别是grep,awk,sed等。例如:一件软件安装,优化,监控报警脚本,常规的业务应用,shell开发更简单快速。以下是解释器支持的shell类型。
shell介绍
四.常用操作系统的默认Shell
linux是Bourne Again shell(bash)
Solaris和FreeBSD缺省的是Bourne shell(sh)
AIX下是Korn Shell(ksh)
HP-UX缺省的是POSIX shell(sh)
Centos linux系统默认的shell是bash
注意:编写脚本的时候我们通常会在第一行指定当前脚本所用的解释权,我们写脚本的时候一般都是调用bash,所以第一行我们要写上这么一行:"#!/bin/bash",要注意的是这可不是注释行哟~而是告诉内核我们用的是哪种解释器,下面的所有行,如果在出现类似的内核都会认为是注释行。
补充:
相应语言的开头标识内容
1.#!/bin/bash
2.#!/bin/sh
3.#!/usr/bin/awk
4.#!/bin/sed
5.#!/usr/bin/tcl
6.#!/usr/bin/expect
7.#!/usr/bin/perl
8.#!/usr/bin/env python
五.bash漏洞修复方式
1.背景
网络安全专家警告称,开源软件Linux中一个频繁使用的片段“Bash”,发现存在安全漏洞,其对计算机用户造成的威胁可能要超过2014年4月爆出的“心脏出血”(Heartbleed)漏洞[
2.漏洞原理
ash是用于控制Linux计算机命令提示符的软件。网络安全专家表示,黑客可以利用Bash中的一个安全漏洞,对目标计算机系统进行完全控制。
网络安全公司Trail of Bits的首席执行官丹·吉多(Dan Guido)指出:“与Heartbleed”相比,后者只允许黑客窥探计算机,但不会让黑客获得计算机的控制权。”他说:“利用Bash漏洞的方法也简单得多,你可以直接剪切和粘贴一行软件代码,就能取得很好的效果。”
吉多还表示,他正考虑将自己公司非必要的服务器断网,以保护他们不会受到Bash漏洞的攻击,直到他能够修补这一漏洞为止。
网络安全公司Rapid7的工程经理托德·比尔兹利(Tod Beardsley)则警告称,Bash漏洞的严重程度被评为10级,意味着它具有最大的影响力,而其利用的难度被评为“低”级,意味着黑客比较容易地利用其发动网络攻击。
比尔兹利称:“利用这个漏洞,攻击者可能会接管计算机的整个操作系统,得以访问机密信息,并对系统进行更改等等。任何人的计算机系统,如果使用了Bash软件,都需要立即打上补丁。”
3.修复方式
A - centos系统
yum clean all
yum makecache
yum -y update bash
如果是centos系统只要运行上面简单的脚本就可以。
B - Ubuntu系统
apt-get update
apt-get -y install --only-upgrade bash
C - debian系统
如果是7.5 64位 && 32位环境运行
apt-get update
apt-get -y install --only-upgrade bash
六."source"和"."还有"sh"调用脚本的却别
1."source"和"."的功能是一样的,可以调用脚本,并将脚本里的函数也传递到当前的脚本或者解释器中,但是"sh"后面跟脚本名称,则不会将该脚本的函数传递进来;
2."sh"实际上是执行一个脚本,最后执行完毕会将内存释放掉,不会保存变量。而"."和"source"则不会,这就是为什么在/etc/init.d/这个目录下有很多的脚本都会用"."去调用脚本。
七.shell脚本开发基本规范
1.开头执行脚本解释器
#!/bin/bash或者#!/bin/sh
2.开头加版权等信息
#Date
#Author
#Mail
#Function
#Version
提示:可配置vim编辑文件时自动加上以上信息,方法是修改~/.vimrc配置文件
3.脚本中尽量不要用中文注释
尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰
4.脚本以.sh为扩展名
例如:whoami.sh
5.代码书写优秀习惯
1>.成对内容的一次写出来,防止漏洞。
例如:{},[],'',``,"".
2>.[]中括号两端都要有空格,书写时即可流出空格[ ],然后退格书写内容。
3流程控制语句一次书写完,在添加内容。
例如:if语句格式一次完成:
if 条件内容
then
内容
fi
for循环格式一次完成:
for
do
内容
done
提示:while和until,case等语句也是一样。
八.shell变量概念以及变量类型说明
1.什么是变量
简单的说,变量就是用一个固定的字符串(也可能是字符数字等的组合),替代更多更复杂的内容,这个内容里可能还会包含变量的路径,字符串等其他的内容。使用变量最大的好处就是方便,当然,除了方便以外,很多时候在编程中使用变量也是必须的,否则就发无法完成开发工作。
2.变量类型
变量类型可以分为两类:环境变量(全局变量)和局部变量。
1>.环境变量也可以称全局变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用。
2>.局部变量只能在创建他们的shell函数或脚本中使用,还有一些变量是用户创建的,其他的则是专用shell变量。
3.环境变量
环境变量用于定义Shell的运行环境,保证shell命令的正确执行,shell通过环境变量来确定登陆用户名,命令路径,终端类型,登陆目录等,所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器,shell脚本和各类应用。
环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者/etc/profile.d/中定义。将环境变量放入profile文件中,每次用户登陆时这些变量值都会被初始化。
传统上,所有的环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出。
环境变量可用在创建他们的shell和从该shell派生的任意子shell或进程中。他们通常被称为全局变量以区*部变量。通常,环境变量应该大写,环境变量是已经用export内置命令导出的变量。
有一些环境变量,比如:HOME,PATH,SHELL,UID,USER等,在用户登陆之前就已经被/bin/login程序设置好了。通常环境变量定义并保存在家目录下的.bash_profile文件中,具体的环境变量可以在Shell解释器中输入env来查看
以下是设置环境变量的三种方法
1>.export 变量名=value
shell介绍
2>.变量名称=value;export 变量名
shell介绍
3>.declare -x 变量名=value
shell介绍
注意:以上定义命令都是在命令行下生效,想要永久定义一个变量可以写道配置文件中去,这样重启系统这些定义变量仍然还是存在的。可以写到”.bash_profile“或者”/etc/profile“才好使哟~
九.显示与取消shell环境变量
1.显示环境变量有2种方法
echo:
shell介绍
printf:
shell介绍
注意。printf这个函数实际上更复杂,但是相对功能上要比echo也强大的多,不过我们一般常用的还是echo这个命令来显示~
2.取消变量很简单,用unset就好使了
shell介绍
看,变量为空了,这都是unset干的好使!!!
十.局部变量
本地变了在用户当前的shell生存期的脚本中使用。例如,本地变量yinzhengjie取值为25,这个值就只在用户当前shell生存期种有意义。如果在shell中启动另一个进程或退出,本地变量yizhengjie值将无效。
shell中定义一个变量的要求:一般是字母,数字,下划线组成。字母开头。