shell基础
1.shell概述
1.1 shell是什么?
shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
- shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的基本语言,在shell中可以直接调用Linux系统命令。
1.2 shell的分类
- bash
2.shell脚本的执行方式
2.1 echo 输出命令
# echo 选项 输出内容
-e :支持反斜线控制的字符转换
2.2 第一个脚本
vi hello.sh
#!/bin/bash
echo -e "hello word"
2.3 脚本执行
- 赋予执行权限,直接运行
- chmod 755 hello.sh
- ./hello.sh
- 通过bash调用执行脚本
- bash hello.sh
3.bash的基本功能
3.1 bash基本功能-历史命令与补全
- 历史命令
history 选项 历史命令保存文件
选项:
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
- 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
- 历史命令的调用:
- 使用上下箭头调用以前的历史命令
- 使用"!n"重复执行第n条历史命令
- 使用"!!"重复执行上一条命令
- 使用"!字串"重复执行最后一条以该字串开头的命令
- 命令与文件补全
- 在bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按"TAB"键就会自动进行补全
3.2 bash基本功能-别名与快捷键
- 命令别名
#设定命令别名
alias 别名='原命令'
#查询命令别名
alias
- 命令执行时顺序
- 第一顺位执行用绝对路径或相对路径执行的命令
- 第二顺位执行别名
- 第三顺位执行bash内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
- 让别名永久生效 vim /root/.bashrc
- bash常用快捷键
3.3 bash基本功能-输入输出重定向
- 标准输入输出
- 输出重定向
3. 输入重定向
wc 选项 文件名
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
- 命令<文件 把文件作为命令的输入
3.4 bash基本功能-多命令顺序执行与管道符
- 多命令顺序执行
- 管道符
#命令1的正确输出作为命令2的操作对象
命令格式:
命令1|命令2
3.5 bash基本功能-通配符和其他特殊符号
- 通配符
- bash中其他特殊符号
4.bash的变量
- 什么是变量
变量是计算机内存的单元,其中存放的值可以改变。当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中,每个变量有一个名字,所以很容易引用它。使用变量可以保存有用的信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。 - 变量设置规则
- 变量名称可以由字母、数字和下划线组成,但不能以数字开头。如果变量名是“2name”则是错误的。
- 在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
- 变量用等号连接值,等号左右两侧不能有空格。
- 变量的值如果有空格,需要使用单引号或双引号包括。
- 在变量的值中,可以使用“\”转义符。
- 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要双引号包含 变量名 " 或用 变量名"或用 变量名"或用{变量名}包含。
- 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
- 环境变量名建议大写,便于区分。
- 变量分类
- 用户自定义变量
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
- 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
4.1 bash变量-用户自定义变量
本地变量:
- 变量定义:name=“yao ziyuan”
- 变量叠加
aa=123 aa="$aa"456 aa=${aa}789
- 变量调用: echo $name
- 变量查看: set
- 变量删除: unset name
4.2 bash变量-环境变量
- 环境变量是什么
- 用户自定义变量只在当前的shell中生效,而环境变量会在当前shell和这个shell所在的所有子shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效
- 设置环境变量
- 声明变量 :export 变量名=变量值
- 查询变量 :env
- 删除变量 :unset 变量名
- 系统常见环境变量
- PATH:系统查找命令的路径
- PATH变量叠加:PATH=“$PATH”:/root/sh
4.3 bash变量-位置参数变量
4.4 bash变量-预定义变量
5.bash的运算符
6.环境变量配置文件
6.1 环境变量配置文件-简介
- source命令
source 配置文件 或 . 配置文件
- 环境变量配置文件简介
- 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH,HISTSIZE,PS1,HOSTNAME等默认环境变量。
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
6.2 环境变量配置文件-作用
- /etc/profile的作用
- USER变量
- LOGNAME变量
- MAIL变量
- PATH变量
- HOSTNAME变量
- HISTSIZE变量
- umask
- 调用/etc/profile.d/*.sh 文件
- ~/.bash_profile的作用
- 调用~/.bashrc文件
- 在PATH变量后面加入了":$HOME/bin"这个目录
- ~/.bashrc的作用
- 定义默认别名
- 调用/etc/bashrc
- /etc/bashrc的作用
- PS1变量
- umask
- PATH变量
- 调用/etc/profile.d/*.sh文件
6.3 环境变量配置文件-其他配置文件和登录信息
- 注销时生效的环境变量配置文件
- ~/.bash_logout
- 其他配置文件
- ~/bash_history
- shell登录信息
- 本地终端欢迎信息:/etc/issue
- 远程终端欢迎信息: /etc/issue.net
- 登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息