前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是Shell?怎么编写和执行Shell脚本?

什么是Shell?怎么编写和执行Shell脚本?

原创
作者头像
reload
发布2024-07-28 21:19:56
2210
发布2024-07-28 21:19:56
举报
文章被收录于专栏:Linux运维

大家好呀!今天来简单介绍一下Shell基础,Shell介于内核与用户之间,是一个命令解释器,负责命令的解释。简单理解,Shell既是一个程序也是一种脚本语言。

1、shell介绍

1.1 概述

shell介于内核与用户之间,是一个命令解释器,负责命令的解释。shell是人机交互的桥梁,通过在终端上输入shell命令来控制linux内核,进而控制系统硬件。

1.2 shell的种类

代码语言:powershell
复制
cat /etc/shells 

终端输入ps命令,可以看到bash的进程。当用户在终端上输入命令后,会由该bash进行解析,所以解析命令的是bash,而不是终端(终端只是一个程序,而真正解析的是bash)

终端可以看做是bash的接口,而bash就是shell的一种类型(bash shell)

2、shell脚本

2.1 概述

1)什么是shell脚本?

简单理解,将需要执行的命令保存到文本中,按照顺序执行。由于shell是解释型的,所以无需编译。

概括而言,若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本

2)什么时候用到脚本?

对于重复化、复杂化的工作,通过把工作的命令写成脚本,后续只需要执行脚本就能完成这些工作。

常见应用场景如自动化分析处理、自动化备份、自动化批量部署安装等等...

3)学习shell的一些建议

对于初学者,学习shell时建议:多看、多练、多思考。尽可能记忆更多的命令,掌握脚本的标准的格式。当然,学习shell还有一个非常重要的一点:熟悉并掌握脚本的基本语法

2.2 脚本编写与执行

1)脚本基本写法

脚本第一行

代码语言:powershell
复制
#!/bin/bash

#!(魔法字符),指定脚本代码执行的程序。即它告诉系统这个脚本需要什么解释器来执行,也就是使用哪一种Shell

对脚本基本信息的描述(注释)

代码语言:powershell
复制
# Name: 名字
# Desc: 描述describe
# Path: 存放路径
# Usage: 用法
# Update: 更新时间

养成写注释的好习惯,方便以后忘记命令的功能后及时查阅。

描述完成后,下面就是脚本的具体内容

代码语言:powershell
复制
commands
...

eg:在/(根目录)下创建一个目录shell01,按照上述写法在该目录下编写一个shell1.sh脚本。

编写完成后,保存退出。

命令按顺序依次执行,同一行编写多条命令,使用 ; 分隔

2)脚本执行方法:

标准脚本执行方法(建议):(魔法字符指定的程序会生效)

标准执行方式:绝对路径执行、相对路径执行。

标准执行方式要求:脚本必须要有可执行权限。

使用chmod +x增加权限

总结(标准执行方法):

①相对路径:./shell1.sh

②绝对路径:/shell01/shell1.sh

非标准的执行方法(不建议):(魔法字符指定的程序不会运作)

该方式下脚本不需要有可执行权限。

代码语言:powershell
复制
# 直接使用bash命令
bash shell1.sh
# -x:查看执行过程,用于排错
bash -x shell1.sh
# -n:查看脚本的语法是否有问题
bash -n shell1.sh

总结:-x: 一般用于排错,查看脚本的执行过程;-n: 用来查看脚本的语法是否有问题

注:若脚本没有可执行权限,则不能使用标准的执行方法执行,此时可以使用非标准方法,如 bash shell1.sh

其他非标准方式:

代码语言:powershell
复制
# 使用source
source shell1.sh
# 使用 .
. shell1.sh

注:source 和 . 表示读取文件,执行文件里的命令

总结(非标准执行方法):

bashsource.

3、bash基本特性

3.1 命令和文件自动补全

使用Tab补全命令和文件

3.2 常见快捷键

常见的快捷键总结如下,以下的 ^表示 ctrl

代码语言:powershell
复制
^c   			终止前台运行的程序
^z	  			将前台运行的程序挂起到后台
^d   			退出 等价exit
^l   			清屏 
^a |home  	光标移到命令行的最前端
^e |end  	光标移到命令行的后端
^u   			删除光标前所有字符
^k   			删除光标后所有字符
^r	 			搜索历史命令

3.3 常用通配符(重点)

常用通配符总结如下

代码语言:powershell
复制
*:	匹配0或多个任意字符
?:	匹配任意单个字符
[list]:	匹配[list]中的任意单个字符
[!list]: 匹配除list中的任意单个字符
{string1,string2,...}:匹配string1,string2或更多字符串

eg:在/tmp目录下创建如下文件并测试

代码语言:powershell
复制
# 创建文件
touch file{1..3}
touch file{1..3}.jpg
# 以file开头的文件
ls file*
# 以jpg结尾的文件
ls *.jpg
# 以file开头,且后一位为任意单个字符的文件
ll file?
# 以file开头、后一位为任意单个字符且以.jpg结尾的文件
ll file?.jpg
# 匹配file1、file2、file3
ll file[123].jpg
# 匹配file1、file3
ll file[0-13].jpg
# 匹配file1、file2、file3
ll file{1..3}.jpg

3.4 bash中的引号(重点)

1)双引号"" :会把引号的内容当成整体来看待,允许通过\$符号引用其他变量值

2)单引号'':会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符

3)反撇号:反撇号和\$()一样,引号或括号里的命令会优先执行,如果存在嵌套,使用$(),反撇号不能用

代码语言:powershell
复制
echo $(echo "`hostname`")

注:使用$符号去调用某个变量的时候,双引号可以,而单引号不可以。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、shell介绍
    • 1.1 概述
      • 1.2 shell的种类
      • 2、shell脚本
        • 2.1 概述
          • 2.2 脚本编写与执行
          • 3、bash基本特性
            • 3.1 命令和文件自动补全
              • 3.2 常见快捷键
                • 3.3 常用通配符(重点)
                  • 3.4 bash中的引号(重点)
                  相关产品与服务
                  腾讯云小微
                  腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档