认识 Shell
什么是 Shell
- Shell 是命令解析器,用于解析用户对操作系统的操作
- Shell 有很多
- cat /etc/shells
- CentOS 7 默认使用的 Shell 是 bash
Linux 的启动过程
BIOS → MBR → BootLoader(Grub)→ Kernel → Systemd → 系统初始化 → Shell
Shell 脚本
- UNIX 的哲学:一条命令只做一件事
- 为了组合命令和多次执行,使用脚本文件来保存需要执行的命令
- 赋予该文件执行权限(chmod u+rx filename)
标准的 Shell 脚本包含元素
- Sha-Bang
- 命令
- “#” 号开头的注释
- chmod u+rx filename 可执行权限
脚本不同执行方式的影响
- bash ./filename.sh(无需添加执行权限,不改变当前目录,产生子进程)
- ./filename.sh(需要添加执行权限,不改变当前目录,产生子进程)
- source ./filename.sh(需要添加执行权限,改变当前目录,无子进程产生)
- .filename.sh(需要添加执行权限,改变当前目录,无子进程产生)
内建命令和外部命令的区别
- 内建命令不需要创建子进程
- 内建命令对当前 Shell 生效
管道与管道符
- 管道和信号一样,也是进程通信的方式之一
- 匿名管道(管道符)是 Shell 编程经常用到的通信工具
- 管道符是 “|”,将前一个命令执行的结果传递给后面的命令
ps | cat
echo 123 | ps
重定向符号
- 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符
- 输入重定向符号 “<”
read var < /path/to/a/file
输出重定向符号
- “>”:清空内容再输出
- “>>”:换行追加内容输出
- “2>”:错误输出
- “&>”:全部输出
echo 123 > /path/to/a/file
输入和输出重定向组合使用
cat > /path/to/a/file << EOF
I am $USER
EOF
变量的定义
变量名的命名规则
- 字母、数字、下划线
- 不以数字开头
变量的赋值
为变量赋值的过程,称为变量替换
- 变量名=变量值
a=123
- 使用 let 为变量赋值
let a=10 + 20
- 将命令赋值给变量
l=ls
- 将命令结果赋值给变量,使用 $() 或者 “
letc=$(ls -l /etc)
- 变量值有空格等特殊字符可以包含在 “” 或者 ” 中
不能有空格
变量的引用
${变量名}
称作对变量的引用echo ${变量名}
查看变量的值${变量名}
在部分情况下可以省略为$变量名
变量的作用范围
- 变量的导出
export
- 变量的删除
unset
系统环境变量
- 环境变量:每个 Shell 打开都可以获得的变量
- set 和 env 命令
- $? $$ $0
- $PATH
- $PS1
- 位置变量
- $1 $2 … $n
环境变量配置文件
- /etc/profile
- /etc/profile.d/
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
必须 注册 为本站用户, 登录 后才可以发表评论!