Linux 系统中 shell 的基本知识
1 什么是 shell
Shell 是一种命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序。用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。
2 Linux 启动过程
Linux 系统的启动过程可以概括为以下几个步骤:
- BIOS 自检
- MBR 加载 BootLoader
- BootLoader 加载内核
- 内核初始化
- 系统初始化
- 登录 shell
shell 位于系统初始化阶段,由 init 进程调用。shell 接收用户的命令,并将其送入内核去执行。
3 shell 编程
shell 也是一个功能相当强大的编程语言,它易编写、易调试、灵活性较强。shell 是解释执行的脚本语言,在 shell 中可以直接调用 Linux 系统命令。
shell 脚本的格式如下:
#!/bin/bash
# 脚本内容
第一行是注释行,用于指定 shell 解释器。
查看系统的解释器
[root@shell shells]# cat /etc/shells
/bin/sh
/bin/bash #一般用这个就好了
/usr/bin/sh
/usr/bin/bash
4 实验示例
1 列出当前目录下的所有文件
#!/bin/bash
ls
2 打印当前目录的绝对路径
#!/bin/bash
pwd
3 查看当前目录下的文件大小
#!/bin/bash
du -sh *
5 扩展知识
内置命令和外部命令
内置命令是 shell 内置的命令,不需要通过其他程序来执行。外部命令是需要通过其他程序来执行的命令。
内置命令和外部命令的区别如下:
区别 | 内置命令 | 外部命令 |
---|---|---|
是否需要其他程序 | 不需要 | 需要 |
是否产生子进程 | 不会产生 | 会产生 |
是否对当前 shell 生效 | 会生效 | 不会生效 |
变量
变量是 shell 中用来存储数据的一种特殊标识符。变量可以用来保存用户输入的值,也可以用来保存计算结果。
变量的格式如下:
变量名=值
变量的命名规则如下:
- 变量名可以由字母、数字、下划线组成。
- 变量名不能以数字开头。
- 变量名不能是关键字。
运算符
shell 中支持的运算符如下:
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
= | 赋值 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
&& | 逻辑与 |
流程控制
shell 中支持的流程控制语句如下:
语句 | 描述 |
---|---|
if | 条件判断 |
for | 循环 |
while | 循环 |
until | 循环 |
case | 条件判断 |
break | 跳出循环 |
continue | 跳过本次循环 |
return | 返回 |
函数
shell 中可以使用函数来组织代码。函数的定义格式如下:
function 函数名() {
# 函数体
}
函数的调用格式如下:
函数名()
如何编写一个脚本
- shell 脚本的命名规范,能够快速定位到需要执行的脚本。
- shell脚本中填写"脚本信息",方便后续修改,联系等。
# Author:
# Created Time:
# Version:
# Script Description:
//以上分别对应中文
# 作者信息
# 创建时间
# 版本
# 脚本描述
下面是一个完美脚本的内容:
#!/bin/bash
# Author: Josh
# Created Time: 2023/11/21
# Version: v1
# Script Description: create file
read -p "输入需要创建的文件名:" file
touch $file
if [ $? -ne 0 ];then
echo "文件创建错误"
else
echo "成功创建 $file 文件"
fi
运行脚本
第一种方式:脚本赋予执行权限运行,那上面的脚本举例:
root@shell shells]# chmod +x test.sh
[root@localhost shell]# ./test.sh
输入需要创建的文件名:test.txt
成功创建 test.txt 文件
结语
shell 是 Linux 系统中非常重要的一个工具,它可以用来完成各种任务,包括系统管理、软件开发、脚本编写等。掌握 shell 的基本知识,可以帮助我们更好地使用 Linux 系统。