Linux之Shell基础
一、Shell是什么
我们现在的使用的操作系统都是带有图形界面的,早期的操作系统是使用命令行的。操作系统本身只是一些内核代码,图形化界面让我们可以简单的使用操作系统,命令行也是让我们能够对操作系统进行输入和输出。但是真正能够控制操作系统硬件的只有内核,不管是图形化界面还是命令行,他们都是帮助用户使用操作系统内核的工具,是用户和内核的桥梁。
对用户来说,他们不能也没有必要直接接触内核,这时候就需要有一个程序来帮助用户能够操作内核,这个程序就是Shell。Shell和其他的应用程序一样,不同的是,要使用Linux系统必须使用Shell。
现在的Linux发行版都有自带的图形化界面,使用图形化界面也可以
二、Shell的工作原理
Shell本身使用内核提供的接口进行工作,调用这些接口来实现对硬件的控制。
Shell自带的命令叫做内置命令,也可以使用其他应用程序叫做外部命令。
Shell通过调用其他的程序,并且将不同的程序通过数据的传递联系起来,也就是将一个程序的输出作为另一个程序的输入,就具备了非常强大的功能。
在Shell中键入一个命令,Shell会识别这是否是一个内部命令,如果不是则作为外部命令来执行,但是能够执行的外部命令必须存在于环境变量的路径中。
三、Shell的使用
在没有图形化界面的系统中,只能使用Shell来控制系统。
(1 控制台
在Linux中也可以从图形界面直接进入Linux控制台(Console),使用快捷键键 Ctrl + Alt + Fn(n=2,3,4,5,6)
。
在控制台中,用户登录后就进入了Shell。
(2 终端
在Windows系统或者Linux桌面环境中,可以利用终端(Terminal)来使用Shell,其实终端本质上是一个终端模拟器,帮助用户在桌面环境下也可以使用Shell。
四、Bash介绍
Bash是大多数Linux系统的默认Shell,具有许多现代化的强大功能。
五、环境变量
环境变量有很多种。常见的如下。
- PATH:决定了Shell将到那些目录中寻找命令和程序。
- HOME:当前用户主目录(默认目录)
- USER:当前用户的用户名
- HISTSIZE:历史记录数
- SHELL:当前使用的Shell类型
- HOSTNAME:主机名字
- LANGUGE:语言相关的环境变量,多语言可以修改此环境变量
环境变量的名称一般是大写的
运行Shell时,会同时存在三种环境变量
- 局部变量:在脚本或命令中定义,只在当前的Shell实例中有效,其他Shell启动的程序不能访问
- 环境变量:所有的程序都可以访问的变量。
- shell变量:是由shell程序设置的特殊变量,shell变量中有一部分是环境变量,有一部分是局部变量,保证了shell的正常运行。
shell变量移步下一部分
PATH环境变量
使用printenv
打印环境变量
Shell执行命令时,也可以调用其他程序。一般来说可以使用绝对路径、相对路径或者环境变量启动应用程序。这里的环境变量就是一个可执行文件所在的路径。
PATH=$PATH:/[路径]
临时添加,当前进程有效export PATH=$PATH:/[路径]
临时添加,当前进程和子进程有效- 更改
六、Shell脚本编程
创建文件和执行
vim test.sh
创建shell脚本文件并进行编辑。
第一行用于指定脚本的执行shell,后面定义了一个name变量,然后打印出这个变量。
1 |
|
使用chmod +x test.sh
命令给脚本执行权限。
然后./test.sh
执行脚本,就打印出了变量。
脚本执行方式
- source
source [文件名]
这样进行脚本文件的执行时,会直接在当前的shell环境中执行,改变当前shell的内容,变量也会被临时添加进当前的shell。 - bash
bash [文件名]
这样进行脚本文件的执行时,会创建子shell调用bash执行,将结果打印到当前shell而不会直接改变当前shell。
如果是直接绝对路径加文件名进行执行,首先会根据指定的执行shell进行运行,如果没有指定那么就直接使用当前的shell的子shell。
shell变量
变量在shell中是这样被定义的name="tanghuan"
,定义变量时,变量名不加美元符号$.
变量的命名规则如下:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线 _。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
- 那后面的字符串的双引号是必须的吗?答案是否定的。
- 字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
${NAME} 中的$后面带上一个花括号可以帮助确定变量范围,是良好的编码习惯。
1 | name="Liuheng" |
执行结果如下
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
1 | name="Liuheng" |
执行结果如下
其他操作和命令
readonly [变量名]
变成只读unset [变量名]
删除变量declare [变量名]
声明一个变量,默认是字符串,加一个-i
可以创建整型变量。- `$
- Title: Linux之Shell基础
- Author: HarderHeng
- Created at : 2024-06-21 10:00:29
- Updated at : 2024-12-04 09:26:49
- Link: https://harderheng.life/2024/06/21/Linux之Shell基础/
- License: This work is licensed under CC BY-NC-SA 4.0.