shell一周学习心得

学习shell脚本的心得

  1. shell脚本运行的环境:shell 脚本,就是把多条命令,有组织的编写到一个文件中,来实现一系列动作,方便的执行的一个文件。

Shell脚本主要应用在shell环境中,我们使用的rhel6,主要使用的bash shell解释工具来完成人机的交互。在日常的操作系统中还有其他的shell解释工具,如csh,tcsh,dash,zsh等等。Shell脚本可以实现一系列的动作的自动化运行。是自动化运维的利器,也是Linux系统管理的有力工具。学习好shell脚本,对以后的工作,有很大的意义。

  1. shell脚本的基本结构和基本知识

一个shell脚本,主要有两部分构成,第一部分就是声明shell的解释环境

“#!/bin/bash”如上面这句,就是声明系统用/bin/bash来解释和运行该脚本,然后是你的命令部分。命令部分通过程序的顺序执行,或者通过各种分支判断,循环结构,来控制程序的运行。最终达到完成工作任务的目的。

在shell中,首先需要了解的是基本命令,也就是我们日常管理维护操作系统的指令,如常用的cd , pwd,useradd,passwd,touch,sed,awk等等,这些都是构成shell脚本,实现功能的基本元素。通过多个命令的不同组合,和流程控制,来实现部署环境,管理系统的任务。

