Shell复习笔记
一、Shell基础
1. 什么是Shell:命令行解释器,连接用户与Linux内核,执行用户指令(如bash、sh、zsh,默认bash)
2. 启动与退出:终端直接启动;退出用exit或Ctrl+C
3. 核心概念:
- 命令格式:命令 [选项] [参数](短选项-,长选项--)
- 环境变量:全局(/etc/profile)、用户级(~/.bash_profile)、局部(仅当前会话)
- 常用环境变量:PATH(命令搜索路径)、HOME(用户家目录)、USER(当前用户)、PWD(当前路径)
二、Shell脚本基础
1. 脚本结构
开头:#!/bin/bash(指定解释器)
执行:chmod +x 脚本.sh;./脚本.sh 或 bash 脚本.sh
2. 变量
- 定义:变量名=值(无空格,如name="test")
- 使用:$变量名 或 ${变量名}(如echo $name)
- 位置参数:$0(脚本名)、$1-$n(参数)、$#(参数个数)、$和$@(所有参数)、$?(上一条命令退出状态,0成功非0失败)
- 只读变量:readonly 变量名
- 删除变量:unset 变量名(只读变量不可删)
3. 条件判断
格式1:
if [ 条件 ]; then
执行;
elif [ 条件 ]; then
执行;
else
执行;
fi
格式2:
case $变量 in
模式1)
执行;;
模式2)
执行;;
*)
执行;;
esac
常用判断:
- 文件判断:-f(普通文件)、-d(目录)、-r(可读)、-w(可写)、-x(可执行)
- 数值判断:-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)、-ge(大于等于)、-le(小于等于)
- 字符串判断:-z(空字符串)、-n(非空字符串)、==(等于)、!=(不等于)
4. 循环结构
for循环:
for 变量 in 列表; do
执行
done
while循环:
while [ 条件 ]; do
执行
done
5. 函数
函数名() {
执行内容
return 退出状态
}
6. 输入输出重定向
- >:覆盖输出(echo "test" > 文件名)
- >>:追加输出(echo "test" >> 文件名)
- <:输入重定向(read var < 文件名)
- 2>:错误输出重定向(命令 2> 错误日志)
- &>:所有输出重定向(命令 &> 日志)
三、核心要点总结
- 命令记住核心选项,避免冗余,结合管道(|)组合使用(如ps aux | grep java)
- 脚本注意语法规范:空格([]前后必须有空格)、引号(字符串含空格用双引号)、注释(# 单行注释)
- 环境变量修改后,source 配置文件使其立即生效(如source ~/.bash_profile)
- 权限管理核心是rwx的组合,chmod 755是常用可执行权限