shell(一)shell编程入门

2023年 8月 15日 43.7k 0

开始学习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命令。

基本流程如下图所示:

5.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解释器:

cat /etc/shells
[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解释器是什么呢?我们使用命令来查看一下:

ll /bin/ | grep bash
[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变量:

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

 

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

 

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

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论