第1章 shell概述
- shell是一个命令解释器,它接受应用程序/用户命令,然后调用操作系统内核。
shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
第2章 shell解析器
-
Linux提供的shell解析器有:
-
bash和sh的关系:
sh其实也是调用bash。 -
Centos默认的解析器是bash。
第3章 shell脚本入门
- 脚本格式:#!/bin/bash开头(指定解析器)。
- 第一个shell脚本:helloworld。
创建一个shell脚本,输出helloworld。
touch helloworld.sh
vi helloworld.sh
在helloworld.sh中输入
#!/bin/bash
echo "helloworld"
(echo是向屏幕输入一串字符)
- 脚本的常用执行方式
- 采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
bash/sh helloworld.sh
bash/sh /home/atguigu/datas/helloworld.sh
- 采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
a.首先要赋予helloworld.sh脚本的+x权限chmod 777 helloworld.sh
b.执行脚本
相对路径./helloworld.sh
绝对路劲/home/atguigu/datas/helloworld.sh
(注意:第一种执行方式,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方式,本质是脚本需要自己执行,所以需要执行权限。)
拓展:chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
- 第二个shell脚本:多命令处理
(1)要求:在/home/atguigu/目录下创建一个banzhang.txt,在banzhang.txt文件中增加“I love cls”。
- 创建一个脚本文件batch.sh并打开
touch batch.sh
vim batch.sh
- 输入脚本开头格式并编辑
#!/bin/bash
cd /home/atguigu/
touch banzhang.txt
echo "I love cls" >> bangzhang.txt
拓展:1.touch命令可以用来修改文件的访问/修改时间戳。 更多的时候它会被用来快速创建一个空文件。2.在写shell脚本和批处理文件,echo用于将状态文本输出到屏幕或文件。
第4章 shell中的变量
4.1系统变量
- 常用系统变量
$HOME、 $PWD 、 $SHELL、 $USER等。 - 案例
(1)查看系统的变量值echo $HOME
(2)显示当前shell中所有变量:set
set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
定义:set
取消定义:unset
echo:通常用于将文本字符串或命令结果显示为消息。
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格。
- 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
- 变量的值如果有空格,需要使用双引号或者单引号括起来。
(拓展:export可以将局部变量提升为全局变量。)