美文网首页
全栈工程师学习第三天Linux Shell脚本实战技术

全栈工程师学习第三天Linux Shell脚本实战技术

作者: 刘伟华 | 来源:发表于2016-09-08 13:48 被阅读0次

    一、shell基础:

    1、shell的定义;

    (1)shell是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户;

    (2)Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁,同时,shell也可以作为一门强大的编程语言;

    (3)我们常说的shell是命令行解释器的意思,也有内核上的一层壳的含义。

    2、shell常见类型:

    sh、csh、bash、zsh等提供的脚本支持;

    3、shell简介

    (1)Shell 诞生于 Unix,是与 Unix/Linux 交互的脚本编程,单独地学习 Shell 是没有意义的,Linux都默认集成了shell环境;

    4、shell的特点:

    (1)shell的功能点在于外部命令的使用;

    (2)其内部数据处理方面,侧重文本(或者说字符串,或字符流)处理,而对运算和其他基本数据结构的原生较弱(例如常用的array、set、map等等);

    (3)功能目标在于实现命令自动化;

    (4)实现命令自动化的同时,Shell需要依赖其他程序才能完成大部分的工作,这是它的缺陷也是一个优点;

    (5)不容置疑的长处是:简洁的脚本语言标记方式,而且比C语言编写的程序执行更快、更有效率。

    5、shell编程的意义:

    在进行Linux系统运维甚至是基础管理Linux服务器的时候,只学会了shell编程,大大的可以节约我们的时间,更快捷的管理我们的服务器了。

    6、bash特点:

    (1)bash是Linux标准默认的shell,是BourneAgain Shell的缩写;

    (2)因为bash有很多特性,如:可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令;

    (3)自动通过查找匹配的方式给出以某字符串开头的命令;

    (4)还有就是bash包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。

    7、基于bash的shell编程文件的声明

    在Linux系统中我们经常看见以:#!/bin/bash开头的文件内容,这就是声明了该文件是一个基于bash的shell编程文件;

    二、基于shell编程实际有用的一些小程序

    1、应用小程序一:启动一个数据库;

    (1)程序代码:

    #!/bin/bash

    cd /home/liwei/mongodb/bin

    ./mongod --dbpath=../liwei_db

    (2)操作说明:

    A、进入mongodb/bin目录;

    B、接着执行启动mongodb数据库,保存为m.sh;

    C、在Linux终端执行一条:sh m.sh,回车,计算就会依次执行指令,达到启动mongodb数据库的功能;

    (3)应用场景:批量执行上百行指令,把它们依次写入一个shell,执行shell的过程中,我们可以通过>或者>>来记录下一些节点的结果报告;

    2、程序代码二:批量解压缩某个目录下文件,并将结果集用于其它命令中:

    (1)程序代码:

    #!/bin/bash

    cd /lamp

    ls *.tar.gz > ls.list

    for TAR in`cat ls.list`

    do

    tar -zxf $TAR

    done

    (2)操作说明:

    这个shell要解决的实际问题是将lamp目录里面所有的压缩包,批量解压出来,这样我们可以看出ls的结果集可以拿出来参与下一个指令的执行

    3、程序代码三:将某个文件夹下所有的文件名字里的大写字母改成小写字母;

    (1)程序代码:

    #!/bin/bash

    for file in`ls | grep '[A-Z]'`

    do

    str=`echo $file|tr 'A-Z' 'a-z'`

    mv $file $str

    4、程序代码四:有时候我们在管理文件的时候需要将空文件,没用的文件全删掉 ;

    (1)程序代码:

    for filename in`ls`

    do

    if test -d $filename

    then b=0

    else

    a=$(ls -l $filename | awk '{ print $5 }')

    if test $a -eq 0

    相关文章

      网友评论

          本文标题:全栈工程师学习第三天Linux Shell脚本实战技术

          本文链接:https://www.haomeiwen.com/subject/fomsettx.html