美文网首页
9/7 课堂笔记

9/7 课堂笔记

作者: 精气神贯通 | 来源:发表于2016-09-07 21:16 被阅读0次

Linux shell

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

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

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

shell常见的几种类型有sh、csh、bash、zsh等提供的脚本支持

shell的功能点在于外部命令的使用

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

功能目标在于实现命令自动化

但是呢,实现命令自动化的同时,Shell需要依赖其他程序才能完成大部分的工作,这是它的缺陷也是一个优点吧,但它不容置疑的长处是:简洁的脚本语言标记方式,而且比C语言编写的程序执行更快、更有效率

/*所以我们如果有做运维甚至是基础管理Linux服务器的同学,只要学会了shell编程,大大的可以节约我们的时间,更快捷的管理我们的服务器了*/

bash是Linux标准默认的shell,是BourneAgain Shell的缩写

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

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

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

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

对于shell的基础介绍我就讲到这里,下面给大家来点干货,基于shell编程实际有用的一些小程序

我在讲全栈工程师班课程的时候,写了这么个程序:

#!/bin/bash

cd /home/liwei/mongodb/bin

./mongod --dbpath=../liwei_db

我们知道计算在执行指令的时候,是一条一条执行的。那么很好理解以上这3行。依次操作的目的是:进入mongodb/bin目录,接着执行启动mongodb数据,保存为m.sh,这样,只要我们在Linux终端执行一条:sh m.sh,回车,计算就会依次执行指令,达到启动mongodb数据库的功能

那么要执行更多的指令,可以么?回答肯定是可以,如果我们需要执行上百行指令,单独执行的话,我们要重复操作,那么把它们依次写入一个shell,这样来执行的时候就可以很方便了,执行shell的过程中,我们可以通过>或者>>来记录下一些节点的结果报告

比如这么一个shell:

#!/bin/bash

cd /lamp

ls *.tar.gz > ls.list

for TAR in `cat ls.list`

do

tar -zxf $TAR

done

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

那么我们现在有个需求就是将某个文件夹下所有的文件名字里的大写字母改成小写字母,如果要人工一个个改的话,但是找文件就够眼花蛋疼了,这个时候shell就发挥了强大的力量了

#!/bin/bash

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

do

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

mv $file $str

这样就很好的解决了一个复杂的操作

有时候我们在管理文件的时候需要将空文件,没用的文件全删掉

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

then rm $filename

fi

fi

done

针对于shell脚本编程还有很多实用的地方,大家慢慢挖掘吧,如果是在运维管理方面同样Python也是个很好的选择。shell编程远远不止我分享给大家的这一点点,后面有机会再给大家进一步分享。/*今天的分享就到这里吧,如果你有什么问题可以直接发我微信或许发给赫赫美女,我都会整理分享给大家的*/

相关文章

  • 9/7 课堂笔记

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

  • 9/9 课堂笔记

    nodejs--运行js的环境 变量命名 字母、下划线、数字,不以数字开头(最好见名知意) 流程控制 if els...

  • 课堂笔记9

    linux永远不要,也不能重启。 补:/etc/hostname c7主机名及配置文件 /etc/sys...

  • 半山课堂”第十五期听课笔记

    半山课堂”第十五期听课笔记 主题:“个性与饮食习惯,与身体健康” 时间:2021年4月20日晚7:30-9:30 ...

  • 思维导图笔记22-24

    社交新零售7-9课笔记

  • 9/18 课堂笔记

    Oracle(中小型企业不用)(收费 通常与Java搭配使用) MySQL mariadb postGRESQL(...

  • 9/8 课堂笔记

    apt-get update(root use only) apt-cache search openssh-se...

  • 9/5 课堂笔记

    质量需求 1 项目的性能 2 项目的负载能力 3 项目的数据安全 4 项目的高可用 5 项目的扩容能力 业务需求 ...

  • 9/6 课堂笔记

    lts--长期支持版(生产环境下越稳定越好) kali Linux--黑客 Linux两个分支 debian ...

  • 9/22 课堂笔记

    jQuery mobileAjax异步请求webAPP混合开发节约开发时间提高开发效率react native(封...

网友评论

      本文标题:9/7 课堂笔记

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