Linux系统shell脚本快速上手(新人入门)

一、shell简介

shell是Linux系统中开机自动加载的一个特殊程序,它将用户输入的指令,转换成Linux内核可以识别的语言,从而让内核执行调用硬件。
当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。shell 就是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 shell来启动、挂起、停止,甚至编写一些程序。
用户使用 Linux 时是通过命令来完成所需工作的。一个命令就是用户和 shell 之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell 本身并不是内核的一部分,它是一个用C语言编写的应用程序,它是用户使用 Linux 的桥梁,让用户能够更加高效、安全、低成本地使用 Linux 内核。shell 既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
在 Linux下比较流行的shell有好几个,每个shell 都各有千秋。Bash是Linux系统中默认使用shell的程序,它位于/bin/bash。

shell和Makefile的区别及联系
Makefile描述了整个工程的编译、链接规则。当源码文件比较多的时候就不适合通过输入 gcc 命令来编译,Makefile 文件描述了编译哪些源码文件、如何编译,每次需要编译工程时只需要使用这个文件,通过make命令来编译处理程序即可。
shell脚本是批处理命令,一般是用来管理系统的。我们如果要实现一个需求,需要在 shell 窗口中输入很多命令,可以直接在 shell 窗口中输入,但每次用到相同的需求时都需要重新敲,我们可以把这些命令记录在一个文档中,然后去执行这个文档中的命令,这样就能一步操作完成。

二、什么是shell脚本

将需要执行的Linux命令保存到一个文件中,然后通过这个程序文件去执行时,我们就说这个程序为 shell 脚本或 shell 程序。在脚本中输入系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个的 shell 脚本。它不需要编译,通过解释器解释运行,所以速度来说相对比较慢。
shell脚本的作用:
1.自动化完成软件的安装部署,如安装部署LAMP架构服务
2.自动化完成系统的管理,如批量添加用户
3.自动化完成备份,如数据库定时备份
4.自动化的分析处理,如网站访问量
shell脚本在处理自动循环或大的任务方面可节省大量的时间,且功能强大

三、shell基本格式

以下图的简单shell脚本为例

在这里插入图片描述
1.脚本名称一般使用“.sh”结尾,便于识别,例如本例的脚本名称为“hello.sh”。
2.按照 shell 编程的惯例,以bash为例,程序的第一行一般为“#!/bin/bash”,其中#表示该行是注释,符号“!”告诉shell 运行“!”之后的命令并用文件的其余部分作为输入,也就是运行/bin/bash 并让/bin/bash 去执行shell程序的内容。此外还有其他类型的解释器,比如#! /usr/bin/python、 #!/usr/bin/expect等。

笔记:在终端输入命令“ echo $SHELL”可查看当前使用的shell类型。

3.注释信息:以"#“开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行。一般习惯在第二行注释中写上脚本名、开发者等信息。
4.可执行语句:如echo命令,用于输出”"之间的字符串。

四、shell脚本的执行方式

继续使用上述提到的那个例子,shell脚本的文件名为hello.sh,文件位置在/root/home/qinglan/libo目录中,同时该脚本已经获得了执行权限。

笔记:添加权限的方法:在终端输入“chmod +x hello.sh”命令,注意是在终端输入,不是root里面

以下总结的四种执行方式都是在root中输入命令进行的,所以首先进入root。

笔记:进入root的方法
在linux终端命令行模式下,输入sudo passwd root (注意passwd的拼写),再输入用户密码,接下来会让你设置root密码,并再次确认。之后输入su,再输入刚刚设置的root密码就可以进入root了。以后再进入root,直接输入su,然后输入root密码就可以了。
如果想要退出,输入exit即可。

方法一:切换到shell脚本所在的目录(此时称为工作目录),执行shell脚本

输入以下命令:

./hello.sh             #中间不能有空格

在这里插入图片描述
./ 的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/root/bin)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/root/bin就不在环境变量PASH中的,所以必须加上 ./ 才可执行。

方法二:以绝对路径的方式去执行shell脚本

输入以下命令:

/home/qinglan/libo/hello.sh

在这里插入图片描述

此方式既可以在当前目录下执行,也可以不在当前目录下执行。

方法三:以绝对路径的方式去执行shell脚本

输入以下命令:

bash hello.sh 或 sh hello.sh

在这里插入图片描述
若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至shell文件中的第一行“#!/bin/bash”都可以不写。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的,这时不是hello.sh自己来执行,而是被人家调用执行,所以不需要执行权限,也就不用指定bash路径了。

方法四:在当前的shell环境中执行用. hello.sh或source hello.sh来执行shell脚本:

输入以下命令:

. hello.sh(点和shell.sh之间必须要有空格)或 source hello.sh

在这里插入图片描述

小结

前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行,shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值