在我们的系统中,有许多的变量,其中系统变量($PWD,$USER,$UID…),是固化在系统中的,我们就可以直接调用。还有很多的预定义变量($?,$*,$#),自定义变量等。是灵活编写脚本不可缺少的基本思路。要学会使用变量可以有效的减少脚本的书写工作。

如何让程序更好的运行,有时候就需要使用到分支判断循环结构控制,这里我们学习到了,if,for,while,case等等一系列流程控制结构。用它们来灵活的控制脚本的运行。

使用expect来实现人机交互的自动应答部分,解决掉我们需要在终端输入的交互问题。

通过一周的学习,基本获得了一个编写shell脚本的思路和方法。当然,对与系统命令与系统的了解,越深入,对我们编写shell脚本就越得心应手,这需要我不断的学习,思考和总结。

  1. 编写shell脚本的思路

为什么编写一个shell脚本?基本都是自己需要实现一个动作,或者让shell脚本帮助我们完成一系列繁冗,或枯燥的操作。减少自己的工作强度。也是实现自动化运维的基本功。

编写脚本,要从实际出发,不要一下把功能写的十分全面,强大。我的原则是只要实现就好,不择手段。然后在逐步完善。

首先要把你的任务明确,然后用试验机做测试,成功了,或者遇到问题了,在想解决办法。把这些命令收集起来,组成shell脚本,把问题逐一解决掉,或者绕开,完成脚本的功能是最重要的,不要进行破坏性操作。

有时候绕开是很好的办法,比解决要更有效。

  1. shell脚本的实现

脚本的实现,需要经过一个痛苦的过程,有时候一个看似很简单的shell功能脚本,也许会花费你很大的心思。最好的办法就是做切片,分段调试,分段测试,整体组合。精简代码。调整思路,完善脚本。

不要试图一次性编写一个复杂的脚本。除非你对shell和系统服务如火纯青。

  1. shell脚本的局限性和在工作中的实际应用

可以尝试在日常生活中使用shell脚本帮助你完成一点简单的工作。比如每天备份下你的boot目录,etc目录等。配合计划任务等工作。因为有些时候,很多工作是shell脚本自己搞不定的。不能太依赖shell。让它发挥自己的优点就可以了。比如一些风险性操作,比如磁盘格式化,lvm管理,需要谨慎操作的,还是远程登陆等比较靠谱点。万一你一个脚本下去,整个数据全部完蛋。尽管脚本都是我们辛辛苦苦编写,和测试的。谁也不能保证它不会出这样那样的问题。

最后,通过一周的学习,我初步了解了shell脚本的编写方法,自己对操作系统,和各种功能的实现方法和shell脚本的实现方式,方法还要认真学习和总结。以上是我的一点小小的心得和体会。还有很多缺点和不足,希望老师和同学多多帮助。

任  浩  . 北京

时间: 2024-08-25 18:30:09

shell一周学习心得的相关文章

201671010117 2016-2017-2 《Java程序设计》Java第三周学习心得

Java第三周学习心得 通过这一周的学习,了解到了Java的核心部分,理解了用户自定义类的定义 ,了解了对象的声明 ,了解了使用构造函数初始化对象 ,使用类属性与方法的使用,了解了package和import语句的用途,知道了假设你面对现实世界的一个对象,你不会把它的属性和处理方法分开,程序设计也是一样.面向对象程序设计(OOP):一种新的思维方法,更接近人类处理现实世界问题的自然表示方法.面向对象的语言有:C++,Smalltalk,Java等.面向对象程序设计的几个主要概念:抽象数据类型.类

201671010117 2016-2017-2 《Java程序设计》Java第五周学习心得

Java第五周学习心得       通过这一周的学习,对继承有了一定的了解,但是不是很熟悉,老师上课按以前的方法讲解了第五节的懂得了更深入了一点,还需要多多敲代码来掌握的更深,因为方法突然的改变,还是有一点的不习惯,所以现在还在适应中,感觉部分知识掌握的不是很深入,还需要加强.

201671010117 2016-2017-2 《Java程序设计》Java第二周学习心得

Java第二周学习心得 这一周老师在周四进行了课堂测验,完全出乎我的意料,我以为老师会在前两周上课讲一下,由于我在课前没有好好准备,反转课堂来的有的措手不及,那些题很多很多都不会,也错了很多,班上有很多表现很好的同学,他们课前准备充分,在课堂上完全没有任何压力,我也意识到了我课前没有花大量时间看书的严重性,所以我下课便去看第三章了,以后也一定要好好看书,找出不懂得问题,课上也要认真向其他优秀同学学习,不懂的问题也要想办法解决. 今天写了PPT上的任务1-9,着实也遇到了很多不会的问题,像是最后的

201671010117 2016-2017-2 《Java程序设计》Java第十一周学习心得

Java第十一周学习心得               通过第十一周的学习,学习了Vetor.Stack.Hashtable类,编辑运行ArrayListDemo和LinkedListDemo两个程序和SetDemo,老师上课分析代码,并且让我们自己实验,掌握的比较好,但是书上的程序365页9-2set/SetTest不是很懂,这个代码通过包导入,我的运行不出来结果,不知道哪里出错了.

201671010117 2016-2017-2 《Java程序设计》Java第十二周学习心得

Java第十二周学习心得        在第十二周的理论课堂上,老师对1-4章的内容进行了测验,程序填空题和写程序题的分不是很高,程序题的重要部分都有遗漏,对于计算图书的总数那部分不会写,扣分较多,但是现在已经掌握了,接下来要在电脑上多多练习,周五老师对新内容第十章进行了讲解,这周到现在还没有遇到什么问题.

第一周学习心得

Linux第一周学习心得 在过去的一周里王老师给我们讲了一些计算机基础,以及linux的基本操作: 计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动.高速地处理,然后把处理结果输出的现代化智能电子设备 发展历史: 第一代计算机(1946-1957) 电子管时代 第二代计算机(1958-1964) 晶体管时代 第三代计算机(1965-1970) 集成电路时代 第四代计算机(1971以后) 大规模集成电路时代 1946年,世界上第一台计算机EN

201671010118 2016-2017-2《Java程序设计》 第五周学习心得

第五周的java课程已经结束,这周我们主要学习了继承,类.超类和子类.继承层次.多态等,老师讲这节课时用了课堂教学法,我觉得效果还不错,理解了它们的概念,以及之间的关系,掌握了超类的定义以及利用超类扩展子类,也知道了super的两种用法,super()表示调用超类的构造器,super.表示调用超类的方法.实验五中老师给了一个思考题"你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适?"我没有真正了解,在这周学习中,基本概念理解了,但是编程还存在一定的问题,

201671010115 2016-2017-2《Java程序设计》第五周学习心得

一周又过去了,感觉这学期过得好快.觉得自己才从家里回来,可一学期的四分之一又没了.在这段时光里,我们花大量的时间和精力学习了Java,然而我感觉自己还是学不会Java,就拿Java上的继承来说吧,上周我们班的同学都给老师提了意见,让老师按传统教学上一节继承,老师确实也听了我们的意见并且也这样做了,可是,听懂的同学应该也不是很多.可能因为我们一直都没有课后多复习的习惯:也可能是我们只是看书,没有多实践,没有敲更多的代码:导致前面的基础知识有的还没有完全掌握,就对后面的学习有了很大影响.所以,这周最

2019-2020-1学期 自己8位学号 《网络空间安全专业导论》第二周学习心得

读书心得: ???通过学习<计算机科学概论>的第三部分硬件层,我从第四章了解到计算机如何通过控制最底层的电流进行运算.由于讨论的是使用二进制信息的数字计算机,所以只关注两个电平范围,它们分别表示为二进制数字1和0.电流由称为门的电子设备操纵,门负责执行基本的逻辑运算,如非运算.与运算和或运算.门是由一个或多个晶体管创建的,晶体管的发明使计算学发生了翻天覆地的变化. ???把一个门的输出作为另一个门的输入可以把门组合成电路.仔细设计这些电路,可以创建出能执行更复杂任务(如求和.多路复用和存储数据