shell(一)shell编程入门

简介: 开始学习shell编程之前,我先啰嗦几句,作为一个web开发工作者,在部署网站的时候不可避免的要使用linux服务器。 对于大部分同学来说,配置linux服务器的环境是一件很难的事情,包括刚开始接触linux的我也是一样的。 最开始的时候也是碰到了不少坑,走了很多弯路。后来有了第一篇关于服务器环境配置的教程《Centos7.6配置lnmp》关于这篇教程纯粹就是我一点一点试出来的。在百度上各种查,把好用的部分整理在了一起。里边也包含了很多东西,包括yum的配置,nginx的配置文件编写。以上的东西,惭愧点说,我是看不懂的。反正好用了就行了呗。

开始学习shell编程之前,我先啰嗦几句,作为一个web开发工作者,在部署网站的时候不可避免的要使用linux服务器。

 

对于大部分同学来说,配置linux服务器的环境是一件很难的事情,包括刚开始接触linux的我也是一样的。

 

最开始的时候也是碰到了不少坑,走了很多弯路。后来有了第一篇关于服务器环境配置的教程《Centos7.6配置lnmp》关于这篇教程纯粹就是我一点一点试出来的。在百度上各种查,把好用的部分整理在了一起。里边也包含了很多东西,包括yum的配置,nginx的配置文件编写。以上的东西,惭愧点说,我是看不懂的。反正好用了就行了呗。

 

但是,随着工作年限的增加,负责的工作也不再是之前那样简单的环境配置就能满足的,有的时候可能需要对nginx的配置文件进行修改,或者,yum源安装的软件附带的模块已经不满足项目所需要的要求。或者说的再深入一点,我们需要自己编写nginx的插件。

 

这个时候我们可能就需要使用到shell编程。

 

那什么是shell编程呢?

 

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

 

Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。

包括我们之前学习的linux系统中使用的操作命令:cd、ll、grep等,都是shell命令。

基本流程如下图所示:

image.png

一:Shell 也支持编程

Shell不只是可以像我们上边说的可以使用命令来控制操作系统,也是可以像PHP、Java那样进行编写程序的,我们后期要学习的也就是这一部分。

Shell编程没有像其他语言那样复杂强大,他也是支持了基本的ifelse、for、while、until 循环等语句的。

二:Shell 是一种脚本语言

编程语言目前接触的就比较多了:java、C#、python、PHP、javascript等

大体分两种:

编译型语言:java、C#等必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。这个过程叫做编译,这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器

脚本语言:python、php、javascript等需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言,完成解释过程的软件叫做解释器。

编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。

脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。

Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。

三:linux中的shell解释器

我这里使用的服务器是centos

我们使用命令来查看一下centos的shell解释器:

bash

复制代码

cat /etc/shells

bash

复制代码

[root@VM_0_4_centos ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

Centos主要使用的shell解释器是sh、bash,那centos默认的shell解释器是什么呢?我们使用命令来查看一下:

bash

复制代码

ll /bin/ | grep bash

yaml

复制代码

[root@VM_0_4_centos ~]# ll /bin/ | grep bash
-rwxr-xr-x    1 root root     964536 Apr  1  2020 bash
lrwxrwxrwx    1 root root         10 Dec 29  2020 bashbug -> bashbug-64
-rwxr-xr-x    1 root root       6964 Apr  1  2020 bashbug-64
lrwxrwxrwx    1 root root          4 Dec 29  2020 sh -> bash

我们通过返回结果可以清楚的看到,sh是指向bash的。因此centos系统中默认的shell解释器是bash。

或者我们可以直接使用echo输出shell变量:

bash

复制代码

echo $SHELL

bash

复制代码

[root@VM_0_4_centos ~]# echo $SHELL
/bin/bash

 

以上大概就是shell编程的基础入门知识。

有好的建议,请在下方输入你的评论。

目录
相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
110 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
47 1
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
82 12
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
50 12
|
3月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
55 5