共计 3397 个字符,预计需要花费 9 分钟才能阅读完成。
这篇文章主要介绍 Linux 系统中 Shell 编程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一. 什么是 Shell 1. 在学习 Shell 编程之前,我们应该要先知道什么是 Shell
用户、Shell、Linux 内核、硬件的关系如下图:
Shell 是一个应用程序,也可以说是一个命令解释器,它是用户和 Linux 内核之间的桥梁,可以将用户在图形界面上的操作或在终端输入的命令传递给 Linux 内核,然后 Linux 内核再调度各个硬件及其他资源来完成用户的操作。
什么是 Linux 的内核?在 Linux 操作系统中,真正能够操作计算机硬件完成某个用户功能的那一部分被称为 Linux 系统的内核。用户在使用 Linux 系统时,是不可以直接操作内核的,而是通过 Shell 来间接的操作内核的。Shell 不属于内核的一部分,而是在 Linux 内核之外开发的应用程序,它将接收到的用户鼠标点击操作或输入的命令传递给内核,而内核再去调度硬件去完成指定的操作。这样用户就不需要直接操作内核,而是通过 Shell 间接地操作内核,内核也不会被直接的暴露于外部,保障了内核的安全性,也简化了用户的操作。
Shell 这个应用程序是开机即启动的,我们在操作 Linux 系统时,无时不刻都在直接或者间接地通过 Shell 去操作 Linux 内核。其实,在没有图形化界面之前,用户是通过终端或者控制台直接地去调用 Shell 这个应用程序,然后通过输入命令来操作 Linux 系统的。用户在控制台或者终端上看到的 $ 和 # 其实就是 Shell 的命令提示符,这表明用户已经进入了 Shell 这个程序,只需要输入命令,即可通过 Shell 来操作 Linux 内核。只不过 root 用户登录显示 $,而普通用户登录显示 #。
另外,Shell 在将用户的操作传递给内核的过程,就是在调用内核提供的 API 接口的过程。比如,用户在图形界面或者终端命令行做了一个打开文件的操作,而这个用户的操作 Shell 接收到后,就会去调用内核提供的相应的函数,然后内核再去调度硬件资源来完成用户的操作。
2. 常见的 Shell
我们知道,Linux 是一个开源的操作系统,它是由世界各地的多个组织机构或个人共同开发完成的,每个组织机构或个人负责一部分功能,最后组合在一起,就构成了现在我们使用的 Linux。也正是这个原因,这些不同的组织机构或者个人都会开发出可以在 Linux 系统中使用的应用程序,而这些应用程序的功能可能是类似的,各有优缺点,至于使用哪一个由用户选择。而 Shell 就是这样的一个应用程序,所以 Shell 有很多个版本,目前 Linux 的大多数发行版默认使用的 Shell 是 bash shell。其他常见的 Shell 版本如下:
(1) sh:sh 的全称是 Bourne shell,是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
(2) csh:这个 shell 的语法有点类似 C 语言,所以才得名为 C shell,简称为 csh。
(3) tcsh:tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
(4) ash:一个轻量级占用资源少的 Shell,适合运行于低内存环境,与 bash shell 完全兼容。
(5) bash:bash shell 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
3. 查看 Linux 系统的 Shell
在 Linux 系统中,一般默认使用的 Shell 是 bash shell。Shell 是一个应用程序,一般都是放在 /bin 或者 /user/bin 目录下,而当前 Linux 系统可用的 Shell 都记录在 /etc/shells 文件中。
(1) 查看系统当前可用的 Shell,执行命令【cat -n /etc/shells】:
(2) 查看系统当前默认使用的 shell,执行命令【echo $SHELL】:
(3) 查看各个用户使用的 Shell,执行命令【cat -n /etc/passwd】:
二. 什么是 Shell 编程 1. 什么是 Shell 编程语言
我们已经知道,Shell 是一个应用程序,而这个应用程序不单单只是可以将用户的操作命令传递给 Linux 内核,它也支持编程。Shell 都会对应一套编程语言的语法,而这套语言就被称为 Shell 编程语言或是 Shell 脚本语言。Shell 编程语言和 JavaScript 语言一样是一种脚本语言,它不需要编译,而它的解释器就是 Shell 应用程序本身。
我们平时工作中所说的 Shell,大多数情况指的是 Shell 脚本语言,而不是 Shell 应用程序。
2. 什么是 Shell 脚本
我们在使用 Shell 脚本语言时,可以和 Linux 系统的其他操作命令结合使用 (如 ls、grep 等等),而我们使用 Shell 脚本语言和其他命令结合编写能够完成某个特定功能的扩展名为.sh 的文本,就叫做 Shell 脚本程序。
3. 第一个 Shell 脚本
我们已经知道,Shell 有很多个版本,而每个版本支持的 Shell 脚本语言语法可能是有差异的,而下面的关于 Shell 脚本的所有例子都是针对于 Bash Shell 这个版本而言。
(1)在根目录下新建一个 Hello.sh 脚本:【vim Hello.sh】
(2)然后输入以下内容:
#!/bin/bash
echo Hello World
第一行:#! 是一个约定标记,它可以告诉系统这个脚本要使用哪个 Shell 版本作为解释器,后面紧跟的 /bin/bash 则是 Shell 的所在路径,所以【#!/bin/bash】表示声明使用 bin 目录下的 bash shell 作为这个脚本的解释器;
第二行:【echo Hello World】表示输出文本 Hello World!;
(3)然后保存退出:【!wq】;
(4)这样,一个能够输出 Hello World!的脚本就编写完成。
补充说明:
上面我们已经说过,Shell 程序就是 Shell 脚本语言的解释器,而我们在使用终端时(例如通过 Xshell 连接 Linux 服务器的终端),其实就是已经进入了 Shell 这个程序,所以其实我们是可以在终端直接输入 Shell 编程语言的代码来运行的,而不需要写在脚本里再去运行。例如,声明一个变量并打印这个变量的值:
(1)输入代码:【name= 张三】,表示定义了一个变量 name,它的值为张三;
(2)输入代码:【echo $name】,表示打印变量 name 的值。
当然,这种方式只适合去执行逻辑简单只有一两句代码的情况,大多数情况下我们还是将 Shell 编程代码写在.sh 脚本中再去执行。
4. 运行 Shell 脚本的方式
上面我们已经编写了一个能够输出 Hello World!的 Shell 脚本运行,而现在我们就要执行 Hello.sh 这个脚本。而 Shell 脚本的执行方式有两种:
第一种:给予.sh 文本可执行权限,然后执行文本:
(1)先给予 Shell 脚本可执行权限:【chmod +x Hello.sh】;
(2)直接执行:绝对路径:【/Hello.sh】或者 相对路径:【./Hello.sh】
注意,这里执行时如果使用的是相对路径,必须要以./ 开头,表示当前目录,否则系统会找不到脚本,从而导致执行失败。
第二种:将 Shell 脚本作为参数传递给 Bash Shell 解释器:
(1)这里使用 Bash Shell 来作为解释器,那么我们直接调用 Bash Shell 这个程序,然后把 Hello.sh 这个脚本作为参数传给 Shell 即可:【/bin/bash Hello.sh】或【bash Hello.sh】
(2)这里需要注意,使用这种方式执行 Shell 脚本时,在 Shell 脚本的第一行中就不需要声明使用哪个版本的 Shell 来作为解释器,也就是不需要这行代码【#!/bin/bash】,因为我们运行脚本的命令中【/bin/bash Hello.sh】,就已经指明了使用哪个版本的 Shell 作为解释器。
注意,这种方式执行脚本文件时,如果使用的是相对路径,那么【/bin/bash ./Hello.sh】和【/bin/bash Hello.sh】是一样的,并无使用第一种执行方式中的区别。
以上是“Linux 系统中 Shell 编程的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!