初识Shell(收录自LearnKu.com)

  1. 上周
    2

    认识 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

或者 注册后参与话题.